Author: simoneg
Date: Fri Nov 20 03:41:38 2009
New Revision: 882403

URL: http://svn.apache.org/viewvc?rev=882403&view=rev
Log:
LABS-494 : custom CSS classes for forms and lists

Modified:
    
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanStyle.java
    
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyle.java
    
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyleTable.java
    
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyleUl.java
    
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowBean.java
    
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowList.java
    
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartForm.java
    
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java
    
labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/ShowBeanTest.java
    
labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/ShowListTest.java

Modified: 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanStyle.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanStyle.java?rev=882403&r1=882402&r2=882403&view=diff
==============================================================================
--- 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanStyle.java
 (original)
+++ 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/BeanStyle.java
 Fri Nov 20 03:41:38 2009
@@ -61,6 +61,9 @@
        protected boolean withCustomClasses;
        protected int maxFieldSize = 80;
        
+       protected String outerCssClass = null;
+       protected String elementCssClass = null;
+       
        public void setMyclass(Class<?> myclass) {
                this.myclass = myclass;
        }
@@ -77,6 +80,14 @@
                this.maxFieldSize = maxFieldSize;
        }
        
+       public void setOuterCssClass(String outerCssClass) {
+               this.outerCssClass = outerCssClass;
+       }
+
+       public void setElementCssClass(String elementCssClass) {
+               this.elementCssClass = elementCssClass;
+       }       
+       
        public void generate() {
                buff = new StringBuilder();
                openOuterContainer();
@@ -221,6 +232,9 @@
                        }
                        
                }
+               if (elementCssClass != null) {
+                       baseclass += " " + elementCssClass;
+               }               
                createAdditionalInfo(node, baseclass, true);
                
                buff.append("${prod.valueFor('");
@@ -243,6 +257,9 @@
                                baseclass += " NotNullable";
                        }
                }
+               if (elementCssClass != null) {
+                       baseclass += " " + elementCssClass;
+               }
                
                createAdditionalInfo(node, baseclass, true);
 
@@ -277,12 +294,13 @@
        }
        
        public String getStyleKey() {
-               return "CC" + this.withCustomClasses + "MF" + this.maxFieldSize;
+               return "CC" + this.withCustomClasses + "MF" + this.maxFieldSize 
+ "CSS" + this.outerCssClass + this.elementCssClass;
        }
        
        protected void openOuterContainer() {
                buff.append("<div class=\"ShowBean ");
                buff.append(myclass.getSimpleName());
+               if (outerCssClass != null) buff.append(' 
').append(outerCssClass);
                buff.append("\">");
        }
        

Modified: 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyle.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyle.java?rev=882403&r1=882402&r2=882403&view=diff
==============================================================================
--- 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyle.java
 (original)
+++ 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyle.java
 Fri Nov 20 03:41:38 2009
@@ -13,6 +13,9 @@
        protected RootNode root;
        protected boolean withLink = false;
        protected boolean withAdditional = false;
+       protected String outerCssClass = null;
+       protected String intermediateCssClass = null;
+       protected String elementCssClass = null;
        protected StringBuilder buff;
 
        public void setMyclass(Class<?> myclass) {
@@ -30,6 +33,18 @@
        public void setWithAdditional(boolean withAdditional) {
                this.withAdditional = withAdditional;
        }
+
+       public void setOuterCssClass(String outerCssClass) {
+               this.outerCssClass = outerCssClass;
+       }
+
+       public void setIntermediateCssClass(String intermediateCssClass) {
+               this.intermediateCssClass = intermediateCssClass;
+       }
+
+       public void setElementCssClass(String elementCssClass) {
+               this.elementCssClass = elementCssClass;
+       }       
        
        public void generate() {
                buff = new StringBuilder();
@@ -185,7 +200,8 @@
        protected abstract void openOuterTable();
        
        protected String getStyleKey() {
-               return "WL" + this.withLink + "WA" + this.withAdditional;
+               return "WL" + this.withLink + "WA" + this.withAdditional + 
"CSS" + this.outerCssClass + this.intermediateCssClass + this.elementCssClass;
        }
 
+
 }

Modified: 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyleTable.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyleTable.java?rev=882403&r1=882402&r2=882403&view=diff
==============================================================================
--- 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyleTable.java
 (original)
+++ 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyleTable.java
 Fri Nov 20 03:41:38 2009
@@ -1,7 +1,6 @@
 package org.apache.magma.website.beansview;
 
 import org.apache.magma.view.tree.FieldNode;
-import org.apache.magma.view.tree.RootNode;
 
 public class ListStyleTable extends ListStyle {
 
@@ -48,25 +47,30 @@
        @Override
        protected void openCell(FieldNode fldn) {
                String addclass = fldn == null ? "additionals" : fldn.getId();
+               if (elementCssClass != null) addclass += " " + elementCssClass;
                buff.append("<td class=\"MagmaList-Cell " + addclass + "\">");  
        
        }
 
        @Override
        protected void openHeaderCell(FieldNode fldn) {
                String addclass = fldn == null ? "additionals" : fldn.getId();
+               if (elementCssClass != null) addclass += " " + elementCssClass;
                buff.append("<th class=\"MagmaList-HeaderCell " + addclass + 
"\">");
        }
 
        @Override
        protected void openHeaderRow() {
                buff.append("<thead>");
-               buff.append("<tr>");
+               buff.append("<tr");
+               if (intermediateCssClass != null) buff.append(" 
class=\"").append(intermediateCssClass).append('"');
+               buff.append('>');
        }
 
        @Override
        protected void openOuterTable() {
                buff.append("<table class=\"MagmaList ShowList ");
                buff.append(myclass.getSimpleName());
+               if (outerCssClass != null) buff.append(' 
').append(outerCssClass);
                buff.append("\" summary=\"$list.getSummary()\"");
                buff.append(">");
                buff.append("<caption>");
@@ -77,6 +81,7 @@
        @Override
        protected void openRow() {
                buff.append("<tr class=\"");
+               if (intermediateCssClass != null) 
buff.append(intermediateCssClass).append(' ');
                buff.append('\n');
                buff.append("#if ($velocityCount == 1)\n");
                buff.append("first \n");

Modified: 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyleUl.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyleUl.java?rev=882403&r1=882402&r2=882403&view=diff
==============================================================================
--- 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyleUl.java
 (original)
+++ 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ListStyleUl.java
 Fri Nov 20 03:41:38 2009
@@ -37,12 +37,17 @@
 
        @Override
        protected void openBody() {
-               buff.append("<ul class=\"MagmaList ShowList " + 
myclass.getSimpleName() + "\">");
+               buff.append("<ul class=\"MagmaList ShowList ");
+               buff.append(myclass.getSimpleName());
+               if (outerCssClass != null) buff.append(' 
').append(outerCssClass);
+               buff.append("\">");
        }
 
        @Override
        protected void openCell(FieldNode fldn) {
-               buff.append("<span class=\"MagmaList-Span " + fldn.getId() + 
"\">");            
+               String addclass = fldn == null ? "additionals" : fldn.getId();
+               if (elementCssClass != null) addclass += " " + elementCssClass;
+               buff.append("<span class=\"MagmaList-Span " + addclass + 
"\">");                
        }
 
        
@@ -64,6 +69,7 @@
        @Override
        protected void openRow() {
                buff.append("<li class=\"");
+               if (intermediateCssClass != null) 
buff.append(intermediateCssClass).append(' ');                
                buff.append('\n');
                buff.append("#if ($velocityCount == 1)\n");
                buff.append("first \n");

Modified: 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowBean.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowBean.java?rev=882403&r1=882402&r2=882403&view=diff
==============================================================================
--- 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowBean.java
 (original)
+++ 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowBean.java
 Fri Nov 20 03:41:38 2009
@@ -54,6 +54,11 @@
        protected RootNode root;
        protected BeanStyle beanStyle;
 
+       // Delegate fields
+       protected String outerCssClass = null;
+       protected String elementCssClass = null;
+       
+
        public ShowBean(Object bean) {
                this.bean = (MagmaBeanSupport)bean;
        }
@@ -73,6 +78,8 @@
                }
                beanStyle.setMyclass(bean.getClass());
                beanStyle.setRoot(root);
+               beanStyle.setOuterCssClass(outerCssClass);
+               beanStyle.setElementCssClass(elementCssClass);
                String tplkey = beanStyle.getClass().getName() + ":" + 
beanStyle.getStyleKey();
                
                String tplval = root.getTemplate(tplkey);
@@ -160,5 +167,17 @@
        public void setBeanStyle(BeanStyle beanStyle) {
                this.beanStyle = beanStyle;
        }
+       public String getOuterCssClass() {
+               return outerCssClass;
+       }
+       public void setOuterCssClass(String outerCssClass) {
+               this.outerCssClass = outerCssClass;
+       }
+       public String getElementCssClass() {
+               return elementCssClass;
+       }
+       public void setElementCssClass(String elementCssClass) {
+               this.elementCssClass = elementCssClass;
+       }
        
 }

Modified: 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowList.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowList.java?rev=882403&r1=882402&r2=882403&view=diff
==============================================================================
--- 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowList.java
 (original)
+++ 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/ShowList.java
 Fri Nov 20 03:41:38 2009
@@ -66,6 +66,10 @@
        protected LinkHelper linkHelper;
        protected WebHandler referringHandler = null;
        
+       protected String outerCssClass = null;
+       protected String intermediateCssClass = null;
+       protected String elementCssClass = null;
+       
        
        public <T extends MagmaBeanSupport> ShowList(Class<T> myclass, 
Collection<? extends T> list, String link, String... layers) {
                this.list = list;
@@ -122,6 +126,9 @@
                listStyle.setRoot(root);
                listStyle.setWithLink(this.link != null);
                listStyle.setWithAdditional(this.actions != null && 
this.actions.size() > 0);
+               listStyle.setOuterCssClass(outerCssClass);
+               listStyle.setIntermediateCssClass(intermediateCssClass);
+               listStyle.setElementCssClass(elementCssClass);
                String tplkey = listStyle.getClass().getName() + ":" + 
listStyle.getStyleKey();
                
                String tplval = root.getTemplate(tplkey);
@@ -272,5 +279,32 @@
                this.actions.add(action);
                return this;
        }
+
+       public String getOuterCssClass() {
+               return outerCssClass;
+       }
+
+       public ShowList setOuterCssClass(String outerCssClass) {
+               this.outerCssClass = outerCssClass;
+               return this;
+       }
+
+       public String getIntermediateCssClass() {
+               return intermediateCssClass;
+       }
+
+       public ShowList setIntermediateCssClass(String intermediateCssClass) {
+               this.intermediateCssClass = intermediateCssClass;
+               return this;
+       }
+
+       public String getElementCssClass() {
+               return elementCssClass;
+       }
+
+       public ShowList setElementCssClass(String elementCssClass) {
+               this.elementCssClass = elementCssClass;
+               return this;
+       }
        
 }

Modified: 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartForm.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartForm.java?rev=882403&r1=882402&r2=882403&view=diff
==============================================================================
--- 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartForm.java
 (original)
+++ 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartForm.java
 Fri Nov 20 03:41:38 2009
@@ -63,6 +63,11 @@
     HashMap<MagmaBeanSupport, BeanHandler> handlers;
 
        protected BeanStyle beanStyle;
+
+       // Delegate fields
+       protected String outerCssClass = null;
+       protected String elementCssClass = null;
+
        
        public SmartForm(Object bean, String next) {
                this.bean = (MagmaBeanSupport) bean;
@@ -126,6 +131,8 @@
                producer.setActions(this.actions);
                producer.setLists(this.lists);
                producer.setBeanStyle(this.beanStyle);
+               producer.setOuterCssClass(outerCssClass);
+               producer.setElementCssClass(elementCssClass);
                producer.compoundWith(prodHeader, CompoundType.BEFORE);
                producer.compoundWith(prodFooter, CompoundType.AFTER);
                return producer;
@@ -293,6 +300,22 @@
                this.beanStyle = new BeanStylePlainDivs();
                return this;
        }
+
+       public String getOuterCssClass() {
+               return outerCssClass;
+       }
+
+       public void setOuterCssClass(String outerCssClass) {
+               this.outerCssClass = outerCssClass;
+       }
+
+       public String getElementCssClass() {
+               return elementCssClass;
+       }
+
+       public void setElementCssClass(String elementCssClass) {
+               this.elementCssClass = elementCssClass;
+       }
        
 
 }

Modified: 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java?rev=882403&r1=882402&r2=882403&view=diff
==============================================================================
--- 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java
 (original)
+++ 
labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/SmartList.java
 Fri Nov 20 03:41:38 2009
@@ -72,6 +72,11 @@
        private String summary;
        private String caption;
        
+       protected String outerCssClass = null;
+       protected String intermediateCssClass = null;
+       protected String elementCssClass = null;
+       
+       
        public <T extends MagmaBeanSupport> SmartList(Class<T> beanClass, 
String query, Object... queryParams) {
                this.myclass = beanClass;
                this.query = query;
@@ -142,6 +147,10 @@
                producer.setLayers(layers);
                producer.setLink(this.link);
                producer.setReferringHandler(getCreatingHandler());
+               producer.setElementCssClass(elementCssClass);
+               producer.setIntermediateCssClass(intermediateCssClass);
+               producer.setOuterCssClass(outerCssClass);
+               
                producer.compoundWith(prodHeader, CompoundType.BEFORE);
                producer.compoundWith(prodFooter, CompoundType.AFTER);
                return producer;
@@ -255,5 +264,32 @@
                listStyle = new ListStyleTableWithSorting();
                return this;
        }
+
+       public String getOuterCssClass() {
+               return outerCssClass;
+       }
+
+       public SmartList setOuterCssClass(String outerCssClass) {
+               this.outerCssClass = outerCssClass;
+               return this;
+       }
+
+       public String getIntermediateCssClass() {
+               return intermediateCssClass;
+       }
+
+       public SmartList setIntermediateCssClass(String intermediateCssClass) {
+               this.intermediateCssClass = intermediateCssClass;
+               return this;
+       }
+
+       public String getElementCssClass() {
+               return elementCssClass;
+       }
+
+       public SmartList setElementCssClass(String elementCssClass) {
+               this.elementCssClass = elementCssClass;
+               return this;
+       }
        
 }

Modified: 
labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/ShowBeanTest.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/ShowBeanTest.java?rev=882403&r1=882402&r2=882403&view=diff
==============================================================================
--- 
labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/ShowBeanTest.java
 (original)
+++ 
labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/ShowBeanTest.java
 Fri Nov 20 03:41:38 2009
@@ -18,6 +18,7 @@
 
 import static org.junit.Assert.*;
 import static org.junit.matchers.StringContains.*;
+import static org.apache.magma.website.beansview.AssertStringStructure.*;
 
 import java.io.ByteArrayOutputStream;
 import java.util.Set;
@@ -145,6 +146,28 @@
                assertThat(result, containsString("[email protected]"));
        }
        
+       @Test
+       public void customCssClasses() throws Exception {
+               Person p = new Person();
+               p.setName("Simone");
+               p.setSurname("Gianni");
+               p.setEmail("[email protected]");
+               
+               ShowBean sbp = new ShowBean(p);
+               sbp.setOuterCssClass("outer-class");
+               sbp.setElementCssClass("element-class");
+               
+               ByteArrayOutputStream baos = new ByteArrayOutputStream();
+               sbp.produce(baos);
+               
+               String result = new String(baos.toByteArray());
+
+               System.out.println(result);
+
+               assertStructure(result, "<div","class=", "outer-class", "<td", 
"class=", "element-class");
+       }
+       
+       
        // TODO rewrite using new filters
        /*
        @Test

Modified: 
labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/ShowListTest.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/ShowListTest.java?rev=882403&r1=882402&r2=882403&view=diff
==============================================================================
--- 
labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/ShowListTest.java
 (original)
+++ 
labs/magma/trunk/website-beansview/src/test/java/org/apache/magma/website/beansview/ShowListTest.java
 Fri Nov 20 03:41:38 2009
@@ -40,7 +40,37 @@
                ltt.setWithLink(true);
                ltt.generate();
                String template = ltt.getTemplate();
-               System.out.println(template);
+               //System.out.println(template);
+               assertStructure(template, 
+                               "<table", "ShowList", ".getSummary()", 
".getCaption()", 
+                               "<thead", "<tr" , "<th", ".labelFor(", 
"</thead",
+                               "<tbody", "#foreach", "<tr", "#if", 
"$velocityCount",
+                               "<td", "<a", "computeLinkURL", 
"computeLinkTitle", "contentFor",
+                               "#end", "</table"
+                               );
+       }
+
+       @Test
+       public void customCssClasses() throws Exception {
+               ListStyleTable ltt = new ListStyleTable();
+               ltt.setMyclass(Person.class);
+               ltt.setRoot(BeanData.getFor(Person.class).getViewTree());
+               ltt.setWithLink(true);
+               ltt.setOuterCssClass("outer-class");
+               ltt.setIntermediateCssClass("intermediate-class");
+               ltt.setElementCssClass("element-class");
+               
+               ltt.generate();
+               
+               String template = ltt.getTemplate();
+               //System.out.println(template);
+               assertStructure(template, 
+                               "<table", "ShowList", "outer-class", 
".getSummary()", ".getCaption()", 
+                               "<thead", "<tr", "intermediate-class" , "<th", 
"element-class", ".labelFor(", "</thead",
+                               "<tbody", "#foreach", "<tr", 
"intermediate-class", "#if", "$velocityCount",
+                               "<td", "element-class", "<a", "computeLinkURL", 
"computeLinkTitle", "contentFor",
+                               "#end", "</table"
+                               );
        }
        
        @Test



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to