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]