JBoss Rich Faces SVN: r16087 - root/examples/trunk.
by richfaces-svn-commits@lists.jboss.org
Author: Alex.Kolonitsky
Date: 2009-12-07 09:58:23 -0500 (Mon, 07 Dec 2009)
New Revision: 16087
Modified:
root/examples/trunk/pom.xml
Log:
RFPL-195 - Code style policy
Modified: root/examples/trunk/pom.xml
===================================================================
--- root/examples/trunk/pom.xml 2009-12-07 14:57:08 UTC (rev 16086)
+++ root/examples/trunk/pom.xml 2009-12-07 14:58:23 UTC (rev 16087)
@@ -179,8 +179,6 @@
<configuration>
<configLocation>richfaces-checkstyle/richfaces-checkstyle.xml</configLocation>
<suppressionsLocation>checkstyle-suppressions.xml</suppressionsLocation>
-
- <failOnViolation>false</failOnViolation>
</configuration>
<phase>process-sources</phase>
14 years, 5 months
JBoss Rich Faces SVN: r16086 - root/cdk/trunk.
by richfaces-svn-commits@lists.jboss.org
Author: Alex.Kolonitsky
Date: 2009-12-07 09:57:08 -0500 (Mon, 07 Dec 2009)
New Revision: 16086
Modified:
root/cdk/trunk/pom.xml
Log:
RFPL-195 - Code style policy
Modified: root/cdk/trunk/pom.xml
===================================================================
--- root/cdk/trunk/pom.xml 2009-12-07 13:41:06 UTC (rev 16085)
+++ root/cdk/trunk/pom.xml 2009-12-07 14:57:08 UTC (rev 16086)
@@ -10,7 +10,7 @@
<artifactId>cdk</artifactId>
<version>4.0.0-SNAPSHOT</version>
<packaging>pom</packaging>
- <name>JSF components development kit</name>
+ <name>JSF Components Development Kit (CDK)</name>
<modules>
<module>plugins</module>
@@ -132,8 +132,6 @@
<configuration>
<configLocation>richfaces-checkstyle/richfaces-checkstyle.xml</configLocation>
<suppressionsLocation>checkstyle-suppressions.xml</suppressionsLocation>
-
- <failOnViolation>false</failOnViolation>
</configuration>
<phase>process-sources</phase>
14 years, 5 months
JBoss Rich Faces SVN: r16085 - root/checkstyle/src/main/resources/richfaces-checkstyle.
by richfaces-svn-commits@lists.jboss.org
Author: Alex.Kolonitsky
Date: 2009-12-07 08:41:06 -0500 (Mon, 07 Dec 2009)
New Revision: 16085
Added:
root/checkstyle/src/main/resources/richfaces-checkstyle/idea-code-style.xml
Modified:
root/checkstyle/src/main/resources/richfaces-checkstyle/richfaces-checkstyle.xml
Log:
RFPL-195 - Code style policy
add idea-code-style.xml
same changes in checkstyle
Added: root/checkstyle/src/main/resources/richfaces-checkstyle/idea-code-style.xml
===================================================================
--- root/checkstyle/src/main/resources/richfaces-checkstyle/idea-code-style.xml (rev 0)
+++ root/checkstyle/src/main/resources/richfaces-checkstyle/idea-code-style.xml 2009-12-07 13:41:06 UTC (rev 16085)
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<code_scheme name="Richfaces">
+ <option name="LINE_SEPARATOR" value=" " />
+ <option name="KEEP_BLANK_LINES_IN_DECLARATIONS" value="1" />
+ <option name="KEEP_BLANK_LINES_BEFORE_RBRACE" value="1" />
+ <option name="CLASS_COUNT_TO_USE_IMPORT_ON_DEMAND" value="15" />
+ <option name="NAMES_COUNT_TO_USE_IMPORT_ON_DEMAND" value="5" />
+ <ADDITIONAL_INDENT_OPTIONS fileType="groovy">
+ <option name="INDENT_SIZE" value="2" />
+ <option name="CONTINUATION_INDENT_SIZE" value="8" />
+ <option name="TAB_SIZE" value="4" />
+ <option name="USE_TAB_CHARACTER" value="false" />
+ <option name="SMART_TABS" value="false" />
+ <option name="LABEL_INDENT_SIZE" value="0" />
+ <option name="LABEL_INDENT_ABSOLUTE" value="false" />
+ </ADDITIONAL_INDENT_OPTIONS>
+ <ADDITIONAL_INDENT_OPTIONS fileType="gsp">
+ <option name="INDENT_SIZE" value="2" />
+ <option name="CONTINUATION_INDENT_SIZE" value="8" />
+ <option name="TAB_SIZE" value="4" />
+ <option name="USE_TAB_CHARACTER" value="false" />
+ <option name="SMART_TABS" value="false" />
+ <option name="LABEL_INDENT_SIZE" value="0" />
+ <option name="LABEL_INDENT_ABSOLUTE" value="false" />
+ </ADDITIONAL_INDENT_OPTIONS>
+ <ADDITIONAL_INDENT_OPTIONS fileType="java">
+ <option name="INDENT_SIZE" value="4" />
+ <option name="CONTINUATION_INDENT_SIZE" value="4" />
+ <option name="TAB_SIZE" value="4" />
+ <option name="USE_TAB_CHARACTER" value="false" />
+ <option name="SMART_TABS" value="false" />
+ <option name="LABEL_INDENT_SIZE" value="0" />
+ <option name="LABEL_INDENT_ABSOLUTE" value="false" />
+ </ADDITIONAL_INDENT_OPTIONS>
+ <ADDITIONAL_INDENT_OPTIONS fileType="js">
+ <option name="INDENT_SIZE" value="4" />
+ <option name="CONTINUATION_INDENT_SIZE" value="8" />
+ <option name="TAB_SIZE" value="4" />
+ <option name="USE_TAB_CHARACTER" value="false" />
+ <option name="SMART_TABS" value="false" />
+ <option name="LABEL_INDENT_SIZE" value="0" />
+ <option name="LABEL_INDENT_ABSOLUTE" value="false" />
+ </ADDITIONAL_INDENT_OPTIONS>
+ <ADDITIONAL_INDENT_OPTIONS fileType="jsp">
+ <option name="INDENT_SIZE" value="4" />
+ <option name="CONTINUATION_INDENT_SIZE" value="8" />
+ <option name="TAB_SIZE" value="4" />
+ <option name="USE_TAB_CHARACTER" value="false" />
+ <option name="SMART_TABS" value="false" />
+ <option name="LABEL_INDENT_SIZE" value="0" />
+ <option name="LABEL_INDENT_ABSOLUTE" value="false" />
+ </ADDITIONAL_INDENT_OPTIONS>
+ <ADDITIONAL_INDENT_OPTIONS fileType="xml">
+ <option name="INDENT_SIZE" value="4" />
+ <option name="CONTINUATION_INDENT_SIZE" value="8" />
+ <option name="TAB_SIZE" value="4" />
+ <option name="USE_TAB_CHARACTER" value="false" />
+ <option name="SMART_TABS" value="false" />
+ <option name="LABEL_INDENT_SIZE" value="0" />
+ <option name="LABEL_INDENT_ABSOLUTE" value="false" />
+ </ADDITIONAL_INDENT_OPTIONS>
+</code_scheme>
+
Modified: root/checkstyle/src/main/resources/richfaces-checkstyle/richfaces-checkstyle.xml
===================================================================
--- root/checkstyle/src/main/resources/richfaces-checkstyle/richfaces-checkstyle.xml 2009-12-07 13:34:21 UTC (rev 16084)
+++ root/checkstyle/src/main/resources/richfaces-checkstyle/richfaces-checkstyle.xml 2009-12-07 13:41:06 UTC (rev 16085)
@@ -15,10 +15,6 @@
<!-- Checks for Javadoc comments. -->
<!-- See http://checkstyle.sourceforge.net/config_javadoc.html -->
- <module name="JavadocMethod">
- <property name="scope" value="public"/>
- <property name="severity" value="warning"/>
- </module>
<module name="JavadocType">
<property name="severity" value="warning"/>
</module>
@@ -209,10 +205,6 @@
<module name="ModifiedControlVariable">
<property name="severity" value="error"/>
</module>
- <module name="RedundantThrows">
- <property name="severity" value="warning"/>
- <!-- TODO <property name="severity" value="error"/>-->
- </module>
<module name="SimplifyBooleanExpression">
<property name="severity" value="error"/>
</module>
@@ -235,7 +227,19 @@
value="java.lang.Throwable, java.lang.RuntimeException, java.lang.Error"/>
<property name="severity" value="error"/>
</module>
- <module name="IllegalThrows"/>
+
+ <!-- desable besause - http://jira.codehaus.org/browse/MCHECKSTYLE-111 -->
+ <!-- <module name="IllegalThrows"/> -->
+ <!-- <module name="RedundantThrows"> -->
+ <!-- <property name="severity" value="warning"/> -->
+ <!-- TODO <property name="severity" value="error"/>-->
+ <!-- </module> -->
+ <!--<module name="JavadocMethod">-->
+ <!--<property name="scope" value="public"/>-->
+ <!--<property name="severity" value="warning"/>-->
+ <!--<property name="allowMissingThrowsTags" value="true"/>-->
+ <!--</module>-->
+
<module name="ParameterAssignment">
<property name="severity" value="warning"/>
<!-- TODO <property name="severity" value="error"/>-->
14 years, 5 months
JBoss Rich Faces SVN: r16084 - in root/framework/trunk: test-base and 2 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: Alex.Kolonitsky
Date: 2009-12-07 08:34:21 -0500 (Mon, 07 Dec 2009)
New Revision: 16084
Added:
root/framework/trunk/impl/checkstyle-suppressions.xml
root/framework/trunk/test-base/checkstyle-suppressions.xml
Modified:
root/framework/trunk/test-base/src/main/java/org/richfaces/test/AbstractFacesTest.java
root/framework/trunk/test-base/src/main/java/org/richfaces/test/staging/StagingHttpSession.java
root/framework/trunk/test-base/src/main/java/org/richfaces/test/staging/StagingServletContext.java
Log:
RFPL-195 - Code style policy
Reformatting
Added: root/framework/trunk/impl/checkstyle-suppressions.xml
===================================================================
--- root/framework/trunk/impl/checkstyle-suppressions.xml (rev 0)
+++ root/framework/trunk/impl/checkstyle-suppressions.xml 2009-12-07 13:34:21 UTC (rev 16084)
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE suppressions PUBLIC
+ "-//Puppy Crawl//DTD Suppressions 1.0//EN"
+ "http://www.puppycrawl.com/dtds/suppressions_1_0.dtd">
+
+<suppressions>
+ <suppress checks="DoubleCheckedLocking" files="MultipartRequestRegistry.java" />
+ <suppress checks="FallThrough" files="JSMin.java" />
+ <suppress checks="IllegalCatch" files="UISwitchablePanel.java" />
+ <suppress checks="ModifiedControlVariable" files="MultipartRequest.java" />
+ <suppress checks="IllegalCatch" files="StagingServer.java" />
+ <suppress checks="IllegalCatch" files="PartialViewContextImpl.java" />
+ <suppress checks="FallThrough" files="StagingServer.java" />
+ <suppress checks="ModifiedControlVariable" files="Cookie.java" />
+ <suppress checks="IllegalCatch" files="CacheManager.java" />
+ <suppress checks="MissingSwitchDefault" files="JSONTokener.java" />
+ <suppress checks="IllegalCatch" files="AjaxViewRoot.java" />
+ <suppress checks="FallThrough" files="XMLTokener.java" />
+ <suppress checks="IllegalCatch" files="ResourceHandlerImpl.java" />
+ <suppress checks="IllegalThrows" files="AbstractThreadedTest.java" />
+ <suppress checks="ModifiedControlVariable" files="URLCodec.java" />
+</suppressions>
Added: root/framework/trunk/test-base/checkstyle-suppressions.xml
===================================================================
--- root/framework/trunk/test-base/checkstyle-suppressions.xml (rev 0)
+++ root/framework/trunk/test-base/checkstyle-suppressions.xml 2009-12-07 13:34:21 UTC (rev 16084)
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+
+<!DOCTYPE suppressions PUBLIC
+ "-//Puppy Crawl//DTD Suppressions 1.0//EN"
+ "http://www.puppycrawl.com/dtds/suppressions_1_0.dtd">
+
+<suppressions>
+ <suppress checks="IllegalCatch" files="AbstractThreadedTest.java" />
+ <suppress checks="IllegalCatch" files="StagingServer.java" />
+</suppressions>
Modified: root/framework/trunk/test-base/src/main/java/org/richfaces/test/AbstractFacesTest.java
===================================================================
--- root/framework/trunk/test-base/src/main/java/org/richfaces/test/AbstractFacesTest.java 2009-12-07 13:22:33 UTC (rev 16083)
+++ root/framework/trunk/test-base/src/main/java/org/richfaces/test/AbstractFacesTest.java 2009-12-07 13:34:21 UTC (rev 16084)
@@ -59,7 +59,6 @@
* Current virtual connection. This field populated by the {@link #setupWebContent()} method only.
*/
protected StagingConnection connection;
- private ClassLoader contextClassLoader;
/**
* Current {@link FacesContext} instance. This field populated by the {@link #setupWebContent()} method only.
@@ -76,6 +75,8 @@
*/
protected Lifecycle lifecycle;
+ private ClassLoader contextClassLoader;
+
/**
* Setup staging server instance with JSF implementation. First, this method creates a local test instance
* and calls the other template method in the next sequence:
@@ -328,7 +329,7 @@
* parameters.
* The default implementation does nothing.
*/
- protected void setupConnection() {}
+ protected void setupConnection() { }
/**
* Virtual server instance cleanup.
Modified: root/framework/trunk/test-base/src/main/java/org/richfaces/test/staging/StagingHttpSession.java
===================================================================
--- root/framework/trunk/test-base/src/main/java/org/richfaces/test/staging/StagingHttpSession.java 2009-12-07 13:22:33 UTC (rev 16083)
+++ root/framework/trunk/test-base/src/main/java/org/richfaces/test/staging/StagingHttpSession.java 2009-12-07 13:34:21 UTC (rev 16084)
@@ -21,8 +21,9 @@
*/
@SuppressWarnings("deprecation")
abstract class StagingHttpSession implements HttpSession {
+ public static final String SESSION_ID = "1234567890";
+
private static final int DEFAULT_INACTIVE_TIME = 30;
- public static final String SESSION_ID = "1234567890";
private final Map<String, Object> attributes = new ConcurrentHashMap<String, Object>();
private volatile int inactiveTime = DEFAULT_INACTIVE_TIME;
private final long creationTime;
Modified: root/framework/trunk/test-base/src/main/java/org/richfaces/test/staging/StagingServletContext.java
===================================================================
--- root/framework/trunk/test-base/src/main/java/org/richfaces/test/staging/StagingServletContext.java 2009-12-07 13:22:33 UTC (rev 16083)
+++ root/framework/trunk/test-base/src/main/java/org/richfaces/test/staging/StagingServletContext.java 2009-12-07 13:34:21 UTC (rev 16084)
@@ -31,9 +31,11 @@
*
*/
abstract class StagingServletContext implements ServletContext {
+ public static final String CONTEXT_PATH = "";
+
private static final String APPLICATION_NAME = "stub";
- public static final String CONTEXT_PATH = "";
private static final Logger LOG = ServerLogger.SERVER.getLogger();
+
private final Map<String, Object> attributes = new ConcurrentHashMap<String, Object>();
private final Map<String, String> initParameters = new HashMap<String, String>();
14 years, 5 months
JBoss Rich Faces SVN: r16083 - in root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces: component/html and 6 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2009-12-07 08:22:33 -0500 (Mon, 07 Dec 2009)
New Revision: 16083
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/ColumnsIterator.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/DataIterator.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/Expandable.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/FixedChildrenIterator.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/IteratorBase.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/SubtableFixedChildrenIterator.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIColumn.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIColumnGroup.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTable.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTableBase.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIExtendedDataTable.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIToggleControl.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlColumn.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlColumnGroup.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlDataTable.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlExtendedDataTable.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlSubTable.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/state/DataTableState.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/state/SubTableState.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/event/ToggleEvent.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/event/ToggleListener.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/ColumnVisualModel.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/DataTableVisualModel.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/SubTableVisualModel.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/impl/ColumnVisualModelImpl.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/impl/DataTableVisualModelImpl.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/impl/SubTableVisualModelImpl.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ElementEncodeListener.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/RowHolder.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/RowHolderBase.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ToggleControlRendererBase.java
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/taglib/SubTableHandler.java
Log:
checkstyle
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/ColumnsIterator.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/ColumnsIterator.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/ColumnsIterator.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -26,30 +26,29 @@
/**
* Iterator for all children table columns.
+ *
* @author asmirnov
- *
+ *
*/
class ColumnsIterator extends IteratorBase<UIComponent> {
-
- protected Iterator<UIComponent> childrenIterator;
-
-
- public ColumnsIterator(UIComponent dataTable) {
- this.childrenIterator = dataTable.getChildren().iterator();
- }
+ protected Iterator<UIComponent> childrenIterator;
- protected UIComponent nextItem(){
- while (childrenIterator != null && childrenIterator.hasNext()) {
- UIComponent child = childrenIterator.next();
- if (child instanceof javax.faces.component.UIColumn || child instanceof Column) {
- return child;
- }
- }
-
- //TODO nick - free childrenIterator field
-
- return null;
- }
-
+ public ColumnsIterator(UIComponent dataTable) {
+ this.childrenIterator = dataTable.getChildren().iterator();
+ }
+
+ protected UIComponent nextItem() {
+ while (childrenIterator != null && childrenIterator.hasNext()) {
+ UIComponent child = childrenIterator.next();
+ if (child instanceof javax.faces.component.UIColumn || child instanceof Column) {
+ return child;
+ }
+ }
+
+ // TODO nick - free childrenIterator field
+
+ return null;
+ }
+
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/DataIterator.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/DataIterator.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/DataIterator.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -25,58 +25,57 @@
import javax.faces.component.UIComponent;
//TODO nick - rename to include component name
-class DataIterator extends IteratorBase <UIComponent> {
+class DataIterator extends IteratorBase<UIComponent> {
- private Iterator<UIComponent> facetsIterator;
-
- private Iterator<UIComponent> childrenIterator;
-
+ private Iterator<UIComponent> facetsIterator;
- public DataIterator(UIDataTableBase dataTable) {
- this.childrenIterator = dataTable.getChildren().iterator();
- this.facetsIterator = dataTable.getFacets().values().iterator();
- }
+ private Iterator<UIComponent> childrenIterator;
- protected UIComponent nextItem() {
-
- UIComponent nextColumn = null;
- while (nextColumn == null && childrenIterator.hasNext()) {
- UIComponent child = childrenIterator.next();
- //TODO nick - why non-rendered children are filtered?
- //TODO nick - should be (child instanceof UIColumn || child instanceof Column)?
- if ((child instanceof UIColumn) || (child instanceof Column)) {
- nextColumn = child;
- } else if(checkAjaxComponent(child)) {
- nextColumn = child;
- }
- }
-
- //TODO nick - free childrenIterator
-
- // ???
- while (nextColumn == null && facetsIterator.hasNext()) {
- UIComponent component = facetsIterator.next();
- if(checkAjaxComponent(component)){
- nextColumn = component;
- }
- }
-
- //TODO nick - free facetsIterator
-
- return nextColumn;
- }
-
- protected Iterator<UIComponent> getFacetsIterator() {
- return this.facetsIterator;
- }
-
- protected Iterator<UIComponent> getChildrenIterator() {
- return this.childrenIterator;
- }
-
- //TODO nick - what's this for?
- protected boolean checkAjaxComponent(UIComponent child) {
- return false;
- }
-
+ public DataIterator(UIDataTableBase dataTable) {
+ this.childrenIterator = dataTable.getChildren().iterator();
+ this.facetsIterator = dataTable.getFacets().values().iterator();
+ }
+
+ protected UIComponent nextItem() {
+
+ UIComponent nextColumn = null;
+ while (nextColumn == null && childrenIterator.hasNext()) {
+ UIComponent child = childrenIterator.next();
+ // TODO nick - why non-rendered children are filtered?
+ // TODO nick - should be (child instanceof UIColumn || child instanceof Column)?
+ if ((child instanceof UIColumn) || (child instanceof Column)) {
+ nextColumn = child;
+ } else if (checkAjaxComponent(child)) {
+ nextColumn = child;
+ }
+ }
+
+ // TODO nick - free childrenIterator
+
+ // ???
+ while (nextColumn == null && facetsIterator.hasNext()) {
+ UIComponent component = facetsIterator.next();
+ if (checkAjaxComponent(component)) {
+ nextColumn = component;
+ }
+ }
+
+ // TODO nick - free facetsIterator
+
+ return nextColumn;
+ }
+
+ protected Iterator<UIComponent> getFacetsIterator() {
+ return this.facetsIterator;
+ }
+
+ protected Iterator<UIComponent> getChildrenIterator() {
+ return this.childrenIterator;
+ }
+
+ // TODO nick - what's this for?
+ protected boolean checkAjaxComponent(UIComponent child) {
+ return false;
+ }
+
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/Expandable.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/Expandable.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/Expandable.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -5,17 +5,17 @@
import org.richfaces.event.ToggleListener;
public interface Expandable {
-
- public boolean isExpanded();
-
- public void addToggleListener(ToggleListener listener);
-
- public void removeToggleListener(ToggleListener listener);
-
- public ToggleListener [] getToggleListeners();
-
- public void setToggleListener(MethodExpression toggleExpression);
-
- public MethodExpression getToggleListener();
-
+
+ public boolean isExpanded();
+
+ public void addToggleListener(ToggleListener listener);
+
+ public void removeToggleListener(ToggleListener listener);
+
+ public ToggleListener[] getToggleListeners();
+
+ public void setToggleListener(MethodExpression toggleExpression);
+
+ public MethodExpression getToggleListener();
+
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/FixedChildrenIterator.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/FixedChildrenIterator.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/FixedChildrenIterator.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -24,60 +24,59 @@
import javax.faces.component.UIComponent;
-
class FixedChildrenIterator extends DataIterator {
-
- private Iterator<UIComponent> currentColumnIterator;
-
- public FixedChildrenIterator(UIDataTableBase dataTable) {
- super(dataTable);
- }
-
- @Override
- protected UIComponent nextItem() {
- UIComponent next = null;
-
- if(currentColumnIterator != null && currentColumnIterator.hasNext()) {
- next = currentColumnIterator.next();
- checkColumnIterator();
- }
-
- if(next == null) {
- Iterator <UIComponent> childrenIterator = getChildrenIterator();
- while(next == null && childrenIterator.hasNext()) {
- UIComponent child = childrenIterator.next();
- if((child instanceof UIColumn) && child.isRendered()) {
- currentColumnIterator = getChildFacetIterator(child);
- next = nextItem();
- } else if(checkAjaxComponent(child)) {
- next = child;
- }
- }
- }
-
- if (next == null) {
- next = getNextFacet();
- }
- return next;
- }
-
- protected UIComponent getNextFacet() {
- Iterator<UIComponent> facetsIterator = getFacetsIterator();
- //TODO nick - while -> if
- while(facetsIterator.hasNext()) {
- return facetsIterator.next();
- }
- return null;
- }
-
- protected void checkColumnIterator() {
- if (!currentColumnIterator.hasNext()) {
- currentColumnIterator = null;
- }
- }
-
- protected Iterator<UIComponent> getChildFacetIterator(UIComponent component) {
- return component.getFacets().values().iterator();
- }
+ private Iterator<UIComponent> currentColumnIterator;
+
+ public FixedChildrenIterator(UIDataTableBase dataTable) {
+ super(dataTable);
+ }
+
+ @Override
+ protected UIComponent nextItem() {
+ UIComponent next = null;
+
+ if (currentColumnIterator != null && currentColumnIterator.hasNext()) {
+ next = currentColumnIterator.next();
+ checkColumnIterator();
+ }
+
+ if (next == null) {
+ Iterator<UIComponent> childrenIterator = getChildrenIterator();
+ while (next == null && childrenIterator.hasNext()) {
+ UIComponent child = childrenIterator.next();
+ if ((child instanceof UIColumn) && child.isRendered()) {
+ currentColumnIterator = getChildFacetIterator(child);
+ next = nextItem();
+ } else if (checkAjaxComponent(child)) {
+ next = child;
+ }
+ }
+ }
+
+ if (next == null) {
+ next = getNextFacet();
+ }
+ return next;
+ }
+
+ protected UIComponent getNextFacet() {
+ Iterator<UIComponent> facetsIterator = getFacetsIterator();
+ // TODO nick - while -> if
+ while (facetsIterator.hasNext()) {
+ return facetsIterator.next();
+ }
+ return null;
+ }
+
+ protected void checkColumnIterator() {
+ if (!currentColumnIterator.hasNext()) {
+ currentColumnIterator = null;
+ }
+ }
+
+ protected Iterator<UIComponent> getChildFacetIterator(UIComponent component) {
+ return component.getFacets().values().iterator();
+ }
+
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/IteratorBase.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/IteratorBase.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/IteratorBase.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -7,46 +7,46 @@
* @author Anton Belevich
* @author Nick Belaevski
*/
-//TODO nick - rename this class
+// TODO nick - rename this class
public abstract class IteratorBase<E> implements Iterator<E> {
-
- private boolean isCompleted = false;
-
- private E next = null;
- private void setupNext() {
- if (!isCompleted) {
- if (next == null) {
- next = nextItem();
+ private boolean isCompleted = false;
- if (next == null) {
- isCompleted = true;
- }
- }
- }
- }
-
- public boolean hasNext() {
- setupNext();
-
- return next != null;
- }
+ private E next = null;
- public E next() {
- setupNext();
-
- if (next == null) {
- throw new NoSuchElementException();
- }
-
- E result = next;
- next = null;
- return result;
- }
+ private void setupNext() {
+ if (!isCompleted) {
+ if (next == null) {
+ next = nextItem();
- public void remove() {
- throw new UnsupportedOperationException("Iterator is read-only");
- }
-
- abstract protected E nextItem();
+ if (next == null) {
+ isCompleted = true;
+ }
+ }
+ }
+ }
+
+ public boolean hasNext() {
+ setupNext();
+
+ return next != null;
+ }
+
+ public E next() {
+ setupNext();
+
+ if (next == null) {
+ throw new NoSuchElementException();
+ }
+
+ E result = next;
+ next = null;
+ return result;
+ }
+
+ public void remove() {
+ throw new UnsupportedOperationException("Iterator is read-only");
+ }
+
+ protected abstract E nextItem();
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/SubtableFixedChildrenIterator.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/SubtableFixedChildrenIterator.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/SubtableFixedChildrenIterator.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -24,16 +24,16 @@
/**
* @author asmirnov
- *
+ *
*/
public class SubtableFixedChildrenIterator extends FixedChildrenIterator {
- public SubtableFixedChildrenIterator(UIDataTableBase dataTable) {
- super(dataTable);
- }
+ public SubtableFixedChildrenIterator(UIDataTableBase dataTable) {
+ super(dataTable);
+ }
- @Override
- protected UIComponent getNextFacet() {
- return null;
- }
+ @Override
+ protected UIComponent getNextFacet() {
+ return null;
+ }
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIColumn.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIColumn.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIColumn.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -1,14 +1,13 @@
package org.richfaces.component;
+public abstract class UIColumn extends javax.faces.component.UIColumn implements Column {
-public abstract class UIColumn extends javax.faces.component.UIColumn implements Column {
-
- public abstract int getRowspan();
- public abstract void setRowspan(int rowspan);
-
- public abstract int getColspan();
- public abstract void setColspan(int colspan);
-
+ public abstract int getRowspan();
+ public abstract void setRowspan(int rowspan);
+
+ public abstract int getColspan();
+
+ public abstract void setColspan(int colspan);
+
}
-
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIColumnGroup.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIColumnGroup.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIColumnGroup.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -32,47 +32,47 @@
/**
* JSF component class
- *
+ *
*/
public abstract class UIColumnGroup extends UIPanel implements Row, Column {
-
- public static final String COMPONENT_TYPE = "org.richfaces.Colgroup";
-
- public static final String COMPONENT_FAMILY = "org.richfaces.Colgroup";
-
- public Iterator<UIComponent> columns(){
- return new ColumnsIterator(this);
- }
- public boolean isBreakBefore() {
- return true;
- }
-
- public void setBreakBefore(boolean newBreakBefore) {
- throw new IllegalStateException("Property 'breakBefore' for subtable is read-only");
- }
-
- public void setRowKey(FacesContext context, Object rowKey) {
- // columnGroup doesn't have data model
- }
-
- public void walk(FacesContext context, DataVisitor visitor, Object argument) {
- if(!(argument instanceof RowHolder)) {
- return;
- }
-
- visitor.process(context, null, argument);
- }
-
- public String getCellSkinClass() {
- return null;
- }
-
- public String getRowSkinClass() {
- return null;
- }
-
- public String getFirstRowSkinClass() {
- return null;
- }
+ public static final String COMPONENT_TYPE = "org.richfaces.Colgroup";
+
+ public static final String COMPONENT_FAMILY = "org.richfaces.Colgroup";
+
+ public Iterator<UIComponent> columns() {
+ return new ColumnsIterator(this);
+ }
+
+ public boolean isBreakBefore() {
+ return true;
+ }
+
+ public void setBreakBefore(boolean newBreakBefore) {
+ throw new IllegalStateException("Property 'breakBefore' for subtable is read-only");
+ }
+
+ public void setRowKey(FacesContext context, Object rowKey) {
+ // columnGroup doesn't have data model
+ }
+
+ public void walk(FacesContext context, DataVisitor visitor, Object argument) {
+ if (!(argument instanceof RowHolder)) {
+ return;
+ }
+
+ visitor.process(context, null, argument);
+ }
+
+ public String getCellSkinClass() {
+ return null;
+ }
+
+ public String getRowSkinClass() {
+ return null;
+ }
+
+ public String getFirstRowSkinClass() {
+ return null;
+ }
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTable.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTable.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTable.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -9,95 +9,94 @@
/**
* @author Anton Belevich
- *
+ *
*/
public abstract class UIDataTable extends UIDataTableBase {
-
- enum PropertyKeys {
- visualModel
- }
-
-
- public DataTableVisualModel getVisualModel(){
- return (DataTableVisualModel) getStateHelper().eval(PropertyKeys.visualModel);
- }
-
- public void setVisualModel(DataTableVisualModel dataTableVisualModel) {
- getStateHelper().put(PropertyKeys.visualModel, dataTableVisualModel);
- }
-
- @Override
- protected DataComponentState createComponentState() {
- DataTableState state = new DataTableState(getFirst(), getRows());
- DataTableVisualModel model = getVisualModel();
-
- if(model == null) {
- model = new DataTableVisualModelImpl();
- }
- state.setVisualModel(model);
-
- return state;
- }
-
- public String getCellSkinClass() {
- return "rich-table-cell";
- }
-
- public String getRowSkinClass() {
- return "rich-table-row";
- }
-
- public String getFirstRowSkinClass() {
- return "rich-table-firstrow";
- }
-
- public String getHeaderCellSkinClass() {
- return "rich-table-header-cell";
- }
-
- public String getHeaderRowSkinClass() {
- return "rich-table-header-continue";
- }
-
- public String getHeaderFirstRowSkinClass() {
- return "rich-table-header";
- }
-
- public String getColumnHeaderCellSkinClass() {
- return "rich-table-subheader-cell";
- }
-
- public String getColumnHeaderSkinClass() {
- return "rich-table-subheader";
- }
-
- @Override
- public String getFooterCellSkinClass() {
- return "rich-table-footer-cell";
- }
-
- @Override
- public String getFooterRowSkinClass() {
- return "rich-table-footer-continue";
- }
-
- @Override
- public String getFooterFirstRowSkinClass() {
- return "rich-table-footer";
- }
-
- @Override
- public String getColumnFooterCellSkinClass() {
- return "rich-table-subfooter-cell";
- }
-
- @Override
- public String getColumnFooterSkinClass() {
- return "rich-table-subfooter-cell";
- }
-
- public UIComponent getCaption() {
- return getFacet("caption");
- }
-}
+
+ enum PropertyKeys {
+ visualModel
+ }
+
+ public DataTableVisualModel getVisualModel() {
+ return (DataTableVisualModel) getStateHelper().eval(PropertyKeys.visualModel);
+ }
+
+ public void setVisualModel(DataTableVisualModel dataTableVisualModel) {
+ getStateHelper().put(PropertyKeys.visualModel, dataTableVisualModel);
+ }
+
+ @Override
+ protected DataComponentState createComponentState() {
+ DataTableState state = new DataTableState(getFirst(), getRows());
+ DataTableVisualModel model = getVisualModel();
+
+ if (model == null) {
+ model = new DataTableVisualModelImpl();
+ }
+ state.setVisualModel(model);
+
+ return state;
+ }
+
+ public String getCellSkinClass() {
+ return "rich-table-cell";
+ }
+
+ public String getRowSkinClass() {
+ return "rich-table-row";
+ }
+
+ public String getFirstRowSkinClass() {
+ return "rich-table-firstrow";
+ }
+
+ public String getHeaderCellSkinClass() {
+ return "rich-table-header-cell";
+ }
+
+ public String getHeaderRowSkinClass() {
+ return "rich-table-header-continue";
+ }
+
+ public String getHeaderFirstRowSkinClass() {
+ return "rich-table-header";
+ }
+
+ public String getColumnHeaderCellSkinClass() {
+ return "rich-table-subheader-cell";
+ }
+
+ public String getColumnHeaderSkinClass() {
+ return "rich-table-subheader";
+ }
+
+ @Override
+ public String getFooterCellSkinClass() {
+ return "rich-table-footer-cell";
+ }
+
+ @Override
+ public String getFooterRowSkinClass() {
+ return "rich-table-footer-continue";
+ }
+
+ @Override
+ public String getFooterFirstRowSkinClass() {
+ return "rich-table-footer";
+ }
+
+ @Override
+ public String getColumnFooterCellSkinClass() {
+ return "rich-table-subfooter-cell";
+ }
+
+ @Override
+ public String getColumnFooterSkinClass() {
+ return "rich-table-subfooter-cell";
+ }
+
+ public UIComponent getCaption() {
+ return getFacet("caption");
+ }
+}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTableBase.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTableBase.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIDataTableBase.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -6,54 +6,52 @@
public abstract class UIDataTableBase extends UISequence implements Row {
- public Iterator<UIComponent> columns() {
- return new ColumnsIterator(this);
- }
-
- @Override
- protected Iterator<UIComponent> fixedChildren() {
- return new FixedChildrenIterator(this);
- }
-
- @Override
- protected Iterator<UIComponent> dataChildren() {
-
- return new DataIterator(this);
- }
-
- public UIComponent getHeader() {
+ public Iterator<UIComponent> columns() {
+ return new ColumnsIterator(this);
+ }
+
+ @Override
+ protected Iterator<UIComponent> fixedChildren() {
+ return new FixedChildrenIterator(this);
+ }
+
+ @Override
+ protected Iterator<UIComponent> dataChildren() {
+
+ return new DataIterator(this);
+ }
+
+ public UIComponent getHeader() {
return getFacet("header");
}
-
- public UIComponent getFooter() {
+
+ public UIComponent getFooter() {
return getFacet("footer");
}
-
- public abstract String getHeaderCellSkinClass();
-
- public abstract String getHeaderRowSkinClass();
-
- public abstract String getHeaderFirstRowSkinClass();
-
- public abstract String getColumnHeaderCellSkinClass();
-
- public abstract String getColumnHeaderSkinClass();
-
- public abstract String getFooterCellSkinClass();
-
- public abstract String getFooterRowSkinClass();
-
- public abstract String getFooterFirstRowSkinClass();
-
- public abstract String getColumnFooterCellSkinClass();
-
- public abstract String getColumnFooterSkinClass();
-
-
- @Override
- public boolean getRendersChildren() {
- return true;
- }
-
+ public abstract String getHeaderCellSkinClass();
+
+ public abstract String getHeaderRowSkinClass();
+
+ public abstract String getHeaderFirstRowSkinClass();
+
+ public abstract String getColumnHeaderCellSkinClass();
+
+ public abstract String getColumnHeaderSkinClass();
+
+ public abstract String getFooterCellSkinClass();
+
+ public abstract String getFooterRowSkinClass();
+
+ public abstract String getFooterFirstRowSkinClass();
+
+ public abstract String getColumnFooterCellSkinClass();
+
+ public abstract String getColumnFooterSkinClass();
+
+ @Override
+ public boolean getRendersChildren() {
+ return true;
+ }
+
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIExtendedDataTable.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIExtendedDataTable.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIExtendedDataTable.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -2,7 +2,7 @@
/**
* @author Anton Belevich
- *
+ *
*/
public abstract class UIExtendedDataTable extends UIDataTable {
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UISubTable.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -39,261 +39,260 @@
import org.richfaces.model.visual.SubTableVisualModel;
import org.richfaces.model.visual.impl.SubTableVisualModelImpl;
-
/**
* JSF component class
- *
+ *
*/
public abstract class UISubTable extends UIDataTableBase implements Row, Column, Expandable {
-
- public static final String COMPONENT_TYPE = "org.richfaces.SubTable";
-
- public static final String COMPONENT_FAMILY = "org.richfaces.SubTable";
-
- public static final String SWITCH_TYPE_SERVER = "server";
-
- public static final String SWITCH_TYPE_CLIENT = "client";
-
- public static final String SWITCH_TYPE_AJAX = "ajax";
-
- private boolean expanded;
-
- private SubTableVisualModel visualModel;
-
-// private SubTableState componentState;
-
- enum PropertyKeys {
- switchType, expanded, toggleExpression, childState, visualModel
- }
-
- public SubTableVisualModel getVisualModel() {
- //TODO refactor
- SubTableVisualModel model = getCurrentComponentState().getCurrentRowModel();
-
- if(model == null) {
-
- if(visualModel == null) {
-
- ELContext elContext = getFacesContext().getELContext();
- ValueExpression modelExpression = getValueExpression("visualModel");
- if(modelExpression != null) {
- model = (SubTableVisualModel)modelExpression.getValue(elContext);
- }
-
- if(model == null) {
- model = new SubTableVisualModelImpl();
- model.setExpanded(expanded);
-
- if((modelExpression != null) && (!modelExpression.isReadOnly(elContext))) {
- modelExpression.setValue(elContext, model);
- }
- }
- } else {
- model = visualModel;
- }
-
- getCurrentComponentState().setCurrentRowModel(model);
- }
-
- return model;
- }
-
- public void setVisualModel(SubTableVisualModel visualModel) {
- this.visualModel = visualModel;
- }
-
- public boolean isBreakBefore() {
- return true;
- }
-
- public void setBreakBefore(boolean newBreakBefore) {
- throw new IllegalStateException("Property 'breakBefore' for subtable is read-only");
- }
- public String getSortExpression() {
- // SubTable is not sortable element.
- return null;
- }
-
- public void setSortExpression(String sortExpression) {
- throw new IllegalArgumentException("subtable is not sortable element");
- }
-
- @Override
- public void walk(FacesContext context, DataVisitor visitor, Object argument) {
- resetDataModel(context);
- super.walk(context, visitor, argument);
- }
-
- public String getSwichType(){
- return (String)getStateHelper().eval(PropertyKeys.switchType, SWITCH_TYPE_SERVER);
- }
-
- public void setSwitchType(String switchType){
- getStateHelper().put(PropertyKeys.switchType, switchType);
- }
-
- public SubTableState getCurrentComponentState() {
- DataComponentState dataComponentState = getComponentState();
- if(dataComponentState instanceof SubTableState) {
- DataTableState parentState = getParentState();
- parentState.addSubTableState((SubTableState)dataComponentState);
-
- return (SubTableState) dataComponentState;
- }
- return null;
- }
-
- public DataTableState getParentState() {
- DataTableState dataTableState = null;
-
- UIComponent component = getParent();
- if(component instanceof UIDataTable) {
- UIDataTable dataTable = (UIDataTable)component;
- DataComponentState state = dataTable.getComponentState();
-
- if(state instanceof DataTableState) {
- dataTableState = (DataTableState)state;
- }
- }
-
- return dataTableState;
- }
-
- @Override
- protected DataComponentState createComponentState() {
- DataComponentState state = null;
- DataTableState parentState = getParentState();
-
- if(parentState != null) {
- state = parentState.getChildState(getClientId());
- }
-
- if(state == null) {
- state = new SubTableState(getClientId(), getFirst(), getRows());
- }
-
- return state;
- }
-
- public void setExpanded(boolean expanded) {
- this.expanded = expanded;
- }
-
- public boolean isExpanded() {
- return getVisualModel().isExpanded();
- }
-
- public void setToggleListener(MethodExpression toggleExpression) {
- getStateHelper().put(PropertyKeys.toggleExpression, toggleExpression);
- }
-
- public MethodExpression getToggleListener() {
- return (MethodExpression) getStateHelper().eval(PropertyKeys.toggleExpression);
- }
-
- @Override
- public void queueEvent(FacesEvent event) {
- if(event instanceof ToggleEvent) {
- event.setPhaseId(PhaseId.UPDATE_MODEL_VALUES);
- }
- super.queueEvent(event);
- }
-
- @Override
- public void broadcast(FacesEvent event) throws AbortProcessingException {
- super.broadcast(event);
-
- if(event instanceof ToggleEvent) {
- ToggleEvent toggleEvent = (ToggleEvent)event;
-
- //not sure that this is right ... need to discuss
- SubTableState state = getCurrentComponentState();
- if(event.isAppropriateListener(state)) {
- toggleEvent.processListener(state);
- }
-
- MethodExpression expression = getToggleListener();
- if(expression != null) {
- expression.invoke(getFacesContext().getELContext(), new Object[]{toggleEvent});
- }
- }
- }
-
- public void addToggleListener(ToggleListener listener) {
- addFacesListener(listener);
- }
-
- public void removeToggleListener(ToggleListener listener) {
- removeFacesListener(listener);
- }
-
- public ToggleListener [] getToggleListeners() {
- return (ToggleListener[]) getFacesListeners(ToggleListener.class);
- }
-
- @Override
- public boolean getRendersChildren() {
- //TODO nick - why "false"?
- return false;
- }
-
- public String getCellSkinClass() {
- return "rich-subtable-cell";
- }
-
- public String getRowSkinClass() {
- return "rich-subtable-row";
- }
-
- public String getFirstRowSkinClass() {
- return "rich-subtable-first-row";
- }
-
- public String getHeaderCellSkinClass() {
- return "rich-subtable-header-cell";
- }
-
- public String getHeaderRowSkinClass() {
- return "rich-subtable-header-row";
- }
-
- public String getHeaderFirstRowSkinClass() {
- return "rich-subtable-header-first-row";
- }
-
- public String getColumnHeaderCellSkinClass() {
- return "rich-subtable-subheader-cell";
- }
-
- public String getColumnHeaderSkinClass() {
- return "rich-subtable-subheader";
- }
-
- @Override
- public String getFooterCellSkinClass() {
- return "rich-subtable-footer-cell";
- }
-
- @Override
- public String getFooterRowSkinClass() {
- return "rich-subtable-footer-continue";
- }
-
- @Override
- public String getFooterFirstRowSkinClass() {
- return "rich-subtable-footer";
- }
-
- @Override
- public String getColumnFooterCellSkinClass() {
- return "rich-subtable-subfooter-cell";
- }
-
- @Override
- public String getColumnFooterSkinClass() {
- return "rich-subtable-subfooter-cell";
- }
-
+ public static final String COMPONENT_TYPE = "org.richfaces.SubTable";
+
+ public static final String COMPONENT_FAMILY = "org.richfaces.SubTable";
+
+ public static final String SWITCH_TYPE_SERVER = "server";
+
+ public static final String SWITCH_TYPE_CLIENT = "client";
+
+ public static final String SWITCH_TYPE_AJAX = "ajax";
+
+ private boolean expanded;
+
+ private SubTableVisualModel visualModel;
+
+ // private SubTableState componentState;
+
+ enum PropertyKeys {
+ switchType, expanded, toggleExpression, childState, visualModel
+ }
+
+ public SubTableVisualModel getVisualModel() {
+ // TODO refactor
+ SubTableVisualModel model = getCurrentComponentState().getCurrentRowModel();
+
+ if (model == null) {
+
+ if (visualModel == null) {
+
+ ELContext elContext = getFacesContext().getELContext();
+ ValueExpression modelExpression = getValueExpression("visualModel");
+ if (modelExpression != null) {
+ model = (SubTableVisualModel) modelExpression.getValue(elContext);
+ }
+
+ if (model == null) {
+ model = new SubTableVisualModelImpl();
+ model.setExpanded(expanded);
+
+ if ((modelExpression != null) && (!modelExpression.isReadOnly(elContext))) {
+ modelExpression.setValue(elContext, model);
+ }
+ }
+ } else {
+ model = visualModel;
+ }
+
+ getCurrentComponentState().setCurrentRowModel(model);
+ }
+
+ return model;
+ }
+
+ public void setVisualModel(SubTableVisualModel visualModel) {
+ this.visualModel = visualModel;
+ }
+
+ public boolean isBreakBefore() {
+ return true;
+ }
+
+ public void setBreakBefore(boolean newBreakBefore) {
+ throw new IllegalStateException("Property 'breakBefore' for subtable is read-only");
+ }
+
+ public String getSortExpression() {
+ // SubTable is not sortable element.
+ return null;
+ }
+
+ public void setSortExpression(String sortExpression) {
+ throw new IllegalArgumentException("subtable is not sortable element");
+ }
+
+ @Override
+ public void walk(FacesContext context, DataVisitor visitor, Object argument) {
+ resetDataModel(context);
+ super.walk(context, visitor, argument);
+ }
+
+ public String getSwichType() {
+ return (String) getStateHelper().eval(PropertyKeys.switchType, SWITCH_TYPE_SERVER);
+ }
+
+ public void setSwitchType(String switchType) {
+ getStateHelper().put(PropertyKeys.switchType, switchType);
+ }
+
+ public SubTableState getCurrentComponentState() {
+ DataComponentState dataComponentState = getComponentState();
+ if (dataComponentState instanceof SubTableState) {
+ DataTableState parentState = getParentState();
+ parentState.addSubTableState((SubTableState) dataComponentState);
+
+ return (SubTableState) dataComponentState;
+ }
+ return null;
+ }
+
+ public DataTableState getParentState() {
+ DataTableState dataTableState = null;
+
+ UIComponent component = getParent();
+ if (component instanceof UIDataTable) {
+ UIDataTable dataTable = (UIDataTable) component;
+ DataComponentState state = dataTable.getComponentState();
+
+ if (state instanceof DataTableState) {
+ dataTableState = (DataTableState) state;
+ }
+ }
+
+ return dataTableState;
+ }
+
+ @Override
+ protected DataComponentState createComponentState() {
+ DataComponentState state = null;
+ DataTableState parentState = getParentState();
+
+ if (parentState != null) {
+ state = parentState.getChildState(getClientId());
+ }
+
+ if (state == null) {
+ state = new SubTableState(getClientId(), getFirst(), getRows());
+ }
+
+ return state;
+ }
+
+ public void setExpanded(boolean expanded) {
+ this.expanded = expanded;
+ }
+
+ public boolean isExpanded() {
+ return getVisualModel().isExpanded();
+ }
+
+ public void setToggleListener(MethodExpression toggleExpression) {
+ getStateHelper().put(PropertyKeys.toggleExpression, toggleExpression);
+ }
+
+ public MethodExpression getToggleListener() {
+ return (MethodExpression) getStateHelper().eval(PropertyKeys.toggleExpression);
+ }
+
+ @Override
+ public void queueEvent(FacesEvent event) {
+ if (event instanceof ToggleEvent) {
+ event.setPhaseId(PhaseId.UPDATE_MODEL_VALUES);
+ }
+ super.queueEvent(event);
+ }
+
+ @Override
+ public void broadcast(FacesEvent event) throws AbortProcessingException {
+ super.broadcast(event);
+
+ if (event instanceof ToggleEvent) {
+ ToggleEvent toggleEvent = (ToggleEvent) event;
+
+ // not sure that this is right ... need to discuss
+ SubTableState state = getCurrentComponentState();
+ if (event.isAppropriateListener(state)) {
+ toggleEvent.processListener(state);
+ }
+
+ MethodExpression expression = getToggleListener();
+ if (expression != null) {
+ expression.invoke(getFacesContext().getELContext(), new Object[] { toggleEvent });
+ }
+ }
+ }
+
+ public void addToggleListener(ToggleListener listener) {
+ addFacesListener(listener);
+ }
+
+ public void removeToggleListener(ToggleListener listener) {
+ removeFacesListener(listener);
+ }
+
+ public ToggleListener[] getToggleListeners() {
+ return (ToggleListener[]) getFacesListeners(ToggleListener.class);
+ }
+
+ @Override
+ public boolean getRendersChildren() {
+ // TODO nick - why "false"?
+ return false;
+ }
+
+ public String getCellSkinClass() {
+ return "rich-subtable-cell";
+ }
+
+ public String getRowSkinClass() {
+ return "rich-subtable-row";
+ }
+
+ public String getFirstRowSkinClass() {
+ return "rich-subtable-first-row";
+ }
+
+ public String getHeaderCellSkinClass() {
+ return "rich-subtable-header-cell";
+ }
+
+ public String getHeaderRowSkinClass() {
+ return "rich-subtable-header-row";
+ }
+
+ public String getHeaderFirstRowSkinClass() {
+ return "rich-subtable-header-first-row";
+ }
+
+ public String getColumnHeaderCellSkinClass() {
+ return "rich-subtable-subheader-cell";
+ }
+
+ public String getColumnHeaderSkinClass() {
+ return "rich-subtable-subheader";
+ }
+
+ @Override
+ public String getFooterCellSkinClass() {
+ return "rich-subtable-footer-cell";
+ }
+
+ @Override
+ public String getFooterRowSkinClass() {
+ return "rich-subtable-footer-continue";
+ }
+
+ @Override
+ public String getFooterFirstRowSkinClass() {
+ return "rich-subtable-footer";
+ }
+
+ @Override
+ public String getColumnFooterCellSkinClass() {
+ return "rich-subtable-subfooter-cell";
+ }
+
+ @Override
+ public String getColumnFooterSkinClass() {
+ return "rich-subtable-subfooter-cell";
+ }
+
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIToggleControl.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIToggleControl.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/UIToggleControl.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -3,51 +3,50 @@
import javax.faces.component.UIComponentBase;
public abstract class UIToggleControl extends UIComponentBase {
-
- public static final String COMPONENT_TYPE = "org.richfaces.ToggleControl";
+ public static final String COMPONENT_TYPE = "org.richfaces.ToggleControl";
+
public static final String COMPONENT_FAMILY = "org.richfaces.ToggleControl";
-
-
+
enum PropertyKeys {
- expandControl, collapseControl, forId, event
+ expandControl, collapseControl, forId, event
}
-
+
@Override
public String getFamily() {
- return COMPONENT_FAMILY;
+ return COMPONENT_FAMILY;
}
-
- public String getExpandControl(){
- return (String) getStateHelper().eval(PropertyKeys.expandControl, null);
+
+ public String getExpandControl() {
+ return (String) getStateHelper().eval(PropertyKeys.expandControl, null);
}
-
+
public void setExpandControl(String expandControl) {
- getStateHelper().put(PropertyKeys.expandControl, expandControl);
+ getStateHelper().put(PropertyKeys.expandControl, expandControl);
}
-
+
public String getCollapseControl() {
- return (String) getStateHelper().eval(PropertyKeys.collapseControl, null);
+ return (String) getStateHelper().eval(PropertyKeys.collapseControl, null);
}
-
+
public void setCollapseControl(String collapseControl) {
- getStateHelper().put(PropertyKeys.collapseControl, collapseControl);
+ getStateHelper().put(PropertyKeys.collapseControl, collapseControl);
}
-
- public String getForId(){
- return (String)getStateHelper().eval(PropertyKeys.forId, null);
+
+ public String getForId() {
+ return (String) getStateHelper().eval(PropertyKeys.forId, null);
}
-
+
public void setForId(String forId) {
- getStateHelper().put(PropertyKeys.forId, forId);
+ getStateHelper().put(PropertyKeys.forId, forId);
}
-
+
public String getEvent() {
- return (String)getStateHelper().eval(PropertyKeys.event, "onclick");
-
+ return (String) getStateHelper().eval(PropertyKeys.event, "onclick");
+
}
-
+
public void setEvent(String event) {
- getStateHelper().put(PropertyKeys.event, event);
+ getStateHelper().put(PropertyKeys.event, event);
}
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlColumn.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlColumn.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlColumn.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -6,90 +6,97 @@
import org.richfaces.model.Ordering;
public class HtmlColumn extends UIColumn {
-
+
enum PropertyKeys {
- breakBefore, rowspan, colspan
+ breakBefore, rowspan, colspan
}
-
- public static final String COMPONENT_TYPE = "org.richfaces.Column";
+
+ public static final String COMPONENT_TYPE = "org.richfaces.Column";
public static final String COMPONENT_FAMILY = "org.richfaces.Column";
-
-
- public void setBreakBefore(boolean breakBefore) {
- getStateHelper().put(PropertyKeys.breakBefore, Boolean.valueOf(breakBefore));
- }
-
- public boolean isBreakBefore() {
- Boolean breakBefore = ((Boolean)getStateHelper().eval(PropertyKeys.breakBefore, Boolean.FALSE));
- return breakBefore.booleanValue();
- }
-
- public int getColspan(){
- Integer colspan = (Integer)getStateHelper().eval(PropertyKeys.colspan, Integer.MIN_VALUE);
- return colspan.intValue();
- }
-
- public void setColspan(int colspan) {
- getStateHelper().put(PropertyKeys.colspan, Integer.valueOf(colspan));
- }
-
- public int getRowspan(){
- Integer rowspan = (Integer)getStateHelper().eval(PropertyKeys.rowspan, Integer.MIN_VALUE);
- return rowspan.intValue();
- }
-
- public void setRowspan(int rowspan) {
- getStateHelper().put(PropertyKeys.rowspan, Integer.valueOf(rowspan));
- }
-
-
+ public void setBreakBefore(boolean breakBefore) {
+ getStateHelper().put(PropertyKeys.breakBefore, Boolean.valueOf(breakBefore));
+ }
+
+ public boolean isBreakBefore() {
+ Boolean breakBefore = ((Boolean) getStateHelper().eval(PropertyKeys.breakBefore, Boolean.FALSE));
+ return breakBefore.booleanValue();
+ }
+
+ public int getColspan() {
+ Integer colspan = (Integer) getStateHelper().eval(PropertyKeys.colspan, Integer.MIN_VALUE);
+ return colspan.intValue();
+ }
+
+ public void setColspan(int colspan) {
+ getStateHelper().put(PropertyKeys.colspan, Integer.valueOf(colspan));
+ }
+
+ public int getRowspan() {
+ Integer rowspan = (Integer) getStateHelper().eval(PropertyKeys.rowspan, Integer.MIN_VALUE);
+ return rowspan.intValue();
+ }
+
+ public void setRowspan(int rowspan) {
+ getStateHelper().put(PropertyKeys.rowspan, Integer.valueOf(rowspan));
+ }
+
public MethodExpression getFilterMethod() {
- // TODO Auto-generated method stub
- return null;
- }
- public String getFilterValue() {
- return null;
- }
- public String getSortExpression() {
- // TODO Auto-generated method stub
- return null;
- }
- public Ordering getSortOrder() {
- // TODO Auto-generated method stub
- return null;
- }
+ // TODO Auto-generated method stub
+ return null;
+ }
- public boolean isSelfSorted() {
- // TODO Auto-generated method stub
- return false;
- }
- public boolean isSortable() {
- // TODO Auto-generated method stub
- return false;
- }
- public void setFilterMethod(MethodExpression methodExpression) {
- // TODO Auto-generated method stub
-
- }
- public void setFilterValue(String filterValue) {
- // TODO Auto-generated method stub
-
- }
- public void setSelfSorted(boolean selfSorted) {
- // TODO Auto-generated method stub
-
- }
- public void setSortExpression(String sortExpression) {
- // TODO Auto-generated method stub
-
- }
- public void setSortOrder(Ordering sortOrder) {
- // TODO Auto-generated method stub
-
- }
- public void setSortable(boolean sortable) {
- // TODO Auto-generated method stub
- }
-
+ public String getFilterValue() {
+ return null;
+ }
+
+ public String getSortExpression() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public Ordering getSortOrder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public boolean isSelfSorted() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean isSortable() {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public void setFilterMethod(MethodExpression methodExpression) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void setFilterValue(String filterValue) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void setSelfSorted(boolean selfSorted) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void setSortExpression(String sortExpression) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void setSortOrder(Ordering sortOrder) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void setSortable(boolean sortable) {
+ // TODO Auto-generated method stub
+ }
+
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlColumnGroup.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlColumnGroup.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlColumnGroup.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -5,71 +5,71 @@
import org.richfaces.component.UIColumnGroup;
import org.richfaces.model.Ordering;
-public class HtmlColumnGroup extends UIColumnGroup{
+public class HtmlColumnGroup extends UIColumnGroup {
- public MethodExpression getFilterMethod() {
- // TODO Auto-generated method stub
- return null;
- }
+ public MethodExpression getFilterMethod() {
+ // TODO Auto-generated method stub
+ return null;
+ }
- public String getFilterValue() {
- // TODO Auto-generated method stub
- return null;
- }
+ public String getFilterValue() {
+ // TODO Auto-generated method stub
+ return null;
+ }
- public String getSortExpression() {
- // TODO Auto-generated method stub
- return null;
- }
+ public String getSortExpression() {
+ // TODO Auto-generated method stub
+ return null;
+ }
- public Ordering getSortOrder() {
- // TODO Auto-generated method stub
- return null;
- }
+ public Ordering getSortOrder() {
+ // TODO Auto-generated method stub
+ return null;
+ }
- public boolean isSelfSorted() {
- // TODO Auto-generated method stub
- return false;
- }
+ public boolean isSelfSorted() {
+ // TODO Auto-generated method stub
+ return false;
+ }
- public boolean isSortable() {
- // TODO Auto-generated method stub
- return false;
- }
+ public boolean isSortable() {
+ // TODO Auto-generated method stub
+ return false;
+ }
- public void setFilterMethod(MethodExpression methodExpression) {
- // TODO Auto-generated method stub
-
- }
+ public void setFilterMethod(MethodExpression methodExpression) {
+ // TODO Auto-generated method stub
- public void setFilterValue(String filterValue) {
- // TODO Auto-generated method stub
-
- }
+ }
- public void setSelfSorted(boolean selfSorted) {
- // TODO Auto-generated method stub
-
- }
+ public void setFilterValue(String filterValue) {
+ // TODO Auto-generated method stub
- public void setSortExpression(String sortExpression) {
- // TODO Auto-generated method stub
-
- }
+ }
- public void setSortOrder(Ordering sortOrder) {
- // TODO Auto-generated method stub
-
- }
+ public void setSelfSorted(boolean selfSorted) {
+ // TODO Auto-generated method stub
- public void setSortable(boolean sortable) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- public String getFamily() {
- return COMPONENT_FAMILY;
- }
+ }
+ public void setSortExpression(String sortExpression) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void setSortOrder(Ordering sortOrder) {
+ // TODO Auto-generated method stub
+
+ }
+
+ public void setSortable(boolean sortable) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public String getFamily() {
+ return COMPONENT_FAMILY;
+ }
+
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlDataTable.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlDataTable.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlDataTable.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -3,17 +3,17 @@
import org.richfaces.component.UIDataTable;
public class HtmlDataTable extends UIDataTable {
-
+
public static final String COMPONENT_TYPE = "org.richfaces.DataTable";
-
+
public static final String COMPONENT_FAMILY = "org.richfaces.DataTable";
public HtmlDataTable() {
- setRendererType("org.richfaces.DataTableRenderer");
+ setRendererType("org.richfaces.DataTableRenderer");
}
-
+
@Override
public String getFamily() {
- return COMPONENT_FAMILY;
+ return COMPONENT_FAMILY;
}
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlExtendedDataTable.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlExtendedDataTable.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlExtendedDataTable.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -18,21 +18,23 @@
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+ */
package org.richfaces.component.html;
import org.richfaces.component.UIExtendedDataTable;
-public class HtmlExtendedDataTable extends UIExtendedDataTable{
-
- public static final String COMPONENT_TYPE = "org.richfaces.ExtendedDataTable";
-
- private static enum PropertyKeys {style, styleClass, frozenColumns}
-
+public class HtmlExtendedDataTable extends UIExtendedDataTable {
+
+ public static final String COMPONENT_TYPE = "org.richfaces.ExtendedDataTable";
+
+ private static enum PropertyKeys {
+ style, styleClass, frozenColumns
+ }
+
public HtmlExtendedDataTable() {
- setRendererType("org.richfaces.ExtendedDataTableRenderer");
- }
-
+ setRendererType("org.richfaces.ExtendedDataTableRenderer");
+ }
+
public String getStyle() {
return (String) getStateHelper().eval(PropertyKeys.style, "");
}
@@ -48,7 +50,7 @@
public void setStyleClass(String styleClass) {
getStateHelper().put(PropertyKeys.styleClass, styleClass);
}
-
+
public Integer getFrozenColumns() {
return (Integer) getStateHelper().eval(PropertyKeys.frozenColumns, 0);
}
@@ -56,13 +58,13 @@
public void setFrozenColumns(Integer frozenColumns) {
getStateHelper().put(PropertyKeys.frozenColumns, frozenColumns);
}
-//
-// public String getHeight() {
-// return (String) getStateHelper().eval(PropertyKeys.height, "");
-// }
-//
-// public void setHeight(String height) {
-// getStateHelper().put(PropertyKeys.height, height);
-// }
+ //
+ // public String getHeight() {
+ // return (String) getStateHelper().eval(PropertyKeys.height, "");
+ // }
+ //
+ // public void setHeight(String height) {
+ // getStateHelper().put(PropertyKeys.height, height);
+ // }
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlSubTable.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlSubTable.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlSubTable.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -5,46 +5,46 @@
import org.richfaces.component.UISubTable;
import org.richfaces.model.Ordering;
-public class HtmlSubTable extends UISubTable{
+public class HtmlSubTable extends UISubTable {
- public MethodExpression getFilterMethod() {
- return null;
- }
+ public MethodExpression getFilterMethod() {
+ return null;
+ }
- public String getFilterValue() {
- return null;
- }
+ public String getFilterValue() {
+ return null;
+ }
- public Ordering getSortOrder() {
- return null;
- }
+ public Ordering getSortOrder() {
+ return null;
+ }
- public boolean isSelfSorted() {
- return false;
- }
+ public boolean isSelfSorted() {
+ return false;
+ }
- public boolean isSortable() {
- return false;
- }
+ public boolean isSortable() {
+ return false;
+ }
- public void setFilterMethod(MethodExpression methodExpression) {
- }
+ public void setFilterMethod(MethodExpression methodExpression) {
+ }
- public void setFilterValue(String filterValue) {
- }
+ public void setFilterValue(String filterValue) {
+ }
- public void setSelfSorted(boolean selfSorted) {
- }
+ public void setSelfSorted(boolean selfSorted) {
+ }
- public void setSortOrder(Ordering sortOrder) {
- }
+ public void setSortOrder(Ordering sortOrder) {
+ }
- public void setSortable(boolean sortable) {
- }
-
- @Override
- public String getFamily() {
- return COMPONENT_FAMILY;
- }
+ public void setSortable(boolean sortable) {
+ }
+ @Override
+ public String getFamily() {
+ return COMPONENT_FAMILY;
+ }
+
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/state/DataTableState.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/state/DataTableState.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/state/DataTableState.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -12,77 +12,77 @@
/**
* @author Anton Belevich
- *
+ *
*/
public class DataTableState extends RepeatState implements StateHolder {
- private DataTableVisualModel visualModel;
-
- private Map<String, SubTableState> subTableStates = new HashMap<String, SubTableState>();
-
- private int first;
-
- private int rows;
-
- public DataTableState(int first, int rows) {
- this.first = first;
- this.rows = rows;
- }
-
- public void setVisualModel(DataTableVisualModel visualModel) {
- this.visualModel = visualModel;
- }
-
- public DataTableVisualModel getVisualModel() {
- return this.visualModel;
- }
-
- @Override
- public int getFirst() {
- return this.first;
- }
+ private DataTableVisualModel visualModel;
- @Override
- public int getRows() {
- return this.rows;
- }
+ private Map<String, SubTableState> subTableStates = new HashMap<String, SubTableState>();
- public void restoreState(FacesContext context, Object state) {
- Object [] newState = (Object[])state;
- if(newState != null) {
- subTableStates = (Map<String, SubTableState>)newState[0];
- }
- }
-
- public Object saveState(FacesContext context) {
- return new Object [] {subTableStates};
- }
+ private int first;
- public boolean isTransient() {
- return false;
- }
+ private int rows;
- public void setTransient(boolean newTransientValue) {
- }
+ public DataTableState(int first, int rows) {
+ this.first = first;
+ this.rows = rows;
+ }
- public void addSubTableState(SubTableState state) {
- if(state != null) {
- this.subTableStates.put(state.getId(), state);
- }
- }
-
- public SubTableState getSubTableState(String id) {
- return this.subTableStates.get(id);
- }
-
- public void addChildState(DataComponentState childState) {
- if(childState instanceof SubTableState) {
- addSubTableState((SubTableState)childState);
- }
- }
-
- public DataComponentState getChildState(String id) {
- DataComponentState state = getSubTableState(id);
- return state;
- }
+ public void setVisualModel(DataTableVisualModel visualModel) {
+ this.visualModel = visualModel;
+ }
+
+ public DataTableVisualModel getVisualModel() {
+ return this.visualModel;
+ }
+
+ @Override
+ public int getFirst() {
+ return this.first;
+ }
+
+ @Override
+ public int getRows() {
+ return this.rows;
+ }
+
+ public void restoreState(FacesContext context, Object state) {
+ Object[] newState = (Object[]) state;
+ if (newState != null) {
+ subTableStates = (Map<String, SubTableState>) newState[0];
+ }
+ }
+
+ public Object saveState(FacesContext context) {
+ return new Object[] { subTableStates };
+ }
+
+ public boolean isTransient() {
+ return false;
+ }
+
+ public void setTransient(boolean newTransientValue) {
+ }
+
+ public void addSubTableState(SubTableState state) {
+ if (state != null) {
+ this.subTableStates.put(state.getId(), state);
+ }
+ }
+
+ public SubTableState getSubTableState(String id) {
+ return this.subTableStates.get(id);
+ }
+
+ public void addChildState(DataComponentState childState) {
+ if (childState instanceof SubTableState) {
+ addSubTableState((SubTableState) childState);
+ }
+ }
+
+ public DataComponentState getChildState(String id) {
+ DataComponentState state = getSubTableState(id);
+ return state;
+ }
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/state/SubTableState.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/state/SubTableState.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/state/SubTableState.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -10,70 +10,68 @@
/**
* @author Anton Belevich
- *
+ *
*/
public class SubTableState extends RepeatState implements StateHolder, ToggleListener {
-
- private SubTableVisualModel model;
-
- private String id;
-
- private int first;
-
- private int rows;
-
-
- public SubTableState(String id, int first, int rows) {
- this.id = id;
- this.first = first;
- this.rows = rows;
- }
-
- public String getId(){
- return this.id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- @Override
- public int getFirst() {
- return this.first;
- }
-
- @Override
- public int getRows() {
- return this.rows;
- }
-
- public SubTableVisualModel getCurrentRowModel() {
- return this.model;
- }
-
- public void setCurrentRowModel(SubTableVisualModel model) {
- this.model = model;
- }
+ private SubTableVisualModel model;
- public void restoreState(FacesContext context, Object state) {
- Object [] currentState = (Object[]) state;
- this.model = (SubTableVisualModel)currentState[0];
- }
+ private String id;
- public Object saveState(FacesContext context) {
- return new Object [] {this.model};
- }
-
- public boolean isTransient() {
- return false;
- }
-
- public void setTransient(boolean newTransientValue) {
- }
+ private int first;
- public void processToggle(ToggleEvent event) {
- boolean newValue = event.isExpanded();
- this.model.setExpanded(newValue);
- }
+ private int rows;
+
+ public SubTableState(String id, int first, int rows) {
+ this.id = id;
+ this.first = first;
+ this.rows = rows;
+ }
+
+ public String getId() {
+ return this.id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ @Override
+ public int getFirst() {
+ return this.first;
+ }
+
+ @Override
+ public int getRows() {
+ return this.rows;
+ }
+
+ public SubTableVisualModel getCurrentRowModel() {
+ return this.model;
+ }
+
+ public void setCurrentRowModel(SubTableVisualModel model) {
+ this.model = model;
+ }
+
+ public void restoreState(FacesContext context, Object state) {
+ Object[] currentState = (Object[]) state;
+ this.model = (SubTableVisualModel) currentState[0];
+ }
+
+ public Object saveState(FacesContext context) {
+ return new Object[] { this.model };
+ }
+
+ public boolean isTransient() {
+ return false;
+ }
+
+ public void setTransient(boolean newTransientValue) {
+ }
+
+ public void processToggle(ToggleEvent event) {
+ boolean newValue = event.isExpanded();
+ this.model.setExpanded(newValue);
+ }
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/event/ToggleEvent.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/event/ToggleEvent.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/event/ToggleEvent.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -6,31 +6,30 @@
/**
* @author Anton Belevich
- *
+ *
*/
public class ToggleEvent extends FacesEvent {
- private static final long serialVersionUID = 2916560585918250885L;
+ private static final long serialVersionUID = 2916560585918250885L;
- private boolean expanded;
-
-
- public ToggleEvent(UIComponent target, boolean expanded) {
- super(target);
- this.expanded = expanded;
- }
+ private boolean expanded;
- public boolean isExpanded() {
- return this.expanded;
- }
-
- @Override
- public boolean isAppropriateListener(FacesListener listener) {
- return (listener instanceof ToggleListener);
- }
+ public ToggleEvent(UIComponent target, boolean expanded) {
+ super(target);
+ this.expanded = expanded;
+ }
- @Override
- public void processListener(FacesListener listener) {
- ((ToggleListener)listener).processToggle(this);
- }
+ public boolean isExpanded() {
+ return this.expanded;
+ }
+
+ @Override
+ public boolean isAppropriateListener(FacesListener listener) {
+ return (listener instanceof ToggleListener);
+ }
+
+ @Override
+ public void processListener(FacesListener listener) {
+ ((ToggleListener) listener).processToggle(this);
+ }
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/event/ToggleListener.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/event/ToggleListener.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/event/ToggleListener.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -4,10 +4,10 @@
/**
* @author Anton Belevich
- *
+ *
*/
public interface ToggleListener extends FacesListener {
-
- public void processToggle(ToggleEvent event);
+ public void processToggle(ToggleEvent event);
+
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/ColumnVisualModel.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/ColumnVisualModel.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/ColumnVisualModel.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -1,8 +1,15 @@
package org.richfaces.model.visual;
+import org.richfaces.model.Ordering;
+
/**
* @author Anton Belevich
- *
+ *
*/
public interface ColumnVisualModel {
+
+ public void setSortOrdering(Ordering sortOrder);
+
+ public Ordering getSortOder();
+
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/DataTableVisualModel.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/DataTableVisualModel.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/DataTableVisualModel.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -2,7 +2,7 @@
/**
* @author Anton Belevich
- *
+ *
*/
public interface DataTableVisualModel {
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/SubTableVisualModel.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/SubTableVisualModel.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/SubTableVisualModel.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -2,12 +2,12 @@
/**
* @author Anton Belevich
- *
+ *
*/
public interface SubTableVisualModel {
-
- public boolean isExpanded();
-
- public void setExpanded(boolean expand);
-
+
+ public boolean isExpanded();
+
+ public void setExpanded(boolean expand);
+
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/impl/ColumnVisualModelImpl.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/impl/ColumnVisualModelImpl.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/impl/ColumnVisualModelImpl.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -1,12 +1,24 @@
package org.richfaces.model.visual.impl;
+import org.richfaces.model.Ordering;
import org.richfaces.model.visual.ColumnVisualModel;
/**
* @author Anton Belevich
- *
+ *
*/
public class ColumnVisualModelImpl implements ColumnVisualModel {
- public ColumnVisualModelImpl() {
- }
+
+ private Ordering sortOrder;
+
+ public ColumnVisualModelImpl() {
+ }
+
+ public Ordering getSortOder() {
+ return sortOrder;
+ }
+
+ public void setSortOrdering(Ordering sortOrder) {
+ this.sortOrder = sortOrder;
+ }
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/impl/DataTableVisualModelImpl.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/impl/DataTableVisualModelImpl.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/impl/DataTableVisualModelImpl.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -4,10 +4,10 @@
/**
* @author Anton Belevich
- *
+ *
*/
-public class DataTableVisualModelImpl implements DataTableVisualModel {
-
- public DataTableVisualModelImpl() {
- }
+public class DataTableVisualModelImpl implements DataTableVisualModel {
+
+ public DataTableVisualModelImpl() {
+ }
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/impl/SubTableVisualModelImpl.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/impl/SubTableVisualModelImpl.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/model/visual/impl/SubTableVisualModelImpl.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -4,20 +4,20 @@
/**
* @author Anton Belevich
- *
+ *
*/
-public class SubTableVisualModelImpl implements SubTableVisualModel{
+public class SubTableVisualModelImpl implements SubTableVisualModel {
- private boolean expanded;
-
- public SubTableVisualModelImpl() {
- }
-
- public boolean isExpanded() {
- return this.expanded;
- }
+ private boolean expanded;
- public void setExpanded(boolean expanded) {
- this.expanded = expanded;
- }
+ public SubTableVisualModelImpl() {
+ }
+
+ public boolean isExpanded() {
+ return this.expanded;
+ }
+
+ public void setExpanded(boolean expanded) {
+ this.expanded = expanded;
+ }
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/AbstractRowsRenderer.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -36,50 +36,41 @@
*/
public abstract class AbstractRowsRenderer extends RendererBase implements DataVisitor {
/*
- public static final String[][] TABLE_EVENT_ATTRS = {
- //TODO nick - clarify new names for attributes
- {"onclick","onRowClick"},
- {"ondblclick","onRowDblClick"},
- {"onmousemove","onRowMouseMove"},
- {"onmouseup","onRowMouseUp"},
- {"onmousedown","onRowMouseDown"},
- {"onmouseover","onRowMouseOver"},
- {"onmouseout","onRowMouseOut"}
- };
-
+ * public static final String[][] TABLE_EVENT_ATTRS = { //TODO nick - clarify new names for attributes
+ * {"onclick","onRowClick"}, {"ondblclick","onRowDblClick"}, {"onmousemove","onRowMouseMove"},
+ * {"onmouseup","onRowMouseUp"}, {"onmousedown","onRowMouseDown"}, {"onmouseover","onRowMouseOver"},
+ * {"onmouseout","onRowMouseOut"} };
*/
-
- public abstract void encodeRow(RowHolderBase rowHolder) throws IOException;
-
- public DataVisitResult process(FacesContext context, Object rowKey, Object argument) {
- RowHolderBase holder = (RowHolderBase) argument;
- Row row = holder.getRow();
- row.setRowKey(context, rowKey);
- try {
- encodeRow(holder);
- } catch (IOException e) {
- //TODO: seems we need add throws IOException ???
- }
- holder.nextRow();
- return DataVisitResult.CONTINUE;
- }
-
- protected void encodeRows(RowHolderBase rowHolder) throws IOException {
- rowHolder.getRow().walk(rowHolder.getContext(), this, rowHolder);
- }
- public boolean getRendersChildren() {
- return true;
- }
+ public abstract void encodeRow(RowHolderBase rowHolder) throws IOException;
- /*
- protected void encodeRowEvents(FacesContext context, UIDataAdaptor table) throws IOException {
-
- RendererUtils utils2 = getUtils();
- for (int i = 0; i < TABLE_EVENT_ATTRS.length; i++) {
- String[] attrs = TABLE_EVENT_ATTRS[i];
- utils2.encodeAttribute(context, table, attrs[1], attrs[0]);
- }
-
- } */
+ public DataVisitResult process(FacesContext context, Object rowKey, Object argument) {
+ RowHolderBase holder = (RowHolderBase) argument;
+ Row row = holder.getRow();
+ row.setRowKey(context, rowKey);
+ try {
+ encodeRow(holder);
+ } catch (IOException e) {
+ // TODO: seems we need add throws IOException ???
+ }
+ holder.nextRow();
+ return DataVisitResult.CONTINUE;
+ }
+
+ protected void encodeRows(RowHolderBase rowHolder) throws IOException {
+ rowHolder.getRow().walk(rowHolder.getContext(), this, rowHolder);
+ }
+
+ public boolean getRendersChildren() {
+ return true;
+ }
+
+ /*
+ * protected void encodeRowEvents(FacesContext context, UIDataAdaptor table) throws IOException {
+ *
+ * RendererUtils utils2 = getUtils(); for (int i = 0; i < TABLE_EVENT_ATTRS.length; i++) { String[] attrs =
+ * TABLE_EVENT_ATTRS[i]; utils2.encodeAttribute(context, table, attrs[1], attrs[0]); }
+ *
+ * }
+ */
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/AbstractTableRenderer.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -11,101 +11,100 @@
import org.richfaces.component.Row;
import org.richfaces.component.UIDataTableBase;
-
-@ResourceDependencies(value = {
- @ResourceDependency(library = "javax.faces", name = "jsf.js"),
- @ResourceDependency(name = "jquery.js"),
- @ResourceDependency(name = "richfaces.js")
-})
+@ResourceDependencies(value = { @ResourceDependency(library = "javax.faces", name = "jsf.js"),
+ @ResourceDependency(name = "jquery.js"), @ResourceDependency(name = "richfaces.js") })
public abstract class AbstractTableRenderer extends AbstractRowsRenderer {
- public boolean isColumnFacetPresent(UIDataTableBase table, String facetName) {
- Iterator<UIComponent> columns = table.columns();
- boolean result = false;
- while(columns.hasNext() && !result) {
- UIComponent component = columns.next();
- result = (component.isRendered() && null != component.getFacet(facetName));
- }
- return result;
- }
-
- /**
- * Returns true if specified attribute (when present on the column)
- * should generate header even if it is not specified on the table
- * @param table - rendered UIDataTable
- * @param attributeName - attribute name
- * @return true if specified attribute should generate header on the table
- */
- //TODO nick - rename this method
- public boolean isHeaderFactoryColumnAttributePresent(UIDataTableBase table,String attributeName) {
+ public boolean isColumnFacetPresent(UIDataTableBase table, String facetName) {
Iterator<UIComponent> columns = table.columns();
boolean result = false;
while (columns.hasNext() && !result) {
UIComponent component = columns.next();
- result = (component.isRendered() && (null != component.getValueExpression(attributeName)));
+ result = (component.isRendered() && null != component.getFacet(facetName));
}
return result;
}
-
- protected boolean isEncodeHeaders(UIDataTableBase table) {
- return isColumnFacetPresent(table, "header") ||
- isHeaderFactoryColumnAttributePresent(table, "sortBy") ||
- isHeaderFactoryColumnAttributePresent(table, "comparator") ||
- isHeaderFactoryColumnAttributePresent(table, "filterBy");
- }
-
- protected int getColumnsCount(UIDataTableBase table) {
- // check for exact value in component
- Integer span = (Integer) table.getAttributes().get("columns");
- int count = (null != span && span.intValue() != Integer.MIN_VALUE) ? span.intValue() : calculateRowColumns(table.columns());
- return count;
- }
-
- //TODO nick - rename method
- protected int calculateRowColumns(Iterator<UIComponent> col) {
- int count = 0;
- int currentLength = 0;
- while (col.hasNext()) {
- UIComponent component = (UIComponent) col.next();
- if (component.isRendered()) {
- if (component instanceof Row) {
- // Store max calculated value of previsous rows.
- if (currentLength > count) {
- count = currentLength;
- }
- // Calculate number of columns in row.
- currentLength = calculateRowColumns(((Row) component).columns());
- // Store max calculated value
- if (currentLength > count) {
- count = currentLength;
- }
- currentLength = 0;
- } else if (component instanceof Column) {
- Column column = (Column) component;
- // For new row, save length of previsous.
- if (column.isBreakBefore()) {
- if (currentLength > count) {
- count = currentLength;
- }
- currentLength = 0;
- }
- Integer colspan = (Integer) component.getAttributes().get("colspan");
- // Append colspan of this column
- if (null != colspan && colspan.intValue() != Integer.MIN_VALUE) {
- currentLength += colspan.intValue();
- } else {
- currentLength++;
- }
- } else if (component instanceof UIColumn) {
- // UIColumn always have colspan == 1.
- currentLength++;
- }
- }
- }
-
- if (currentLength > count) {
- count = currentLength;
- }
- return count;
- }
+
+ /**
+ * Returns true if specified attribute (when present on the column) should generate header even if it is not
+ * specified on the table
+ *
+ * @param table
+ * - rendered UIDataTable
+ * @param attributeName
+ * - attribute name
+ * @return true if specified attribute should generate header on the table
+ */
+ // TODO nick - rename this method
+ public boolean isHeaderFactoryColumnAttributePresent(UIDataTableBase table, String attributeName) {
+ Iterator<UIComponent> columns = table.columns();
+ boolean result = false;
+ while (columns.hasNext() && !result) {
+ UIComponent component = columns.next();
+ result = (component.isRendered() && (null != component.getValueExpression(attributeName)));
+ }
+ return result;
+ }
+
+ protected boolean isEncodeHeaders(UIDataTableBase table) {
+ return isColumnFacetPresent(table, "header") || isHeaderFactoryColumnAttributePresent(table, "sortBy")
+ || isHeaderFactoryColumnAttributePresent(table, "comparator")
+ || isHeaderFactoryColumnAttributePresent(table, "filterBy");
+ }
+
+ protected int getColumnsCount(UIDataTableBase table) {
+ // check for exact value in component
+ Integer span = (Integer) table.getAttributes().get("columns");
+ int count = (null != span && span.intValue() != Integer.MIN_VALUE) ? span.intValue()
+ : calculateRowColumns(table.columns());
+ return count;
+ }
+
+ // TODO nick - rename method
+ protected int calculateRowColumns(Iterator<UIComponent> col) {
+ int count = 0;
+ int currentLength = 0;
+ while (col.hasNext()) {
+ UIComponent component = (UIComponent) col.next();
+ if (component.isRendered()) {
+ if (component instanceof Row) {
+ // Store max calculated value of previsous rows.
+ if (currentLength > count) {
+ count = currentLength;
+ }
+ // Calculate number of columns in row.
+ currentLength = calculateRowColumns(((Row) component).columns());
+ // Store max calculated value
+ if (currentLength > count) {
+ count = currentLength;
+ }
+ currentLength = 0;
+ } else if (component instanceof Column) {
+ Column column = (Column) component;
+ // For new row, save length of previsous.
+ if (column.isBreakBefore()) {
+ if (currentLength > count) {
+ count = currentLength;
+ }
+ currentLength = 0;
+ }
+ Integer colspan = (Integer) component.getAttributes().get("colspan");
+ // Append colspan of this column
+ if (null != colspan && colspan.intValue() != Integer.MIN_VALUE) {
+ currentLength += colspan.intValue();
+ } else {
+ currentLength++;
+ }
+ } else if (component instanceof UIColumn) {
+ // UIColumn always have colspan == 1.
+ currentLength++;
+ }
+ }
+ }
+
+ if (currentLength > count) {
+ count = currentLength;
+ }
+ return count;
+ }
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/DataTableRenderer.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -16,598 +16,603 @@
import org.richfaces.component.UIDataTable;
import org.richfaces.component.UISubTable;
-@ResourceDependencies( {
- @ResourceDependency(library = "javax.faces", name = "jsf-uncompressed.js"),
- @ResourceDependency(name = "jquery.js"),
- @ResourceDependency(name = "richfaces.js"),
- @ResourceDependency(name = "datatable.js"),
- @ResourceDependency(name = "table.css")
-})
-public class DataTableRenderer extends AbstractTableRenderer implements ElementEncodeListener{
-
- @Override
- protected void doDecode(FacesContext context, UIComponent component) {
- System.out.println("DataTableRenderer.doDecode()");
- }
-
- protected void encodeTableStructure(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException {
-
- Object key = dataTable.getRowKey();
- dataTable.captureOrigValue(context);
- dataTable.setRowKey(context, null);
-
- if(dataTable instanceof UIDataTable) {
- encodeCaption(writer, context, (UIDataTable)dataTable);
- //TODO nick - do we need this element if "columnsWidth" is absent?
- //TODO nick - use constants from HTML class for attribute/element names
- writer.startElement("colgroup", dataTable);
- int columns = getColumnsCount(dataTable);
+@ResourceDependencies( { @ResourceDependency(library = "javax.faces", name = "jsf-uncompressed.js"),
+ @ResourceDependency(name = "jquery.js"), @ResourceDependency(name = "richfaces.js"),
+ @ResourceDependency(name = "datatable.js"), @ResourceDependency(name = "table.css") })
+public class DataTableRenderer extends AbstractTableRenderer implements ElementEncodeListener {
- writer.writeAttribute(HTML.SPAN_ELEM, String.valueOf(columns), null);
- String columnsWidth = (String) dataTable.getAttributes().get("columnsWidth");
+ @Override
+ protected void doDecode(FacesContext context, UIComponent component) {
+ System.out.println("DataTableRenderer.doDecode()");
+ }
- if (null != columnsWidth) {
- String[] widths = columnsWidth.split(",");
- for (int i = 0; i < widths.length; i++) {
- writer.startElement("col", dataTable);
- writer.writeAttribute("width", widths[i], null);
- writer.endElement("col");
- }
- }
- writer.endElement("colgroup");
-
- }
+ protected void encodeTableStructure(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable)
+ throws IOException {
- encodeHeader(writer, context, dataTable);
- encodeFooter(writer, context, dataTable);
+ Object key = dataTable.getRowKey();
+ dataTable.captureOrigValue(context);
+ dataTable.setRowKey(context, null);
- dataTable.setRowKey(context, key);
- dataTable.restoreOrigValue(context);
- }
-
-
- public void encodeRows(FacesContext context, UIDataTableBase dataTable) throws IOException {
-
- RowHolder holder = new RowHolder(context, dataTable);
- holder.setCellClass(dataTable.getCellSkinClass());
- holder.setRowClass(dataTable.getRowSkinClass());
- holder.setFirstRowClass(dataTable.getFirstRowSkinClass());
- holder.setHeaderRow(false);
- holder.setCellElement(HTML.TD_ELEM);
-
- encodeRows(holder);
- }
- //TODO: refactor
- public void encodeRow(RowHolderBase holder) throws IOException {
- FacesContext context = holder.getContext();
- RowHolder rowHolder = (RowHolder) holder;
- boolean rowStart = true;
- boolean bodyStart = false;
-
-
- int processCell = 0;
-
- Row row = rowHolder.getRow();
- int processRow = rowHolder.getCurrentRow();
-
- ResponseWriter writer = context.getResponseWriter();
-
- if(rowHolder.isDataTable()) {
- encodeTableBodyStart(writer, context, (UIDataTable)row);
- bodyStart = true;
- }
-
- Iterator<UIComponent> iterator = row.columns();
- while(iterator.hasNext()) {
-
- UIComponent child = iterator.next();
- if(child instanceof Row) {
-
- Row childRow = (Row)child;
- RowHolder childRowHolder = new RowHolder(context, childRow);
- childRowHolder.setCurrentRow(processRow);
- childRowHolder.setCellElement(rowHolder.getCellElement());
-
- if(rowHolder.isHeaderRow()) {
- childRowHolder.setRowClass(rowHolder.getRowClass());
- childRowHolder.setFirstRowClass(rowHolder.getFirstRowClass());
- childRowHolder.setCellClass(rowHolder.getCellClass());
- childRowHolder.setCellElement(HTML.TH_ELEM);
- } else {
- childRowHolder.setRowClass(childRow.getRowSkinClass());
- childRowHolder.setFirstRowClass(childRow.getFirstRowSkinClass());
- childRowHolder.setCellClass(childRow.getCellSkinClass());
- childRowHolder.setCellElement(HTML.TD_ELEM);
- }
- childRowHolder.setHeaderRow(rowHolder.isHeaderRow());
-
- if(child instanceof UISubTable) {
- //ecode subTable header facet
- UISubTable subTable = (UISubTable)child;
-
- if(bodyStart) {
- encodeTableBodyEnd(writer, context, (UIDataTableBase)row);
- bodyStart = false;
- }
-// subTable.setRowKey(childRowHolder.getCurrentRow());
-
-/* Object key = subTable.getRowKey();
- subTable.captureOrigValue(context);
- subTable.setRowKey(context, null); */
+ if (dataTable instanceof UIDataTable) {
+ encodeCaption(writer, context, (UIDataTable) dataTable);
+ // TODO nick - do we need this element if "columnsWidth" is absent?
+ // TODO nick - use constants from HTML class for attribute/element names
+ writer.startElement("colgroup", dataTable);
+ int columns = getColumnsCount(dataTable);
-
- encodeTableBodyStart(writer, context, subTable);
- encodeHeader(writer, context, subTable);
-
- encodeRows(childRowHolder);
-
- encodeFooter(writer, context, subTable);
-
-/* subTable.setRowKey(context, key);
- subTable.restoreOrigValue(context); */
+ writer.writeAttribute(HTML.SPAN_ELEM, String.valueOf(columns), null);
+ String columnsWidth = (String) dataTable.getAttributes().get("columnsWidth");
-// encodeHiddenInput(context, writer, subTable);
+ if (null != columnsWidth) {
+ String[] widths = columnsWidth.split(",");
+ for (int i = 0; i < widths.length; i++) {
+ writer.startElement("col", dataTable);
+ writer.writeAttribute("width", widths[i], null);
+ writer.endElement("col");
+ }
+ }
+ writer.endElement("colgroup");
- encodeTableBodyEnd(writer, context, subTable);
-
- bodyStart = false;
- if(iterator.hasNext()) {
- encodeTableBodyStart(writer, context, (UIDataTableBase)row);
- bodyStart=true;
- }
-
- } else {
- encodeRows(childRowHolder);
- }
-
- } else if(child instanceof UIColumn) {
-
- if(child instanceof org.richfaces.component.UIColumn) {
- org.richfaces.component.UIColumn column = (org.richfaces.component.UIColumn)child;
- if(column.isBreakBefore() && processCell !=0) {
- encodeRowEnd(writer, context, column);
- rowHolder.nextRow();
- rowStart = true;
- }
- }
-
- if(rowStart) {
- if(processRow == 0) {
- encodeFirstRowStart(writer, context, child, rowHolder);
- } else {
- encodeRowStart(writer, context, child, rowHolder);
- }
-
- rowStart = false;
- }
-
- encodeCellStart(writer, context, child, rowHolder);
- encodeCellEnd(writer, context, child, rowHolder);
-
- if(!iterator.hasNext()) {
- if(processRow == 0) {
- encodeFirstRowEnd(writer, context, child);
- } else {
- encodeRowEnd(writer, context, child);
- }
- }
- processCell++;
- }
- }
-
- if(bodyStart && rowHolder.isDataTable()) {
- encodeTableBodyEnd(writer, context, (UIDataTableBase) row);
- }
- }
-/*
- public void encodeHiddenInput(FacesContext context, ResponseWriter writer, UIDataTableBase dataTable) throws IOException {
-
- String hiddenId = dataTable.getClientId(context) + ":" + "hidden";
-
- writer.startElement(HTML.INPUT_ELEM, dataTable);
- writer.writeAttribute(HTML.ID_ATTRIBUTE, hiddenId, null);
- writer.writeAttribute(HTML.TYPE_ATTR,"hidden", null);
- writer.endElement(HTML.INPUT_ELEM);
-
- } */
-
- @Override
- protected void doEncodeBegin(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException {
- if(!shouldProceed(component)) {
- return;
- }
- UIDataTableBase dataTable = (UIDataTableBase)component;
- encodeTableStart(writer,context, dataTable);
- encodeTableStructure(writer, context, dataTable);
- }
-
- @Override
- protected void doEncodeChildren(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException {
-
- if(!shouldProceed(component)) {
- return;
- }
-
- UIDataTableBase dataTable = (UIDataTableBase)component;
-// encodeTableBodyStart(writer, context, dataTable);
- encodeRows(context, dataTable);
-// encodeTableBodyEnd(writer, context, dataTable);
-
- }
-
- @Override
- protected void doEncodeEnd(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException {
-
- if(!shouldProceed(component)) {
- return;
- }
-
- UIDataTableBase dataTable = (UIDataTableBase)component;
- encodeTableEnd(writer, context, dataTable);
- }
-
- protected boolean shouldProceed(UIComponent component) {
- return (component instanceof UIDataTableBase);
- }
+ }
- @Override
- protected Class<? extends UIComponent> getComponentClass() {
- return UIDataTable.class;
- }
+ encodeHeader(writer, context, dataTable);
+ encodeFooter(writer, context, dataTable);
- public void encodeCellEnd(ResponseWriter writer, FacesContext context, UIComponent component, RowHolder holder) throws IOException {
- writer.endElement(holder.getCellElement());
- }
+ dataTable.setRowKey(context, key);
+ dataTable.restoreOrigValue(context);
+ }
- public void encodeCellStart(ResponseWriter writer, FacesContext context, UIComponent component, RowHolder holder) throws IOException {
- //anton - TODO: scope attribute
- writer.startElement(holder.getCellElement(), component);
- String cellClass = holder.getCellClass();
- encodeStyleClass(writer, context, component, HTML.STYLE_CLASS_ATTR, cellClass);
-
- if(component instanceof org.richfaces.component.UIColumn) {
- org.richfaces.component.UIColumn column = (org.richfaces.component.UIColumn)component;
-
- int rowspan = column.getRowspan();
- if(rowspan != Integer.MIN_VALUE) {
- writer.writeAttribute("rowspan", Integer.valueOf(rowspan), null);
- }
-
- int colspan = column.getColspan();
- if(colspan != Integer.MIN_VALUE) {
- writer.writeAttribute("colspan", Integer.valueOf(colspan), null);
- }
- }
- renderChildren(context, component);
- }
+ public void encodeRows(FacesContext context, UIDataTableBase dataTable) throws IOException {
- public void encodeFirstRowEnd(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException {
- writer.endElement(HTML.TR_ELEMENT);
- }
+ RowHolder holder = new RowHolder(context, dataTable);
+ holder.setCellClass(dataTable.getCellSkinClass());
+ holder.setRowClass(dataTable.getRowSkinClass());
+ holder.setFirstRowClass(dataTable.getFirstRowSkinClass());
+ holder.setHeaderRow(false);
+ holder.setCellElement(HTML.TD_ELEM);
- public void encodeFirstRowStart(ResponseWriter writer, FacesContext context, UIComponent component, RowHolder holder) throws IOException {
- writer.startElement(HTML.TR_ELEMENT, component);
- getUtils().encodeId(context, component);
- String styleClass = holder.getRowClass() + " " + holder.getFirstRowClass();
- encodeStyleClass(writer, context, component, HTML.STYLE_CLASS_ATTR, styleClass);
- }
+ encodeRows(holder);
+ }
- public void encodeRowEnd(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException {
- writer.endElement(HTML.TR_ELEMENT);
- }
+ // TODO: refactor
+ public void encodeRow(RowHolderBase holder) throws IOException {
+ FacesContext context = holder.getContext();
+ RowHolder rowHolder = (RowHolder) holder;
+ boolean rowStart = true;
+ boolean bodyStart = false;
- public void encodeRowStart(ResponseWriter writer, FacesContext context, UIComponent component, RowHolder holder) throws IOException {
- writer.startElement(HTML.TR_ELEMENT, component);
- getUtils().encodeId(context, component);
- String styleClass = holder.getRowClass();
- encodeStyleClass(writer, context, component, HTML.STYLE_CLASS_ATTR, styleClass);
- }
+ int processCell = 0;
- public void encodeTableBodyEnd(ResponseWriter writer, FacesContext context, UIDataTableBase component) throws IOException {
- writer.endElement(HTML.TBOBY_ELEMENT);
- }
+ Row row = rowHolder.getRow();
+ int processRow = rowHolder.getCurrentRow();
- public void encodeTableBodyStart(ResponseWriter writer, FacesContext context, UIDataTableBase component) throws IOException {
- writer.startElement(HTML.TBOBY_ELEMENT, component);
- getUtils().encodeId(context, component);
-
- String predefinedStyles = null;
- if(component instanceof UISubTable) {
- UISubTable subTable = (UISubTable)component;
- if(!subTable.isExpanded()) {
- predefinedStyles = "display: none;";
- }
- }
-
- encodeStyle(writer, context, component, predefinedStyles);
- }
+ ResponseWriter writer = context.getResponseWriter();
- public void encodeTableEnd(ResponseWriter writer, FacesContext context, UIDataTableBase component) throws IOException {
- writer.endElement(HTML.TABLE_ELEMENT);
- }
+ if (rowHolder.isDataTable()) {
+ encodeTableBodyStart(writer, context, (UIDataTable) row);
+ bodyStart = true;
+ }
- public void encodeTableStart(ResponseWriter writer, FacesContext context, UIDataTableBase component) throws IOException {
- writer.startElement(HTML.TABLE_ELEMENT, component);
- String styleClass = getTableSkinClass();
- encodeStyleClass(writer, context, component, HTML.STYLE_CLASS_ATTR, styleClass);
- }
+ Iterator<UIComponent> iterator = row.columns();
+ while (iterator.hasNext()) {
- public void encodeCaption(ResponseWriter writer, FacesContext context, UIDataTable dataTable) throws IOException {
-
- UIComponent caption = dataTable.getCaption();
-
- if (caption == null) {
- return;
- }
-
- if(!caption.isRendered()) {
- return;
- }
-
- writer.startElement(HTML.CAPTION_ELEMENT, dataTable);
+ UIComponent child = iterator.next();
+ if (child instanceof Row) {
- String captionClass = (String) dataTable.getAttributes().get("captionClass");
- String captionSkinClass = getCaptionSkinClass();
- captionClass = captionClass != null ? captionClass + " " + captionClass : captionSkinClass;
-
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, captionClass, "captionClass");
+ Row childRow = (Row) child;
+ RowHolder childRowHolder = new RowHolder(context, childRow);
+ childRowHolder.setCurrentRow(processRow);
+ childRowHolder.setCellElement(rowHolder.getCellElement());
- String captionStyle = (String) dataTable.getAttributes().get("captionStyle");
-
- if (captionStyle != null && captionStyle.trim().length()!=0) {
- writer.writeAttribute(HTML.STYLE_ATTRIBUTE, captionStyle, "captionStyle");
- }
+ if (rowHolder.isHeaderRow()) {
+ childRowHolder.setRowClass(rowHolder.getRowClass());
+ childRowHolder.setFirstRowClass(rowHolder.getFirstRowClass());
+ childRowHolder.setCellClass(rowHolder.getCellClass());
+ childRowHolder.setCellElement(HTML.TH_ELEM);
+ } else {
+ childRowHolder.setRowClass(childRow.getRowSkinClass());
+ childRowHolder.setFirstRowClass(childRow.getFirstRowSkinClass());
+ childRowHolder.setCellClass(childRow.getCellSkinClass());
+ childRowHolder.setCellElement(HTML.TD_ELEM);
+ }
+ childRowHolder.setHeaderRow(rowHolder.isHeaderRow());
- renderChild(context, caption);
-
- writer.endElement(HTML.CAPTION_ELEMENT);
- }
-
- public void encodeFooter(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException {
+ if (child instanceof UISubTable) {
+ // ecode subTable header facet
+ UISubTable subTable = (UISubTable) child;
- Iterator<UIComponent> tableColumns = dataTable.columns();
-
- UIComponent footer = dataTable.getFooter();
- boolean columnFacetPresent = isColumnFacetPresent(dataTable, "footer");
-
- if ((footer != null && footer.isRendered()) || columnFacetPresent) {
- boolean encodeTfoot = (dataTable instanceof UIDataTable);
- String cellElement = HTML.TD_ELEM;
-
- if(encodeTfoot) {
- writer.startElement(HTML.TFOOT_ELEMENT, dataTable);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-table-tfoot", null);
- cellElement = HTML.TH_ELEM;
- }
-
- String footerClass = (String) dataTable.getAttributes().get("footerClass");
- int columns = getColumnsCount(dataTable);
+ if (bodyStart) {
+ encodeTableBodyEnd(writer, context, (UIDataTableBase) row);
+ bodyStart = false;
+ }
+ // subTable.setRowKey(childRowHolder.getCurrentRow());
- if (columnFacetPresent) {
- writer.startElement(HTML.TR_ELEMENT, dataTable);
-
- encodeStyleClass(writer, context, dataTable, "footerClass", dataTable.getColumnFooterSkinClass());
- //TODO nick - rename method "encodeHeaderFacets"
- encodeHeaderFacets(context, writer, tableColumns, dataTable.getColumnFooterCellSkinClass(),
- footerClass, "footer", cellElement, columns);
- writer.endElement(HTML.TR_ELEMENT);
- }
-
- if (footer != null && footer.isRendered()) {
- //TODO nick - rename method "encodeTableHeaderFacet"
- encodeTableHeaderFacet(context, columns, writer, footer,
- dataTable.getFooterFirstRowSkinClass(),
- dataTable.getFooterRowSkinClass(),
- dataTable.getFooterCellSkinClass(),
- footerClass, cellElement);
- }
-
- if(encodeTfoot) {
- writer.endElement(HTML.TFOOT_ELEMENT);
- }
- }
-
- }
+ /*
+ * Object key = subTable.getRowKey(); subTable.captureOrigValue(context);
+ * subTable.setRowKey(context, null);
+ */
- public void encodeHeader(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException {
-
- UIComponent header = dataTable.getHeader();
- boolean isEncodeHeaders = isEncodeHeaders(dataTable);
-
- boolean encodeThead = (dataTable instanceof UIDataTable);
-
- if ((header != null && header.isRendered()) || isEncodeHeaders) {
-
- String cellElement = HTML.TD_ELEM;
-
- if(encodeThead) {
- writer.startElement(HTML.THEAD_ELEMENT, dataTable);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-table-thead", null);
- cellElement = HTML.TH_ELEM;
-
- }
- // TODO anton - maybe we should have separate css class for column header???
- String headerClass = (String) dataTable.getAttributes().get("headerClass");
+ encodeTableBodyStart(writer, context, subTable);
+ encodeHeader(writer, context, subTable);
- int columns = getColumnsCount(dataTable);
+ encodeRows(childRowHolder);
- if (header != null && header.isRendered()) {
-
- encodeTableHeaderFacet(context, columns, writer, header,
- dataTable.getHeaderFirstRowSkinClass(),
- dataTable.getHeaderRowSkinClass(),
- dataTable.getHeaderCellSkinClass(),
-// "rich-table-header",
- //TODO nick - rename classes!!!
-// "rich-table-header-continue",
-// "rich-table-headercell",
- headerClass, cellElement);
- }
+ encodeFooter(writer, context, subTable);
- if (isEncodeHeaders) {
- writer.startElement(HTML.TR_ELEMENT, dataTable);
- encodeStyleClass(writer, context, dataTable, "headerClass", dataTable.getColumnHeaderSkinClass());//"rich-table-subheader");
- encodeHeaderFacets(context, writer, dataTable.columns(), dataTable.getColumnHeaderCellSkinClass()/*"rich-table-subheadercell"*/, headerClass, "header", cellElement, columns);
- writer.endElement(HTML.TR_ELEMENT);
- }
-
- if(encodeThead) {
- writer.endElement(HTML.THEAD_ELEMENT);
- }
- }
-
- }
-
+ /*
+ * subTable.setRowKey(context, key); subTable.restoreOrigValue(context);
+ */
+
+ // encodeHiddenInput(context, writer, subTable);
+ encodeTableBodyEnd(writer, context, subTable);
+
+ bodyStart = false;
+ if (iterator.hasNext()) {
+ encodeTableBodyStart(writer, context, (UIDataTableBase) row);
+ bodyStart = true;
+ }
+
+ } else {
+ encodeRows(childRowHolder);
+ }
+
+ } else if (child instanceof UIColumn) {
+
+ if (child instanceof org.richfaces.component.UIColumn) {
+ org.richfaces.component.UIColumn column = (org.richfaces.component.UIColumn) child;
+ if (column.isBreakBefore() && processCell != 0) {
+ encodeRowEnd(writer, context, column);
+ rowHolder.nextRow();
+ rowStart = true;
+ }
+ }
+
+ if (rowStart) {
+ if (processRow == 0) {
+ encodeFirstRowStart(writer, context, child, rowHolder);
+ } else {
+ encodeRowStart(writer, context, child, rowHolder);
+ }
+
+ rowStart = false;
+ }
+
+ encodeCellStart(writer, context, child, rowHolder);
+ encodeCellEnd(writer, context, child, rowHolder);
+
+ if (!iterator.hasNext()) {
+ if (processRow == 0) {
+ encodeFirstRowEnd(writer, context, child);
+ } else {
+ encodeRowEnd(writer, context, child);
+ }
+ }
+ processCell++;
+ }
+ }
+
+ if (bodyStart && rowHolder.isDataTable()) {
+ encodeTableBodyEnd(writer, context, (UIDataTableBase) row);
+ }
+ }
+
+ /*
+ * public void encodeHiddenInput(FacesContext context, ResponseWriter writer, UIDataTableBase dataTable) throws
+ * IOException {
+ *
+ * String hiddenId = dataTable.getClientId(context) + ":" + "hidden";
+ *
+ * writer.startElement(HTML.INPUT_ELEM, dataTable); writer.writeAttribute(HTML.ID_ATTRIBUTE, hiddenId, null);
+ * writer.writeAttribute(HTML.TYPE_ATTR,"hidden", null); writer.endElement(HTML.INPUT_ELEM);
+ *
+ * }
+ */
+
+ @Override
+ protected void doEncodeBegin(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException {
+ if (!shouldProceed(component)) {
+ return;
+ }
+ UIDataTableBase dataTable = (UIDataTableBase) component;
+ encodeTableStart(writer, context, dataTable);
+ encodeTableStructure(writer, context, dataTable);
+ }
+
+ @Override
+ protected void doEncodeChildren(ResponseWriter writer, FacesContext context, UIComponent component)
+ throws IOException {
+
+ if (!shouldProceed(component)) {
+ return;
+ }
+
+ UIDataTableBase dataTable = (UIDataTableBase) component;
+ // encodeTableBodyStart(writer, context, dataTable);
+ encodeRows(context, dataTable);
+ // encodeTableBodyEnd(writer, context, dataTable);
+
+ }
+
+ @Override
+ protected void doEncodeEnd(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException {
+
+ if (!shouldProceed(component)) {
+ return;
+ }
+
+ UIDataTableBase dataTable = (UIDataTableBase) component;
+ encodeTableEnd(writer, context, dataTable);
+ }
+
+ protected boolean shouldProceed(UIComponent component) {
+ return (component instanceof UIDataTableBase);
+ }
+
+ @Override
+ protected Class<? extends UIComponent> getComponentClass() {
+ return UIDataTable.class;
+ }
+
+ public void encodeCellEnd(ResponseWriter writer, FacesContext context, UIComponent component, RowHolder holder)
+ throws IOException {
+ writer.endElement(holder.getCellElement());
+ }
+
+ public void encodeCellStart(ResponseWriter writer, FacesContext context, UIComponent component, RowHolder holder)
+ throws IOException {
+ // anton - TODO: scope attribute
+ writer.startElement(holder.getCellElement(), component);
+ String cellClass = holder.getCellClass();
+ encodeStyleClass(writer, context, component, HTML.STYLE_CLASS_ATTR, cellClass);
+
+ if (component instanceof org.richfaces.component.UIColumn) {
+ org.richfaces.component.UIColumn column = (org.richfaces.component.UIColumn) component;
+
+ int rowspan = column.getRowspan();
+ if (rowspan != Integer.MIN_VALUE) {
+ writer.writeAttribute("rowspan", Integer.valueOf(rowspan), null);
+ }
+
+ int colspan = column.getColspan();
+ if (colspan != Integer.MIN_VALUE) {
+ writer.writeAttribute("colspan", Integer.valueOf(colspan), null);
+ }
+ }
+ renderChildren(context, component);
+ }
+
+ public void encodeFirstRowEnd(ResponseWriter writer, FacesContext context, UIComponent component)
+ throws IOException {
+ writer.endElement(HTML.TR_ELEMENT);
+ }
+
+ public void encodeFirstRowStart(ResponseWriter writer, FacesContext context, UIComponent component, RowHolder holder)
+ throws IOException {
+ writer.startElement(HTML.TR_ELEMENT, component);
+ getUtils().encodeId(context, component);
+ String styleClass = holder.getRowClass() + " " + holder.getFirstRowClass();
+ encodeStyleClass(writer, context, component, HTML.STYLE_CLASS_ATTR, styleClass);
+ }
+
+ public void encodeRowEnd(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException {
+ writer.endElement(HTML.TR_ELEMENT);
+ }
+
+ public void encodeRowStart(ResponseWriter writer, FacesContext context, UIComponent component, RowHolder holder)
+ throws IOException {
+ writer.startElement(HTML.TR_ELEMENT, component);
+ getUtils().encodeId(context, component);
+ String styleClass = holder.getRowClass();
+ encodeStyleClass(writer, context, component, HTML.STYLE_CLASS_ATTR, styleClass);
+ }
+
+ public void encodeTableBodyEnd(ResponseWriter writer, FacesContext context, UIDataTableBase component)
+ throws IOException {
+ writer.endElement(HTML.TBOBY_ELEMENT);
+ }
+
+ public void encodeTableBodyStart(ResponseWriter writer, FacesContext context, UIDataTableBase component)
+ throws IOException {
+ writer.startElement(HTML.TBOBY_ELEMENT, component);
+ getUtils().encodeId(context, component);
+
+ String predefinedStyles = null;
+ if (component instanceof UISubTable) {
+ UISubTable subTable = (UISubTable) component;
+ if (!subTable.isExpanded()) {
+ predefinedStyles = "display: none;";
+ }
+ }
+
+ encodeStyle(writer, context, component, predefinedStyles);
+ }
+
+ public void encodeTableEnd(ResponseWriter writer, FacesContext context, UIDataTableBase component)
+ throws IOException {
+ writer.endElement(HTML.TABLE_ELEMENT);
+ }
+
+ public void encodeTableStart(ResponseWriter writer, FacesContext context, UIDataTableBase component)
+ throws IOException {
+ writer.startElement(HTML.TABLE_ELEMENT, component);
+ String styleClass = getTableSkinClass();
+ encodeStyleClass(writer, context, component, HTML.STYLE_CLASS_ATTR, styleClass);
+ }
+
+ public void encodeCaption(ResponseWriter writer, FacesContext context, UIDataTable dataTable) throws IOException {
+
+ UIComponent caption = dataTable.getCaption();
+
+ if (caption == null) {
+ return;
+ }
+
+ if (!caption.isRendered()) {
+ return;
+ }
+
+ writer.startElement(HTML.CAPTION_ELEMENT, dataTable);
+
+ String captionClass = (String) dataTable.getAttributes().get("captionClass");
+ String captionSkinClass = getCaptionSkinClass();
+ captionClass = captionClass != null ? captionClass + " " + captionClass : captionSkinClass;
+
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, captionClass, "captionClass");
+
+ String captionStyle = (String) dataTable.getAttributes().get("captionStyle");
+
+ if (captionStyle != null && captionStyle.trim().length() != 0) {
+ writer.writeAttribute(HTML.STYLE_ATTRIBUTE, captionStyle, "captionStyle");
+ }
+
+ renderChild(context, caption);
+
+ writer.endElement(HTML.CAPTION_ELEMENT);
+ }
+
+ public void encodeFooter(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException {
+
+ Iterator<UIComponent> tableColumns = dataTable.columns();
+
+ UIComponent footer = dataTable.getFooter();
+ boolean columnFacetPresent = isColumnFacetPresent(dataTable, "footer");
+
+ if ((footer != null && footer.isRendered()) || columnFacetPresent) {
+ boolean encodeTfoot = (dataTable instanceof UIDataTable);
+ String cellElement = HTML.TD_ELEM;
+
+ if (encodeTfoot) {
+ writer.startElement(HTML.TFOOT_ELEMENT, dataTable);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-table-tfoot", null);
+ cellElement = HTML.TH_ELEM;
+ }
+
+ String footerClass = (String) dataTable.getAttributes().get("footerClass");
+ int columns = getColumnsCount(dataTable);
+
+ if (columnFacetPresent) {
+ writer.startElement(HTML.TR_ELEMENT, dataTable);
+
+ encodeStyleClass(writer, context, dataTable, "footerClass", dataTable.getColumnFooterSkinClass());
+ // TODO nick - rename method "encodeHeaderFacets"
+ encodeHeaderFacets(context, writer, tableColumns, dataTable.getColumnFooterCellSkinClass(),
+ footerClass, "footer", cellElement, columns);
+ writer.endElement(HTML.TR_ELEMENT);
+ }
+
+ if (footer != null && footer.isRendered()) {
+ // TODO nick - rename method "encodeTableHeaderFacet"
+ encodeTableHeaderFacet(context, columns, writer, footer, dataTable.getFooterFirstRowSkinClass(),
+ dataTable.getFooterRowSkinClass(), dataTable.getFooterCellSkinClass(), footerClass, cellElement);
+ }
+
+ if (encodeTfoot) {
+ writer.endElement(HTML.TFOOT_ELEMENT);
+ }
+ }
+
+ }
+
+ public void encodeHeader(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException {
+
+ UIComponent header = dataTable.getHeader();
+ boolean isEncodeHeaders = isEncodeHeaders(dataTable);
+
+ boolean encodeThead = (dataTable instanceof UIDataTable);
+
+ if ((header != null && header.isRendered()) || isEncodeHeaders) {
+
+ String cellElement = HTML.TD_ELEM;
+
+ if (encodeThead) {
+ writer.startElement(HTML.THEAD_ELEMENT, dataTable);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-table-thead", null);
+ cellElement = HTML.TH_ELEM;
+
+ }
+ // TODO anton - maybe we should have separate css class for column header???
+ String headerClass = (String) dataTable.getAttributes().get("headerClass");
+
+ int columns = getColumnsCount(dataTable);
+
+ if (header != null && header.isRendered()) {
+
+ encodeTableHeaderFacet(context, columns, writer, header, dataTable.getHeaderFirstRowSkinClass(),
+ dataTable.getHeaderRowSkinClass(), dataTable.getHeaderCellSkinClass(),
+ // "rich-table-header",
+ // TODO nick - rename classes!!!
+ // "rich-table-header-continue",
+ // "rich-table-headercell",
+ headerClass, cellElement);
+ }
+
+ if (isEncodeHeaders) {
+ writer.startElement(HTML.TR_ELEMENT, dataTable);
+ encodeStyleClass(writer, context, dataTable, "headerClass", dataTable.getColumnHeaderSkinClass());// "rich-table-subheader");
+ encodeHeaderFacets(context, writer, dataTable.columns(),
+ dataTable.getColumnHeaderCellSkinClass()/* "rich-table-subheadercell" */, headerClass, "header",
+ cellElement, columns);
+ writer.endElement(HTML.TR_ELEMENT);
+ }
+
+ if (encodeThead) {
+ writer.endElement(HTML.THEAD_ELEMENT);
+ }
+ }
+
+ }
+
protected void encodeTableHeaderFacet(FacesContext context, int columns, ResponseWriter writer, UIComponent footer,
- String skinFirstRowClass, String skinRowClass, String skinCellClass, String footerClass, String element)
- throws IOException {
-
- if(footer instanceof Row) {
- Row row = (Row)footer;
-
- RowHolder holder = new RowHolder(context, row);
- holder.setCellElement(element);
- holder.setFirstRowClass(skinFirstRowClass);
- holder.setRowClass(skinRowClass);
- holder.setCellClass(skinCellClass);
- //holder.resetCurrentRow();
- holder.setHeaderRow(true);
-
- encodeRows(holder);
-
- } else {
- writer.startElement(HTML.TR_ELEMENT, footer);
-
- String rowClass = skinFirstRowClass;
- String cellClass = skinCellClass;
- if(footerClass != null && footerClass.trim().length()!=0) {
- rowClass = rowClass + " " + footerClass;
- cellClass = cellClass + " " + footerClass;
- }
-
- encodeStyleClass(writer, context, footer, null, rowClass);
-
- writer.startElement(element, footer);
-
- encodeStyleClass(writer, context, footer, null, cellClass);
-
- if(columns > 0) {
- writer.writeAttribute("colspan", String.valueOf(columns), null);
- }
-
- writer.writeAttribute("scope", "colgroup", null);
-
- renderChild(context, footer);
-
- writer.endElement(element);
- writer.endElement(HTML.TR_ELEMENT);
- }
+ String skinFirstRowClass, String skinRowClass, String skinCellClass, String footerClass, String element)
+ throws IOException {
+
+ if (footer instanceof Row) {
+ Row row = (Row) footer;
+
+ RowHolder holder = new RowHolder(context, row);
+ holder.setCellElement(element);
+ holder.setFirstRowClass(skinFirstRowClass);
+ holder.setRowClass(skinRowClass);
+ holder.setCellClass(skinCellClass);
+ // holder.resetCurrentRow();
+ holder.setHeaderRow(true);
+
+ encodeRows(holder);
+
+ } else {
+ writer.startElement(HTML.TR_ELEMENT, footer);
+
+ String rowClass = skinFirstRowClass;
+ String cellClass = skinCellClass;
+ if (footerClass != null && footerClass.trim().length() != 0) {
+ rowClass = rowClass + " " + footerClass;
+ cellClass = cellClass + " " + footerClass;
+ }
+
+ encodeStyleClass(writer, context, footer, null, rowClass);
+
+ writer.startElement(element, footer);
+
+ encodeStyleClass(writer, context, footer, null, cellClass);
+
+ if (columns > 0) {
+ writer.writeAttribute("colspan", String.valueOf(columns), null);
+ }
+
+ writer.writeAttribute("scope", "colgroup", null);
+
+ renderChild(context, footer);
+
+ writer.endElement(element);
+ writer.endElement(HTML.TR_ELEMENT);
+ }
}
protected void encodeHeaderFacets(FacesContext context, ResponseWriter writer, Iterator<UIComponent> headers,
- String skinCellClass, String headerClass, String facetName, String element, int colCount) throws IOException {
-
- int tColCount = 0;
+ String skinCellClass, String headerClass, String facetName, String element, int colCount) throws IOException {
- while (headers.hasNext()) {
- UIComponent column = headers.next();
- if (!column.isRendered()) {
- continue;
- }
+ int tColCount = 0;
- Integer colspan = (Integer) column.getAttributes().get("colspan");
- if (colspan != null && colspan.intValue() > 0) {
- tColCount += colspan.intValue();
- } else {
- tColCount++;
- }
+ while (headers.hasNext()) {
+ UIComponent column = headers.next();
+ if (!column.isRendered()) {
+ continue;
+ }
- if (tColCount > colCount) {
- break;
- }
+ Integer colspan = (Integer) column.getAttributes().get("colspan");
+ if (colspan != null && colspan.intValue() > 0) {
+ tColCount += colspan.intValue();
+ } else {
+ tColCount++;
+ }
- String classAttribute = facetName + "Class";
-
- String columnHeaderClass = (String) column.getAttributes().get(classAttribute);
-
- String styleClass = skinCellClass;
- if(headerClass != null && headerClass.trim().length() != 0) {
- styleClass = styleClass + " " + headerClass;
- }
-
- if(columnHeaderClass != null && columnHeaderClass.trim().length() != 0) {
- styleClass = styleClass + " " + columnHeaderClass;
- }
-
+ if (tColCount > colCount) {
+ break;
+ }
- writer.startElement(element, column);
-
- encodeStyleClass(writer, context, column, null, styleClass);
-
- writer.writeAttribute("scope", "col", null);
- getUtils().encodeAttribute(context, column, "colspan");
+ String classAttribute = facetName + "Class";
- UIComponent facet = column.getFacet(facetName);
- if (facet != null && facet.isRendered()) {
- renderChild(context, facet);
- }
+ String columnHeaderClass = (String) column.getAttributes().get(classAttribute);
- writer.endElement(element);
- }
+ String styleClass = skinCellClass;
+ if (headerClass != null && headerClass.trim().length() != 0) {
+ styleClass = styleClass + " " + headerClass;
+ }
+
+ if (columnHeaderClass != null && columnHeaderClass.trim().length() != 0) {
+ styleClass = styleClass + " " + columnHeaderClass;
+ }
+
+ writer.startElement(element, column);
+
+ encodeStyleClass(writer, context, column, null, styleClass);
+
+ writer.writeAttribute("scope", "col", null);
+ getUtils().encodeAttribute(context, column, "colspan");
+
+ UIComponent facet = column.getFacet(facetName);
+ if (facet != null && facet.isRendered()) {
+ renderChild(context, facet);
+ }
+
+ writer.endElement(element);
+ }
}
-
- protected void encodeStyleClass(ResponseWriter writer, FacesContext context, UIComponent component , String styleClassAttribute, String styleClass) throws IOException {
- boolean isEmpty = isEmptyAttr(component, styleClassAttribute);
- if( isEmpty && !(styleClass != null && styleClass.trim().length() != 0)) {
- return;
- }
-
- String componentStyleClass = isEmpty ? styleClass : styleClass + " " + component.getAttributes().get(styleClassAttribute);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, componentStyleClass, null);
- }
-
- protected boolean isEmptyAttr(UIComponent component, String attribute) {
- if(attribute == null) {
- return true;
- }
- String value = (String) component.getAttributes().get(attribute);
- return !(value != null && value.trim().length()!=0);
- }
-
- protected void encodeStyle(ResponseWriter writer, FacesContext context, UIComponent component, String predefinedStyles) throws IOException {
- StringBuffer toEncode = new StringBuffer();
-
- if(!isEmptyAttr(component, HTML.STYLE_ATTRIBUTE)) {
- String style = ((String)component.getAttributes().get(HTML.STYLE_ATTRIBUTE)).trim();
- style = style.endsWith(";") ? style : style + ";";
- toEncode.append(style);
- }
-
- if(!isEmpty(predefinedStyles)) {
- String style = predefinedStyles.endsWith(";") ? predefinedStyles : predefinedStyles + ";";
- toEncode.append(style);
- }
-
- if(toEncode.length() > 0) {
- writer.writeAttribute(HTML.STYLE_ATTRIBUTE, toEncode.toString(), null);
- }
- }
-
- protected boolean isEmpty(String style) {
- return !((style != null) && (style.trim().length()!=0));
- }
-
- protected String getTableSkinClass() {
- return "rich-table";
- }
-
- protected String getTableHeadSkinClass() {
- return "rich-table-head";
- }
-
- protected String getCaptionSkinClass() {
- return "rich-table-caption";
- }
+ protected void encodeStyleClass(ResponseWriter writer, FacesContext context, UIComponent component,
+ String styleClassAttribute, String styleClass) throws IOException {
+ boolean isEmpty = isEmptyAttr(component, styleClassAttribute);
+ if (isEmpty && !(styleClass != null && styleClass.trim().length() != 0)) {
+ return;
+ }
+ String componentStyleClass = isEmpty ? styleClass : styleClass + " "
+ + component.getAttributes().get(styleClassAttribute);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, componentStyleClass, null);
+ }
+
+ protected boolean isEmptyAttr(UIComponent component, String attribute) {
+ if (attribute == null) {
+ return true;
+ }
+ String value = (String) component.getAttributes().get(attribute);
+ return !(value != null && value.trim().length() != 0);
+ }
+
+ protected void encodeStyle(ResponseWriter writer, FacesContext context, UIComponent component,
+ String predefinedStyles) throws IOException {
+ StringBuffer toEncode = new StringBuffer();
+
+ if (!isEmptyAttr(component, HTML.STYLE_ATTRIBUTE)) {
+ String style = ((String) component.getAttributes().get(HTML.STYLE_ATTRIBUTE)).trim();
+ style = style.endsWith(";") ? style : style + ";";
+ toEncode.append(style);
+ }
+
+ if (!isEmpty(predefinedStyles)) {
+ String style = predefinedStyles.endsWith(";") ? predefinedStyles : predefinedStyles + ";";
+ toEncode.append(style);
+ }
+
+ if (toEncode.length() > 0) {
+ writer.writeAttribute(HTML.STYLE_ATTRIBUTE, toEncode.toString(), null);
+ }
+ }
+
+ protected boolean isEmpty(String style) {
+ return !((style != null) && (style.trim().length() != 0));
+ }
+
+ protected String getTableSkinClass() {
+ return "rich-table";
+ }
+
+ protected String getTableHeadSkinClass() {
+ return "rich-table-head";
+ }
+
+ protected String getCaptionSkinClass() {
+ return "rich-table-caption";
+ }
+
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ElementEncodeListener.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ElementEncodeListener.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ElementEncodeListener.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -9,35 +9,47 @@
import org.richfaces.component.UIDataTableBase;
public interface ElementEncodeListener {
-
- public void encodeRowStart(ResponseWriter writer, FacesContext context, UIComponent component, RowHolder holder) throws IOException;
-
- public void encodeRowEnd(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException;
-
- public void encodeCellStart(ResponseWriter writer, FacesContext context, UIComponent component, RowHolder holder) throws IOException;
-
- public void encodeCellEnd(ResponseWriter writer, FacesContext context, UIComponent component, RowHolder holder) throws IOException;
-
-// public void encodeHeaderCellStart(ResponseWriter writer, FacesContext context, UIComponent component, String styleClass) throws IOException;
-//
-// public void encodeHeaderCellEnd(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException;
-
- public void encodeFirstRowStart(ResponseWriter writer, FacesContext context, UIComponent component, RowHolder holder) throws IOException;
-
- public void encodeFirstRowEnd(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException;
-
- public void encodeTableStart(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException;
-
- public void encodeTableEnd(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException;
-
- public void encodeTableBodyStart(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException;
-
- public void encodeTableBodyEnd(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException;
-
-// public void encodeCaption(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException;
-
- public void encodeHeader(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException;
-
- public void encodeFooter(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException;
+ public void encodeRowStart(ResponseWriter writer, FacesContext context, UIComponent component, RowHolder holder)
+ throws IOException;
+
+ public void encodeRowEnd(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException;
+
+ public void encodeCellStart(ResponseWriter writer, FacesContext context, UIComponent component, RowHolder holder)
+ throws IOException;
+
+ public void encodeCellEnd(ResponseWriter writer, FacesContext context, UIComponent component, RowHolder holder)
+ throws IOException;
+
+ // public void encodeHeaderCellStart(ResponseWriter writer, FacesContext context, UIComponent component, String
+ // styleClass) throws IOException;
+ //
+ // public void encodeHeaderCellEnd(ResponseWriter writer, FacesContext context, UIComponent component) throws
+ // IOException;
+
+ public void encodeFirstRowStart(ResponseWriter writer, FacesContext context, UIComponent component, RowHolder holder)
+ throws IOException;
+
+ public void encodeFirstRowEnd(ResponseWriter writer, FacesContext context, UIComponent component)
+ throws IOException;
+
+ public void encodeTableStart(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable)
+ throws IOException;
+
+ public void encodeTableEnd(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable)
+ throws IOException;
+
+ public void encodeTableBodyStart(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable)
+ throws IOException;
+
+ public void encodeTableBodyEnd(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable)
+ throws IOException;
+
+ // public void encodeCaption(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws
+ // IOException;
+
+ public void encodeHeader(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException;
+
+ public void encodeFooter(ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException;
+
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -18,7 +18,7 @@
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
+ */
package org.richfaces.renderkit;
import java.io.IOException;
@@ -36,286 +36,287 @@
import org.richfaces.component.UIDataTableBase;
import org.richfaces.component.util.HtmlUtil;
-@ResourceDependencies({
- @ResourceDependency(library = "javax.faces", name = "jsf.js"),
- @ResourceDependency(name = "jquery.js"),
- @ResourceDependency(name = "richfaces.js"),
- @ResourceDependency(name = "extendedDataTable.js"),
- @ResourceDependency(name = "extendedDataTable.css")
-})
+@ResourceDependencies( { @ResourceDependency(library = "javax.faces", name = "jsf.js"),
+ @ResourceDependency(name = "jquery.js"), @ResourceDependency(name = "richfaces.js"),
+ @ResourceDependency(name = "extendedDataTable.js"), @ResourceDependency(name = "extendedDataTable.css") })
public class ExtendedDataTableRenderer extends AbstractTableRenderer {
-
- private class RendererState extends RowHolderBase{
-
- private UIDataTableBase table;
- private List<UIComponent> frozenColumns;
- private List<UIComponent> columns;
- private boolean frozen;
-
- public RendererState(FacesContext context, UIDataTableBase table) {
- super(context);
- this.table = table;
- int count = getFrozenColumnsCount();
- frozenColumns = new ArrayList<UIComponent>();
- columns = new ArrayList<UIComponent>();
- Iterator<UIComponent> iterator = table.columns();
- for (; iterator.hasNext() && count > 0; count--) {
- UIComponent component = iterator.next();
- if(component.isRendered()) {
- frozenColumns.add(component);
- }
- }
- for (; iterator.hasNext();) {
- UIComponent component = iterator.next();
- if(component.isRendered()) {
- columns.add(component);
- }
- }
- }
-
- private int getFrozenColumnsCount() {
- int count = ((Integer) table.getAttributes().get("frozenColumns")).intValue();
- int columnsCount = getColumnsCount(table);
- if (count > columnsCount) {
- count = columnsCount;
- }
- return count;
- }
- public UIDataTableBase getRow() {
- return table;
- }
+ private class RendererState extends RowHolderBase {
- public List<UIComponent> getFrozenColumns() {
- return frozenColumns;
- }
+ private UIDataTableBase table;
+ private List<UIComponent> frozenColumns;
+ private List<UIComponent> columns;
+ private boolean frozen;
- public List<UIComponent> getColumns() {
- return columns;
- }
+ public RendererState(FacesContext context, UIDataTableBase table) {
+ super(context);
+ this.table = table;
+ int count = getFrozenColumnsCount();
+ frozenColumns = new ArrayList<UIComponent>();
+ columns = new ArrayList<UIComponent>();
+ Iterator<UIComponent> iterator = table.columns();
+ for (; iterator.hasNext() && count > 0; count--) {
+ UIComponent component = iterator.next();
+ if (component.isRendered()) {
+ frozenColumns.add(component);
+ }
+ }
+ for (; iterator.hasNext();) {
+ UIComponent component = iterator.next();
+ if (component.isRendered()) {
+ columns.add(component);
+ }
+ }
+ }
- public void setFrozen(boolean frozen) {
- this.frozen = frozen;
- }
+ private int getFrozenColumnsCount() {
+ int count = ((Integer) table.getAttributes().get("frozenColumns")).intValue();
+ int columnsCount = getColumnsCount(table);
+ if (count > columnsCount) {
+ count = columnsCount;
+ }
+ return count;
+ }
- public boolean isFrozen() {
- return frozen;
- }
- }
+ public UIDataTableBase getRow() {
+ return table;
+ }
- @Override
- protected Class<? extends UIComponent> getComponentClass() {
- return UIDataTableBase.class;
- }
-
- @Override
- protected void doEncodeBegin(ResponseWriter writer, FacesContext context,
- UIComponent component) throws IOException {
- writer.startElement(HTML.DIV_ELEM, component);
- writer.writeAttribute(HTML.ID_ATTRIBUTE, component.getClientId(context), null);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, HtmlUtil.concatClasses("rich-extable", (String)component.getAttributes().get("styleClass")), null);
- getUtils().writeAttribute(writer, HTML.STYLE_ATTRIBUTE, component.getAttributes().get("style"));
-
- }
-
- @Override
- protected void doEncodeChildren(ResponseWriter writer,
- FacesContext context, UIComponent component) throws IOException {
- UIDataTableBase table = (UIDataTableBase) component;
- Object key = table.getRowKey();
- table.captureOrigValue(context);
- table.setRowKey(context, null);
- RendererState state = new RendererState(context, table);
- //TODO encodeCaption(context, table);
- encodeStyle(state);
- encodeHeaderOrFooter(state, "header");
- encodeBody(state);
- encodeHeaderOrFooter(state, "footer");
- table.setRowKey(context,key);
- table.restoreOrigValue(context);
- }
-
- @Override
- protected void doEncodeEnd(ResponseWriter writer, FacesContext context,
- UIComponent component) throws IOException {
- writer.startElement(HTML.SCRIPT_ELEM, component);
- writer.writeAttribute(HTML.TYPE_ATTR, "text/javascript", null);
- writer.write("new RichFaces.ExtendedDataTable('" + component.getClientId(context) + "');");
- writer.endElement(HTML.SCRIPT_ELEM);
- writer.endElement(HTML.DIV_ELEM);
- }
-
- private void encodeStyle(RendererState state) throws IOException {
- FacesContext context = state.getContext();
- ResponseWriter writer = context.getResponseWriter();
- UIDataTableBase table = state.getRow();
- writer.startElement("style", table);
- writer.writeAttribute(HTML.TYPE_ATTR, "text/css", null);
- writer.writeText(".rich-extable-part-width{", null); //TODO getNormalizedId(context, state.getGrid())
- writer.writeText("width: 100%;", "width");
- writer.writeText("}", null);
- Iterator<UIComponent> columns = table.columns();
- while (columns.hasNext()) {
- UIComponent column = (UIComponent) columns.next();
- String id = column.getId();
- if (id == null) {
- column.getClientId(context); // hack initialize id
- id = column.getId();
- }
- String width = getColumnWidth(column);
- writer.writeText(".rich-extable-cell-width-" + id + " {", "width"); //TODO getNormalizedId(context, state.getGrid())
- writer.writeText("width: " + width + ";", "width");
- writer.writeText("}", "width");
- }
- writer.endElement("style");
- }
-
- private void encodeHeaderOrFooter(RendererState state, String name) throws IOException {
- FacesContext context = state.getContext();
- ResponseWriter writer = context.getResponseWriter();
- UIDataTableBase table = state.getRow();
- if (isColumnFacetPresent(table, name)) {
- writer.startElement(HTML.DIV_ELEM, table);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, HtmlUtil.concatClasses("rich-extable-" + name, (String)table.getAttributes().get(name + "Class")), null);
- writer.startElement(HTML.TABLE_ELEMENT, table);
- writer.writeAttribute(HTML.CELLPADDING_ATTRIBUTE, "0", null);
- writer.writeAttribute(HTML.CELLSPACING_ATTRIBUTE, "0", null);
- writer.startElement(HTML.TBOBY_ELEMENT, table);
- writer.startElement(HTML.TR_ELEMENT, table);
- Iterator<UIComponent> columns = state.getFrozenColumns().iterator();
- for (int i = 0; i < 2; i++) { //TODO Replace 2 with constant
- if (columns.hasNext()) {
- writer.startElement(HTML.TD_ELEM, table);
- if (i == 0 && "footer".equals(name)) {
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-footer-align", null);
- }
- writer.startElement(HTML.DIV_ELEM, table);
- if (i == 0) {
- if ("header".equals(name)) {
- writer.writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) + ":frozenHeader", null);
- }
- } else {
- writer.writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) + ":" + name, null);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable" + ("footer".equals(name) ? "-footer" : "") + "-part rich-extable-part-width", null);
- }
- writer.startElement(HTML.TABLE_ELEMENT, table);
- writer.writeAttribute(HTML.CELLPADDING_ATTRIBUTE, "0", null);
- writer.writeAttribute(HTML.CELLSPACING_ATTRIBUTE, "0", null);
- writer.startElement(HTML.TBOBY_ELEMENT, table);
- writer.startElement(HTML.TR_ELEMENT, table);
- while (columns.hasNext()) {
- encodeHeaderOrFooterCell(context, writer, columns.next(), name);
- }
- writer.endElement(HTML.TR_ELEMENT);
- writer.endElement(HTML.TBOBY_ELEMENT);
- writer.endElement(HTML.TABLE_ELEMENT);
- writer.endElement(HTML.DIV_ELEM);
- writer.endElement(HTML.TD_ELEM);
- }
- columns = state.getColumns().iterator();
- }
- writer.endElement(HTML.TR_ELEMENT);
- writer.endElement(HTML.TBOBY_ELEMENT);
- writer.endElement(HTML.TABLE_ELEMENT);
- writer.endElement(HTML.DIV_ELEM);
- }
- }
+ public List<UIComponent> getFrozenColumns() {
+ return frozenColumns;
+ }
- private void encodeBody(RendererState state) throws IOException {
- FacesContext context = state.getContext();
- ResponseWriter writer = context.getResponseWriter();
- UIDataTableBase table = state.getRow();
- writer.startElement(HTML.DIV_ELEM, table);
- writer.writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) + ":b", null);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-body", null);
- writer.startElement(HTML.DIV_ELEM, table);
-// writer.startElement(HTML.DIV_ELEM, table); TODO
-// writer.write(" ");
-// writer.endElement(HTML.DIV_ELEM);
- writer.startElement(HTML.TABLE_ELEMENT, table);
- writer.writeAttribute(HTML.CELLPADDING_ATTRIBUTE, "0", null);
- writer.writeAttribute(HTML.CELLSPACING_ATTRIBUTE, "0", null);
- writer.startElement(HTML.TBOBY_ELEMENT, table);
- writer.startElement(HTML.TR_ELEMENT, table);
- state.setFrozen(true);
- for (int i = 0; i < 2; i++) { //TODO 1. Replace 2 with constant 2. Empty frozen part shouldn't be rendered
- writer.startElement(HTML.TD_ELEM, table);
- writer.startElement(HTML.DIV_ELEM, table);
- if (i == 1) {
- writer.writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) + ":body", null);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-part rich-extable-part-width", null);
- }
- writer.startElement(HTML.TABLE_ELEMENT, table);
- writer.writeAttribute(HTML.CELLPADDING_ATTRIBUTE, "0", null);
- writer.writeAttribute(HTML.CELLSPACING_ATTRIBUTE, "0", null);
- writer.startElement(HTML.TBOBY_ELEMENT, table);
- table.walk(context, this, state); //TODO encodeRows(context, table);
- writer.endElement(HTML.TBOBY_ELEMENT);
- writer.endElement(HTML.TABLE_ELEMENT);
- writer.endElement(HTML.DIV_ELEM);
- writer.endElement(HTML.TD_ELEM);
- state.setFrozen(false);
- }
- writer.endElement(HTML.TR_ELEMENT);
- writer.endElement(HTML.TBOBY_ELEMENT);
- writer.endElement(HTML.TABLE_ELEMENT);
- writer.endElement(HTML.DIV_ELEM);
- writer.endElement(HTML.DIV_ELEM);
- }
+ public List<UIComponent> getColumns() {
+ return columns;
+ }
- private void encodeHeaderOrFooterCell(FacesContext context, ResponseWriter writer,
- UIComponent column, String facetName) throws IOException {
- if (column.isRendered()) {
+ public void setFrozen(boolean frozen) {
+ this.frozen = frozen;
+ }
- String classAttribute = facetName + "Class";
- writer.startElement(HTML.TD_ELEM, column);
- writer.startElement(HTML.DIV_ELEM, column);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, HtmlUtil.concatClasses("rich-extable-" + facetName + "-cell", "rich-extable-cell-width-" + column.getId(),
- (String) column.getAttributes().get(classAttribute)), null);
+ public boolean isFrozen() {
+ return frozen;
+ }
+ }
+ @Override
+ protected Class<? extends UIComponent> getComponentClass() {
+ return UIDataTableBase.class;
+ }
- UIComponent facet = column.getFacet(facetName);
- if (facet != null && facet.isRendered()) {
- renderChild(context, facet);
- }
+ @Override
+ protected void doEncodeBegin(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException {
+ writer.startElement(HTML.DIV_ELEM, component);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, component.getClientId(context), null);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, HtmlUtil.concatClasses("rich-extable", (String) component
+ .getAttributes().get("styleClass")), null);
+ getUtils().writeAttribute(writer, HTML.STYLE_ATTRIBUTE, component.getAttributes().get("style"));
- writer.endElement(HTML.DIV_ELEM);
- writer.endElement(HTML.TD_ELEM);
- }
- }
+ }
- @Override
- public void encodeRow(RowHolderBase rowHolder) throws IOException {
- FacesContext context = rowHolder.getContext();
- ResponseWriter writer = context.getResponseWriter();
- RendererState state = (RendererState)rowHolder;
- UIDataTableBase table = state.getRow();
- writer.startElement(HTML.TR_ELEMENT, table);
- Iterator<UIComponent> columns = null;
- if (state.isFrozen()) {
- columns = state.getFrozenColumns().iterator();
- } else {
- columns = state.getColumns().iterator();
- }
- while (columns.hasNext()) {
- UIComponent column = (UIComponent) columns.next();
- if (column.isRendered()) {
- writer.startElement(HTML.TD_ELEM, table);
- writer.startElement(HTML.DIV_ELEM, table);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-cell rich-extable-cell-width-" + column.getId(), null);
- renderChildren(context, column);
- writer.endElement(HTML.DIV_ELEM);
- writer.endElement(HTML.TD_ELEM);
- }
- }
- writer.endElement(HTML.TR_ELEMENT);
- }
+ @Override
+ protected void doEncodeChildren(ResponseWriter writer, FacesContext context, UIComponent component)
+ throws IOException {
+ UIDataTableBase table = (UIDataTableBase) component;
+ Object key = table.getRowKey();
+ table.captureOrigValue(context);
+ table.setRowKey(context, null);
+ RendererState state = new RendererState(context, table);
+ // TODO encodeCaption(context, table);
+ encodeStyle(state);
+ encodeHeaderOrFooter(state, "header");
+ encodeBody(state);
+ encodeHeaderOrFooter(state, "footer");
+ table.setRowKey(context, key);
+ table.restoreOrigValue(context);
+ }
- private String getColumnWidth(UIComponent column) {
- String width = (String) column.getAttributes().get("width");
- if (width == null || width.indexOf("%") != -1) {
- width = "100px";
- }
- return width;
- }
+ @Override
+ protected void doEncodeEnd(ResponseWriter writer, FacesContext context, UIComponent component) throws IOException {
+ writer.startElement(HTML.SCRIPT_ELEM, component);
+ writer.writeAttribute(HTML.TYPE_ATTR, "text/javascript", null);
+ writer.write("new RichFaces.ExtendedDataTable('" + component.getClientId(context) + "');");
+ writer.endElement(HTML.SCRIPT_ELEM);
+ writer.endElement(HTML.DIV_ELEM);
+ }
+
+ private void encodeStyle(RendererState state) throws IOException {
+ FacesContext context = state.getContext();
+ ResponseWriter writer = context.getResponseWriter();
+ UIDataTableBase table = state.getRow();
+ writer.startElement("style", table);
+ writer.writeAttribute(HTML.TYPE_ATTR, "text/css", null);
+ writer.writeText(".rich-extable-part-width{", null); // TODO getNormalizedId(context, state.getGrid())
+ writer.writeText("width: 100%;", "width");
+ writer.writeText("}", null);
+ Iterator<UIComponent> columns = table.columns();
+ while (columns.hasNext()) {
+ UIComponent column = (UIComponent) columns.next();
+ String id = column.getId();
+ if (id == null) {
+ column.getClientId(context); // hack initialize id
+ id = column.getId();
+ }
+ String width = getColumnWidth(column);
+ writer.writeText(".rich-extable-cell-width-" + id + " {", "width"); // TODO getNormalizedId(context,
+ // state.getGrid())
+ writer.writeText("width: " + width + ";", "width");
+ writer.writeText("}", "width");
+ }
+ writer.endElement("style");
+ }
+
+ private void encodeHeaderOrFooter(RendererState state, String name) throws IOException {
+ FacesContext context = state.getContext();
+ ResponseWriter writer = context.getResponseWriter();
+ UIDataTableBase table = state.getRow();
+ if (isColumnFacetPresent(table, name)) {
+ writer.startElement(HTML.DIV_ELEM, table);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, HtmlUtil.concatClasses("rich-extable-" + name, (String) table
+ .getAttributes().get(name + "Class")), null);
+ writer.startElement(HTML.TABLE_ELEMENT, table);
+ writer.writeAttribute(HTML.CELLPADDING_ATTRIBUTE, "0", null);
+ writer.writeAttribute(HTML.CELLSPACING_ATTRIBUTE, "0", null);
+ writer.startElement(HTML.TBOBY_ELEMENT, table);
+ writer.startElement(HTML.TR_ELEMENT, table);
+ Iterator<UIComponent> columns = state.getFrozenColumns().iterator();
+ for (int i = 0; i < 2; i++) { // TODO Replace 2 with constant
+ if (columns.hasNext()) {
+ writer.startElement(HTML.TD_ELEM, table);
+ if (i == 0 && "footer".equals(name)) {
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-footer-align", null);
+ }
+ writer.startElement(HTML.DIV_ELEM, table);
+ if (i == 0) {
+ if ("header".equals(name)) {
+ writer
+ .writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) + ":frozenHeader", null);
+ }
+ } else {
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) + ":" + name, null);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable"
+ + ("footer".equals(name) ? "-footer" : "") + "-part rich-extable-part-width", null);
+ }
+ writer.startElement(HTML.TABLE_ELEMENT, table);
+ writer.writeAttribute(HTML.CELLPADDING_ATTRIBUTE, "0", null);
+ writer.writeAttribute(HTML.CELLSPACING_ATTRIBUTE, "0", null);
+ writer.startElement(HTML.TBOBY_ELEMENT, table);
+ writer.startElement(HTML.TR_ELEMENT, table);
+ while (columns.hasNext()) {
+ encodeHeaderOrFooterCell(context, writer, columns.next(), name);
+ }
+ writer.endElement(HTML.TR_ELEMENT);
+ writer.endElement(HTML.TBOBY_ELEMENT);
+ writer.endElement(HTML.TABLE_ELEMENT);
+ writer.endElement(HTML.DIV_ELEM);
+ writer.endElement(HTML.TD_ELEM);
+ }
+ columns = state.getColumns().iterator();
+ }
+ writer.endElement(HTML.TR_ELEMENT);
+ writer.endElement(HTML.TBOBY_ELEMENT);
+ writer.endElement(HTML.TABLE_ELEMENT);
+ writer.endElement(HTML.DIV_ELEM);
+ }
+ }
+
+ private void encodeBody(RendererState state) throws IOException {
+ FacesContext context = state.getContext();
+ ResponseWriter writer = context.getResponseWriter();
+ UIDataTableBase table = state.getRow();
+ writer.startElement(HTML.DIV_ELEM, table);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) + ":b", null);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-body", null);
+ writer.startElement(HTML.DIV_ELEM, table);
+ // writer.startElement(HTML.DIV_ELEM, table); TODO
+ // writer.write(" ");
+ // writer.endElement(HTML.DIV_ELEM);
+ writer.startElement(HTML.TABLE_ELEMENT, table);
+ writer.writeAttribute(HTML.CELLPADDING_ATTRIBUTE, "0", null);
+ writer.writeAttribute(HTML.CELLSPACING_ATTRIBUTE, "0", null);
+ writer.startElement(HTML.TBOBY_ELEMENT, table);
+ writer.startElement(HTML.TR_ELEMENT, table);
+ state.setFrozen(true);
+ for (int i = 0; i < 2; i++) { // TODO 1. Replace 2 with constant 2. Empty frozen part shouldn't be rendered
+ writer.startElement(HTML.TD_ELEM, table);
+ writer.startElement(HTML.DIV_ELEM, table);
+ if (i == 1) {
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, table.getClientId(context) + ":body", null);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-part rich-extable-part-width", null);
+ }
+ writer.startElement(HTML.TABLE_ELEMENT, table);
+ writer.writeAttribute(HTML.CELLPADDING_ATTRIBUTE, "0", null);
+ writer.writeAttribute(HTML.CELLSPACING_ATTRIBUTE, "0", null);
+ writer.startElement(HTML.TBOBY_ELEMENT, table);
+ table.walk(context, this, state); // TODO encodeRows(context, table);
+ writer.endElement(HTML.TBOBY_ELEMENT);
+ writer.endElement(HTML.TABLE_ELEMENT);
+ writer.endElement(HTML.DIV_ELEM);
+ writer.endElement(HTML.TD_ELEM);
+ state.setFrozen(false);
+ }
+ writer.endElement(HTML.TR_ELEMENT);
+ writer.endElement(HTML.TBOBY_ELEMENT);
+ writer.endElement(HTML.TABLE_ELEMENT);
+ writer.endElement(HTML.DIV_ELEM);
+ writer.endElement(HTML.DIV_ELEM);
+ }
+
+ private void encodeHeaderOrFooterCell(FacesContext context, ResponseWriter writer, UIComponent column,
+ String facetName) throws IOException {
+ if (column.isRendered()) {
+
+ String classAttribute = facetName + "Class";
+ writer.startElement(HTML.TD_ELEM, column);
+ writer.startElement(HTML.DIV_ELEM, column);
+ writer
+ .writeAttribute(HTML.CLASS_ATTRIBUTE, HtmlUtil.concatClasses("rich-extable-" + facetName + "-cell",
+ "rich-extable-cell-width-" + column.getId(), (String) column.getAttributes().get(classAttribute)),
+ null);
+
+ UIComponent facet = column.getFacet(facetName);
+ if (facet != null && facet.isRendered()) {
+ renderChild(context, facet);
+ }
+
+ writer.endElement(HTML.DIV_ELEM);
+ writer.endElement(HTML.TD_ELEM);
+ }
+ }
+
+ @Override
+ public void encodeRow(RowHolderBase rowHolder) throws IOException {
+ FacesContext context = rowHolder.getContext();
+ ResponseWriter writer = context.getResponseWriter();
+ RendererState state = (RendererState) rowHolder;
+ UIDataTableBase table = state.getRow();
+ writer.startElement(HTML.TR_ELEMENT, table);
+ Iterator<UIComponent> columns = null;
+ if (state.isFrozen()) {
+ columns = state.getFrozenColumns().iterator();
+ } else {
+ columns = state.getColumns().iterator();
+ }
+ while (columns.hasNext()) {
+ UIComponent column = (UIComponent) columns.next();
+ if (column.isRendered()) {
+ writer.startElement(HTML.TD_ELEM, table);
+ writer.startElement(HTML.DIV_ELEM, table);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable-cell rich-extable-cell-width-"
+ + column.getId(), null);
+ renderChildren(context, column);
+ writer.endElement(HTML.DIV_ELEM);
+ writer.endElement(HTML.TD_ELEM);
+ }
+ }
+ writer.endElement(HTML.TR_ELEMENT);
+ }
+
+ private String getColumnWidth(UIComponent column) {
+ String width = (String) column.getAttributes().get("width");
+ if (width == null || width.indexOf("%") != -1) {
+ width = "100px";
+ }
+ return width;
+ }
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/RowHolder.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/RowHolder.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/RowHolder.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -7,86 +7,83 @@
import org.richfaces.component.UIDataTable;
import org.richfaces.component.UISubTable;
-public class RowHolder extends RowHolderBase{
-
- private String cellElement;
-
- private String cellClass;
-
- private String rowClass;
-
- private String firstRowClass;
-
- private boolean headerRow;
-
-
- public boolean isHeaderRow() {
- return headerRow;
- }
+public class RowHolder extends RowHolderBase {
- public void setHeaderRow(boolean headerRow) {
- this.headerRow = headerRow;
- }
+ private String cellElement;
- private Row row;
-
- public RowHolder(FacesContext context, Row row) {
- super(context);
- this.row = row;
- }
-
- public String getCellClass() {
- return this.cellClass;
- }
-
- public void setCellClass(String cellClass) {
- this.cellClass = cellClass;
- }
+ private String cellClass;
- public String getRowClass() {
- return this.rowClass;
- }
-
- public void setRowClass(String rowClass) {
- this.rowClass = rowClass;
- }
-
- public String getFirstRowClass() {
- return this.firstRowClass;
- }
-
- public void setFirstRowClass(String firstRowClass) {
- this.firstRowClass = firstRowClass;
- }
+ private String rowClass;
- public String getCellElement() {
- return cellElement;
- }
+ private String firstRowClass;
- public void setCellElement(String cellElement) {
- this.cellElement = cellElement;
- }
-
- public Row getRow() {
- return this.row;
- }
+ private boolean headerRow;
+
+ private Row row;
- public void setRow(Row row) {
- this.row = row;
- }
-
- public boolean isColGroup(){
- return row instanceof UIColumnGroup;
- }
-
- public boolean isSubTable(){
- return row instanceof UISubTable;
- }
-
- public boolean isDataTable(){
- return row instanceof UIDataTable;
- }
-
+ public RowHolder(FacesContext context, Row row) {
+ super(context);
+ this.row = row;
+ }
-}
+ public boolean isHeaderRow() {
+ return headerRow;
+ }
+ public void setHeaderRow(boolean headerRow) {
+ this.headerRow = headerRow;
+ }
+
+ public String getCellClass() {
+ return this.cellClass;
+ }
+
+ public void setCellClass(String cellClass) {
+ this.cellClass = cellClass;
+ }
+
+ public String getRowClass() {
+ return this.rowClass;
+ }
+
+ public void setRowClass(String rowClass) {
+ this.rowClass = rowClass;
+ }
+
+ public String getFirstRowClass() {
+ return this.firstRowClass;
+ }
+
+ public void setFirstRowClass(String firstRowClass) {
+ this.firstRowClass = firstRowClass;
+ }
+
+ public String getCellElement() {
+ return cellElement;
+ }
+
+ public void setCellElement(String cellElement) {
+ this.cellElement = cellElement;
+ }
+
+ public Row getRow() {
+ return this.row;
+ }
+
+ public void setRow(Row row) {
+ this.row = row;
+ }
+
+ public boolean isColGroup() {
+ return row instanceof UIColumnGroup;
+ }
+
+ public boolean isSubTable() {
+ return row instanceof UISubTable;
+ }
+
+ public boolean isDataTable() {
+ return row instanceof UIDataTable;
+ }
+
+}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/RowHolderBase.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/RowHolderBase.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/RowHolderBase.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -5,35 +5,34 @@
import org.richfaces.component.Row;
public abstract class RowHolderBase {
-
- private FacesContext context;
- private int currentRow = 0;
+ private FacesContext context;
- public RowHolderBase(FacesContext context) {
- this.context = context;
- }
-
- public FacesContext getContext() {
- return context;
- }
+ private int currentRow = 0;
- public abstract Row getRow();
-
- public int getCurrentRow() {
- return currentRow;
- }
+ public RowHolderBase(FacesContext context) {
+ this.context = context;
+ }
- public int nextRow() {
- return ++currentRow;
- }
-
- public void setCurrentRow(int currentRow) {
- this.currentRow = currentRow;
- }
-
- public void resetCurrentRow() {
- this.currentRow = 0;
- }
-}
+ public FacesContext getContext() {
+ return context;
+ }
+ public abstract Row getRow();
+
+ public int getCurrentRow() {
+ return currentRow;
+ }
+
+ public int nextRow() {
+ return ++currentRow;
+ }
+
+ public void setCurrentRow(int currentRow) {
+ this.currentRow = currentRow;
+ }
+
+ public void resetCurrentRow() {
+ this.currentRow = 0;
+ }
+}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ToggleControlRendererBase.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ToggleControlRendererBase.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ToggleControlRendererBase.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -22,191 +22,191 @@
/**
* @author Anton Belevich
- *
+ *
*/
-@ResourceDependencies({
- @ResourceDependency(name = "toggler.js")
-})
+@ResourceDependencies( { @ResourceDependency(name = "toggler.js") })
public abstract class ToggleControlRendererBase extends RendererBase {
- private static final String MANAGER_SCRIPT = "<script type=\"text/javascript\">ToggleManager.add(new Toggle(\"{0}\", {1}));</script>";
-
- private static final String CLIENT_TOGGLE_SCRIPT = "ToggleManager.clientToggle(''{0}'', ''{1}'');";
-
- private static final String SERVER_TOGGLE_SCRIPT = "ToggleManager.serverToggle(''{0}'', ''{1}'');";
-
- private static final String AJAX_TOGGLE_SCRIPT = "ToggleManager.ajaxToggle(''{0}'', ''{1}'');";
-
- private static final String DISPLAY_NONE = "display: none;";
-
- private static final String EXPAND_STATE = "expand";
-
- private static final String COLLAPSE_STATE = "collapse";
-
- private static final String HIDDEN = ":hidden";
-
- @Override
- protected void doDecode(FacesContext context, UIComponent component) {
- if(!(component instanceof UIToggleControl)) {
- return;
- }
-
- UIToggleControl toggle = (UIToggleControl)component;
-
- Map<String, String> params = context.getExternalContext().getRequestParameterMap();
-
- String hiddenId = toggle.getClientId() + HIDDEN;
- String state = params.get(hiddenId);
-
- if(state != null && state.trim().length()> 0) {
-
- UIComponent processed = findComponent(context, toggle);
- if(processed instanceof Expandable) {
-
- String prevState = getState(((Expandable)processed).isExpanded());
- if(!state.equals(prevState)) {
- new ToggleEvent(processed, isExpanded(state)).queue();
- }
- }
- }
- }
-
- protected void encodeControl(FacesContext context, UIComponent component) throws IOException{
-
- if(component instanceof UIToggleControl) {
- UIToggleControl toggleControl = (UIToggleControl)component;
-
- UISubTable subTable = findComponent(context, toggleControl);
- subTable.getAttributes().get("expanded");
- if(subTable != null) {
- ResponseWriter writer = context.getResponseWriter();
-
- String toggleId = toggleControl.getClientId(context);
- String options = encodeOptions(context, toggleControl, subTable);
-
- String registerScript = MessageFormat.format(MANAGER_SCRIPT, toggleId, options);
- writer.write(registerScript);
-
- String switchType = subTable.getSwichType();
- boolean expanded = subTable.isExpanded();
-
- encodeControl(context, writer, toggleControl, switchType, expanded, false);
- encodeControl(context, writer, toggleControl, switchType, !expanded, true);
-
- encodeHiddenInput(context, writer, toggleControl);
-
- }
- }
- }
-
- protected void encodeControl(FacesContext context, ResponseWriter writer, UIToggleControl control, String switchType, boolean expanded, boolean visible) throws IOException {
-
- String state = getState(expanded);
-
- String image = expanded ? control.getExpandControl() : control.getCollapseControl();
-
- String script = getScript(control, switchType, state);
-
- String style = getStyle(context, control);
- String styleClass = getStyleClass(context, control);
-
- writer.startElement(HTML.SPAN_ELEM, control);
- writer.writeAttribute(HTML.CLASS_ATTRIBUTE, styleClass, null);
- writer.writeAttribute(HTML.STYLE_ATTRIBUTE, style, null);
-
- writer.startElement(HTML.IMG_ELEMENT,control);
- writer.writeAttribute(HTML.ID_ATTRIBUTE, control.getClientId() + ":" + state, null);
-
- if(!visible) {
- writer.writeAttribute(HTML.STYLE_ATTRIBUTE, DISPLAY_NONE, null);
- }
-
- if(script != null && script.length() > 0) {
- String eventName = control.getEvent();
- writer.writeAttribute(eventName,script, null);
- }
-
- if(image != null && image.trim().length() > 0) {
- writer.writeAttribute(HTML.SRC_ATTRIBUTE, image, null);
- }
-
- writer.endElement(HTML.IMG_ELEMENT);
- writer.endElement(HTML.SPAN_ELEM);
- }
-
- public String encodeOptions(FacesContext context, UIToggleControl toggleControl, UISubTable subTable) {
-
- UIForm nestingForm = getUtils().getNestingForm(context, toggleControl);
-
- String formId = nestingForm.getClientId(context);
- String forId = subTable.getClientId(context);
- String state = getState(subTable.isExpanded());
-
- HashMap<String, String> options = new HashMap<String, String>();
- options.put("formId", formId);
- options.put("forId", forId);
- options.put("initialState", state);
-
- return ScriptUtils.toScript(options);
- }
-
- public void encodeHiddenInput(FacesContext context, ResponseWriter writer, UIComponent component) throws IOException {
-
- String hiddenId = component.getClientId(context) +HIDDEN;
-
- writer.startElement(HTML.INPUT_ELEM, component);
- writer.writeAttribute(HTML.ID_ATTRIBUTE, hiddenId, null);
- writer.writeAttribute(HTML.NAME_ATTRIBUTE, hiddenId, null);
- writer.writeAttribute(HTML.TYPE_ATTR,"hidden", null);
- writer.endElement(HTML.INPUT_ELEM);
-
- }
-
- public String getStyleClass(FacesContext context, UIToggleControl control) {
- return null;
- }
-
- public String getStyle(FacesContext context, UIToggleControl control) {
- return null;
- }
-
- protected UISubTable findComponent(FacesContext context, UIToggleControl toggleControl) {
- String forId = toggleControl.getForId();
-
- if(forId != null && forId.length() > 0) {
- UIComponent subTable = getUtils().findComponentFor(context, toggleControl, forId);
- if(subTable instanceof UISubTable) {
- return (UISubTable)subTable;
- }
- }
- return null;
- }
-
- public String getScript(UIToggleControl toggleControl, String switchType ,String state) {
-
- StringBuffer pattern = new StringBuffer();
-
- if(switchType.equals(UISubTable.SWITCH_TYPE_CLIENT)) {
- pattern.append(CLIENT_TOGGLE_SCRIPT);
- } else if (switchType.equals(UISubTable.SWITCH_TYPE_AJAX)){
- pattern.append(AJAX_TOGGLE_SCRIPT);
- } else {
- pattern.append(SERVER_TOGGLE_SCRIPT);
- }
-
- String toggleId = toggleControl.getClientId();
-
- String script = ( pattern.length() > 0) ? MessageFormat.format(pattern.toString(), toggleId, state) : null;
-
- return script;
- }
-
- protected String getState(boolean expand) {
- return expand ? EXPAND_STATE: COLLAPSE_STATE;
- }
-
- protected boolean isExpanded(String state) {
- return state.equals(EXPAND_STATE);
- }
-
+ private static final String MANAGER_SCRIPT = "<script type=\"text/javascript\">ToggleManager.add(new Toggle(\"{0}\", {1}));</script>";
+
+ private static final String CLIENT_TOGGLE_SCRIPT = "ToggleManager.clientToggle(''{0}'', ''{1}'');";
+
+ private static final String SERVER_TOGGLE_SCRIPT = "ToggleManager.serverToggle(''{0}'', ''{1}'');";
+
+ private static final String AJAX_TOGGLE_SCRIPT = "ToggleManager.ajaxToggle(''{0}'', ''{1}'');";
+
+ private static final String DISPLAY_NONE = "display: none;";
+
+ private static final String EXPAND_STATE = "expand";
+
+ private static final String COLLAPSE_STATE = "collapse";
+
+ private static final String HIDDEN = ":hidden";
+
+ @Override
+ protected void doDecode(FacesContext context, UIComponent component) {
+ if (!(component instanceof UIToggleControl)) {
+ return;
+ }
+
+ UIToggleControl toggle = (UIToggleControl) component;
+
+ Map<String, String> params = context.getExternalContext().getRequestParameterMap();
+
+ String hiddenId = toggle.getClientId() + HIDDEN;
+ String state = params.get(hiddenId);
+
+ if (state != null && state.trim().length() > 0) {
+
+ UIComponent processed = findComponent(context, toggle);
+ if (processed instanceof Expandable) {
+
+ String prevState = getState(((Expandable) processed).isExpanded());
+ if (!state.equals(prevState)) {
+ new ToggleEvent(processed, isExpanded(state)).queue();
+ }
+ }
+ }
+ }
+
+ protected void encodeControl(FacesContext context, UIComponent component) throws IOException {
+
+ if (component instanceof UIToggleControl) {
+ UIToggleControl toggleControl = (UIToggleControl) component;
+
+ UISubTable subTable = findComponent(context, toggleControl);
+ subTable.getAttributes().get("expanded");
+ if (subTable != null) {
+ ResponseWriter writer = context.getResponseWriter();
+
+ String toggleId = toggleControl.getClientId(context);
+ String options = encodeOptions(context, toggleControl, subTable);
+
+ String registerScript = MessageFormat.format(MANAGER_SCRIPT, toggleId, options);
+ writer.write(registerScript);
+
+ String switchType = subTable.getSwichType();
+ boolean expanded = subTable.isExpanded();
+
+ encodeControl(context, writer, toggleControl, switchType, expanded, false);
+ encodeControl(context, writer, toggleControl, switchType, !expanded, true);
+
+ encodeHiddenInput(context, writer, toggleControl);
+
+ }
+ }
+ }
+
+ protected void encodeControl(FacesContext context, ResponseWriter writer, UIToggleControl control,
+ String switchType, boolean expanded, boolean visible) throws IOException {
+
+ String state = getState(expanded);
+
+ String image = expanded ? control.getExpandControl() : control.getCollapseControl();
+
+ String script = getScript(control, switchType, state);
+
+ String style = getStyle(context, control);
+ String styleClass = getStyleClass(context, control);
+
+ writer.startElement(HTML.SPAN_ELEM, control);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, styleClass, null);
+ writer.writeAttribute(HTML.STYLE_ATTRIBUTE, style, null);
+
+ writer.startElement(HTML.IMG_ELEMENT, control);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, control.getClientId() + ":" + state, null);
+
+ if (!visible) {
+ writer.writeAttribute(HTML.STYLE_ATTRIBUTE, DISPLAY_NONE, null);
+ }
+
+ if (script != null && script.length() > 0) {
+ String eventName = control.getEvent();
+ writer.writeAttribute(eventName, script, null);
+ }
+
+ if (image != null && image.trim().length() > 0) {
+ writer.writeAttribute(HTML.SRC_ATTRIBUTE, image, null);
+ }
+
+ writer.endElement(HTML.IMG_ELEMENT);
+ writer.endElement(HTML.SPAN_ELEM);
+ }
+
+ public String encodeOptions(FacesContext context, UIToggleControl toggleControl, UISubTable subTable) {
+
+ UIForm nestingForm = getUtils().getNestingForm(context, toggleControl);
+
+ String formId = nestingForm.getClientId(context);
+ String forId = subTable.getClientId(context);
+ String state = getState(subTable.isExpanded());
+
+ HashMap<String, String> options = new HashMap<String, String>();
+ options.put("formId", formId);
+ options.put("forId", forId);
+ options.put("initialState", state);
+
+ return ScriptUtils.toScript(options);
+ }
+
+ public void encodeHiddenInput(FacesContext context, ResponseWriter writer, UIComponent component)
+ throws IOException {
+
+ String hiddenId = component.getClientId(context) + HIDDEN;
+
+ writer.startElement(HTML.INPUT_ELEM, component);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, hiddenId, null);
+ writer.writeAttribute(HTML.NAME_ATTRIBUTE, hiddenId, null);
+ writer.writeAttribute(HTML.TYPE_ATTR, "hidden", null);
+ writer.endElement(HTML.INPUT_ELEM);
+
+ }
+
+ public String getStyleClass(FacesContext context, UIToggleControl control) {
+ return null;
+ }
+
+ public String getStyle(FacesContext context, UIToggleControl control) {
+ return null;
+ }
+
+ protected UISubTable findComponent(FacesContext context, UIToggleControl toggleControl) {
+ String forId = toggleControl.getForId();
+
+ if (forId != null && forId.length() > 0) {
+ UIComponent subTable = getUtils().findComponentFor(context, toggleControl, forId);
+ if (subTable instanceof UISubTable) {
+ return (UISubTable) subTable;
+ }
+ }
+ return null;
+ }
+
+ public String getScript(UIToggleControl toggleControl, String switchType, String state) {
+
+ StringBuffer pattern = new StringBuffer();
+
+ if (switchType.equals(UISubTable.SWITCH_TYPE_CLIENT)) {
+ pattern.append(CLIENT_TOGGLE_SCRIPT);
+ } else if (switchType.equals(UISubTable.SWITCH_TYPE_AJAX)) {
+ pattern.append(AJAX_TOGGLE_SCRIPT);
+ } else {
+ pattern.append(SERVER_TOGGLE_SCRIPT);
+ }
+
+ String toggleId = toggleControl.getClientId();
+
+ String script = (pattern.length() > 0) ? MessageFormat.format(pattern.toString(), toggleId, state) : null;
+
+ return script;
+ }
+
+ protected String getState(boolean expand) {
+ return expand ? EXPAND_STATE : COLLAPSE_STATE;
+ }
+
+ protected boolean isExpanded(String state) {
+ return state.equals(EXPAND_STATE);
+ }
+
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/taglib/SubTableHandler.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/taglib/SubTableHandler.java 2009-12-07 13:13:40 UTC (rev 16082)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/taglib/SubTableHandler.java 2009-12-07 13:22:33 UTC (rev 16083)
@@ -14,49 +14,49 @@
/**
* @author Anton Belevich
- *
+ *
*/
-public class SubTableHandler extends ComponentHandler{
+public class SubTableHandler extends ComponentHandler {
- private static final SubTableHandlerMetaRule metaRule = new SubTableHandlerMetaRule();
-
- public SubTableHandler(ComponentConfig config) {
- super(config);
- }
-
- @Override
- protected MetaRuleset createMetaRuleset(Class type) {
- MetaRuleset m = super.createMetaRuleset(type);
- m.addRule(metaRule);
- return m;
- }
-
- static class SubTableHandlerMetaRule extends MetaRule {
+ private static final SubTableHandlerMetaRule METARULE = new SubTableHandlerMetaRule();
- @Override
- public Metadata applyRule(String name, TagAttribute attribute, MetadataTarget meta) {
- if(meta.isTargetInstanceOf(UISubTable.class) && "toggleListener".equals(name)) {
- return new SubTableMapper(attribute);
- }
- return null;
- }
-
- }
-
- static class SubTableMapper extends Metadata {
+ public SubTableHandler(ComponentConfig config) {
+ super(config);
+ }
- private static final Class[] SIGNATURE = new Class[] { org.richfaces.event.ToggleEvent.class };
-
- private final TagAttribute _attribute;
-
- public SubTableMapper(TagAttribute attribute) {
- this._attribute = attribute;
- }
+ @Override
+ protected MetaRuleset createMetaRuleset(Class type) {
+ MetaRuleset m = super.createMetaRuleset(type);
+ m.addRule(METARULE);
+ return m;
+ }
- @Override
- public void applyMetadata(FaceletContext ctx, Object instance) {
- MethodExpression methodExpression = _attribute.getMethodExpression(ctx, null, SIGNATURE);
- ((UISubTable)instance).setToggleListener(methodExpression);
- }
- }
+ static class SubTableHandlerMetaRule extends MetaRule {
+
+ @Override
+ public Metadata applyRule(String name, TagAttribute attribute, MetadataTarget meta) {
+ if (meta.isTargetInstanceOf(UISubTable.class) && "toggleListener".equals(name)) {
+ return new SubTableMapper(attribute);
+ }
+ return null;
+ }
+
+ }
+
+ static class SubTableMapper extends Metadata {
+
+ private static final Class[] SIGNATURE = new Class[] { org.richfaces.event.ToggleEvent.class };
+
+ private final TagAttribute attribute;
+
+ public SubTableMapper(TagAttribute attribute) {
+ this.attribute = attribute;
+ }
+
+ @Override
+ public void applyMetadata(FaceletContext ctx, Object instance) {
+ MethodExpression methodExpression = attribute.getMethodExpression(ctx, null, SIGNATURE);
+ ((UISubTable) instance).setToggleListener(methodExpression);
+ }
+ }
}
14 years, 5 months
JBoss Rich Faces SVN: r16082 - in root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk: parser/el/node and 1 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: Alex.Kolonitsky
Date: 2009-12-07 08:13:40 -0500 (Mon, 07 Dec 2009)
New Revision: 16082
Modified:
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/ELParserUtils.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/ELVisitor.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/NullType.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AbstractBinaryOperationTreeNode.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstBracketSuffixTreeNode.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstDeferredOrDynamicExpressionTreeNode.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstFunctionTreeNode.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstIdentifierTreeNode.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstMethodSuffixTreeNode.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstPropertySuffixTreeNode.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstValueTreeNode.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/BinaryArithmeticIntegerOperationTreeNode.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/BinaryArithmeticOperationTreeNode.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/BinaryBooleanOperationTreeNode.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/ConstantValueTreeNode.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererClassVisitor.java
Log:
RFPL-195 - Code style policy
Reformatting
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/ELParserUtils.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/ELParserUtils.java 2009-12-07 13:13:26 UTC (rev 16081)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/ELParserUtils.java 2009-12-07 13:13:40 UTC (rev 16082)
@@ -19,8 +19,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-
-
package org.richfaces.cdk.parser.el;
import java.beans.BeanInfo;
@@ -99,83 +97,85 @@
/**
* Class, that encapsulate all functionality, related to Reflection calls, such as loading classes, get property
* descriptors etc...
+ *
* @author amarkhel
- *
*/
public final class ELParserUtils {
-
- private static final class ClassDataHolder implements ClassVisitor {
-
- private Map<String, PropertyDescriptor> resolvedProperties;
-
- private List<Method> resolvedMethods;
- public ClassDataHolder() {
- super();
-
- this.resolvedProperties = new HashMap<String, PropertyDescriptor>();
- this.resolvedMethods = new ArrayList<Method>();
- }
+ private static final class ClassDataHolder implements ClassVisitor {
- public Map<String, PropertyDescriptor> getResolvedProperties() {
- return resolvedProperties;
- }
-
- public List<Method> getResolvedMethods() {
- return resolvedMethods;
- }
+ private Map<String, PropertyDescriptor> resolvedProperties;
- @Override
- public void visit(Class<?> clazz) throws ParsingException {
- PropertyDescriptor[] pds;
- Method[] declaredMethods;
-
- try {
- pds = getPropertyDescriptors(clazz);
- declaredMethods = clazz.getDeclaredMethods();
- } catch (LinkageError e) {
- throw new ParsingException(e.getMessage(), e);
- }
+ private List<Method> resolvedMethods;
+ public ClassDataHolder() {
+ super();
+
+ this.resolvedProperties = new HashMap<String, PropertyDescriptor>();
+ this.resolvedMethods = new ArrayList<Method>();
+ }
+
+ public Map<String, PropertyDescriptor> getResolvedProperties() {
+ return resolvedProperties;
+ }
+
+ public List<Method> getResolvedMethods() {
+ return resolvedMethods;
+ }
+
+ @Override
+ public void visit(Class<?> clazz) throws ParsingException {
+ PropertyDescriptor[] pds;
+ Method[] declaredMethods;
+
+ try {
+ pds = getPropertyDescriptors(clazz);
+ declaredMethods = clazz.getDeclaredMethods();
+ } catch (LinkageError e) {
+ throw new ParsingException(e.getMessage(), e);
+ }
+
for (PropertyDescriptor descriptor : pds) {
- String descriptorName = descriptor.getName();
- if (resolvedProperties.get(descriptorName) == null) {
- resolvedProperties.put(descriptorName, descriptor);
- }
+ String descriptorName = descriptor.getName();
+ if (resolvedProperties.get(descriptorName) == null) {
+ resolvedProperties.put(descriptorName, descriptor);
+ }
}
- for (Method declaredMethod : declaredMethods) {
- resolvedMethods.add(declaredMethod);
- }
- }
- }
+ for (Method declaredMethod : declaredMethods) {
+ resolvedMethods.add(declaredMethod);
+ }
+ }
+ }
- private static Map<Class<?>, ClassDataHolder> classDataCache =
+ private static Map<Class<?>, ClassDataHolder> classDataCache =
new WeakHashMap<Class<?>, ClassDataHolder>();
-
- private ELParserUtils() { }
+ private ELParserUtils() {
+ }
+
public static void verifyClassPropertiesAndMethods(Class<?> initialClass) throws ParsingException {
- resolveClassPropertiesAndMethods(initialClass);
+ resolveClassPropertiesAndMethods(initialClass);
}
private static ClassDataHolder resolveClassPropertiesAndMethods(Class<?> initialClass) throws ParsingException {
- ClassDataHolder classDataHolder = classDataCache.get(initialClass);
- if (classDataHolder == null) {
- classDataHolder = new ClassDataHolder();
- new ClassWalkingLogic(initialClass).walk(classDataHolder);
- classDataCache.put(initialClass, classDataHolder);
- }
-
- return classDataHolder;
+ ClassDataHolder classDataHolder = classDataCache.get(initialClass);
+ if (classDataHolder == null) {
+ classDataHolder = new ClassDataHolder();
+ new ClassWalkingLogic(initialClass).walk(classDataHolder);
+ classDataCache.put(initialClass, classDataHolder);
+ }
+
+ return classDataHolder;
}
-
+
/**
* This method determine type of parsed node and create wrapper for them, that extends AbstractTreeNode.
* If node type is not recognized - throws ParsingException.
+ *
* @param child - parsed node
+ * @return wrapper for parsed node(if node type is recognized), that implement ITreeNode interface.
* @throws ParsingException - if node type is not recognized.
- * @return wrapper for parsed node(if node type is recognized), that implement ITreeNode interface.
*/
public static ITreeNode determineNodeType(Node child) throws ParsingException {
ITreeNode treeNode = null;
@@ -249,43 +249,44 @@
}
//TODO: add support for closures
-
+
return treeNode;
}
/**
* This method return PropertyDescriptor by specified propertyName and clazz.
- * @param clazz - class to search
+ *
+ * @param clazz - class to search
* @param propertyName - propertyName to search
* @return property descriptor if found.
* @throws ParsingException if error occured.
*/
public static PropertyDescriptor getPropertyDescriptor(Class<?> clazz, String propertyName)
throws ParsingException {
- if (clazz == null) {
- return null;
- }
-
- ClassDataHolder classDataHolder = resolveClassPropertiesAndMethods(clazz);
- return classDataHolder.getResolvedProperties().get(propertyName);
+ if (clazz == null) {
+ return null;
+ }
+
+ ClassDataHolder classDataHolder = resolveClassPropertiesAndMethods(clazz);
+ return classDataHolder.getResolvedProperties().get(propertyName);
}
/**
* Returns wrapper classes for passed-in class. If type is primitive, then corresponding
- * wrapper class is returned (e.g. boolean -> Boolean), otherwise does nothing and returns
+ * wrapper class is returned (e.g. boolean -> Boolean), otherwise does nothing and returns
* passed-in class.
- *
+ *
* @return wrapper for primitive types, or passed-in class
*/
private static Class<?> getWrapperClass(Class<?> inClazz) {
- if (inClazz == null) {
- return null;
- }
-
- if (inClazz.isPrimitive()) {
- return getPrimitiveWrapper(inClazz);
+ if (inClazz == null) {
+ return null;
+ }
+
+ if (inClazz.isPrimitive()) {
+ return getPrimitiveWrapper(inClazz);
} else {
- return inClazz;
+ return inClazz;
}
}
@@ -293,14 +294,13 @@
* <p>Retrieve the property descriptors for the specified class,
* introspecting and caching them the first time a particular bean class
* is encountered.</p>
- *
+ * <p/>
* <p><strong>FIXME</strong> - Does not work with DynaBeans.</p>
*
* @param beanClass Bean class for which property descriptors are requested
* @return the property descriptors
- * @throws ParsingException if error occured.
- *
- * @exception IllegalArgumentException if <code>beanClass</code> is null
+ * @throws ParsingException if error occured.
+ * @throws IllegalArgumentException if <code>beanClass</code> is null
*/
private static PropertyDescriptor[] getPropertyDescriptors(Class<?> beanClass) throws ParsingException {
if (beanClass == null) {
@@ -318,7 +318,7 @@
descriptors = beanInfo.getPropertyDescriptors();
} catch (IntrospectionException e) {
return new PropertyDescriptor[0];
- }
+ }
if (descriptors == null) {
descriptors = new PropertyDescriptor[0];
@@ -330,56 +330,56 @@
private static boolean isMethodVisible(Method method) {
return !Modifier.isPrivate(method.getModifiers());
}
-
+
/**
* <p>Find an accessible method that matches the given name and has compatible parameters.
* Compatible parameters mean that every method parameter is assignable from
* the given parameters.
* In other words, it finds a method with the given name
* that will take the parameters given.<p>
- *
+ * <p/>
* <p>This method is slightly undeterminstic since it loops
* through methods names and return the first matching method.</p>
- *
+ * <p/>
* <p>This method is used by
* {@link
* #invokeMethod(Object object,String methodName,Object [] args,Class[] parameterTypes)}.
- *
+ * <p/>
* <p>This method can match primitive parameter by passing in wrapper classes.
* For example, a <code>Boolean</code> will match a primitive <code>boolean</code>
* parameter.
*
- * @param clazz find method in this class
- * @param methodName find method with this name
+ * @param clazz find method in this class
+ * @param methodName find method with this name
* @param parameterTypes find method with compatible parameters
* @return The accessible method
* @throws ParsingException if error occured.
*/
- public static Type getMatchingVisibleMethodReturnType(Class<?> clazz, final String methodName,
- Type[] parameterTypes) throws ParsingException {
-
- if (clazz == null) {
- return Object.class;
- }
-
- ClassDataHolder classDataHolder = resolveClassPropertiesAndMethods(clazz);
- List<Method> resolvedMethods = classDataHolder.getResolvedMethods();
+ public static Type getMatchingVisibleMethodReturnType(Class<?> clazz, final String methodName,
+ Type[] parameterTypes) throws ParsingException {
+ if (clazz == null) {
+ return Object.class;
+ }
+
+ ClassDataHolder classDataHolder = resolveClassPropertiesAndMethods(clazz);
+ List<Method> resolvedMethods = classDataHolder.getResolvedMethods();
+
// search through all methods
int paramSize = parameterTypes.length;
Method bestMatch = null;
float bestMatchCost = Float.MAX_VALUE;
float myCost = Float.MAX_VALUE;
- for (Method resolvedMethod: resolvedMethods) {
- if (!isMethodVisible(resolvedMethod)) {
- continue;
- }
-
- if (!resolvedMethod.getName().equals(methodName)) {
- continue;
- }
-
+ for (Method resolvedMethod : resolvedMethods) {
+ if (!isMethodVisible(resolvedMethod)) {
+ continue;
+ }
+
+ if (!resolvedMethod.getName().equals(methodName)) {
+ continue;
+ }
+
// compare parameters
Class<?>[] methodsParams = resolvedMethod.getParameterTypes();
int methodParamSize = methodsParams.length;
@@ -409,14 +409,15 @@
if (bestMatch != null) {
return bestMatch.getGenericReturnType();
} else {
- return Object.class;
+ return Object.class;
}
}
/**
* Returns the sum of the object transformation cost for each class in the source
* argument list.
- * @param srcArgs The source arguments
+ *
+ * @param srcArgs The source arguments
* @param destArgs The destination arguments
* @return The total transformation cost
*/
@@ -437,7 +438,8 @@
* Gets the number of steps required needed to turn the source class into the
* destination class. This represents the number of steps in the object hierarchy
* graph.
- * @param srcClass The source class
+ *
+ * @param srcClass The source class
* @param destClass The destination class
* @return The cost of transforming an object
*/
@@ -445,35 +447,35 @@
float cost = 0.0f;
if (ELParserUtils.isNullType(srcType)) {
- return cost;
+ return cost;
}
-
+
Class<?> srcClass = ELParserUtils.getRawType(srcType);
- Class<?> destClass = ELParserUtils.getRawType(destType);
+ Class<?> destClass = ELParserUtils.getRawType(destType);
- while (srcClass != null && !getWrapperClass(destClass).equals(getWrapperClass(srcClass))) {
- if (destClass.isInterface() && isAssignmentCompatible(destClass, srcClass)) {
+ while (srcClass != null && !getWrapperClass(destClass).equals(getWrapperClass(srcClass))) {
+ if (destClass.isInterface() && isAssignmentCompatible(destClass, srcClass)) {
- // slight penalty for interface match.
- // we still want an exact match to override an interface match, but
- // an interface match should override anything where we have to get a
- // superclass.
- cost += 0.25f;
+ // slight penalty for interface match.
+ // we still want an exact match to override an interface match, but
+ // an interface match should override anything where we have to get a
+ // superclass.
+ cost += 0.25f;
- break;
- }
+ break;
+ }
- cost++;
- srcClass = srcClass.getSuperclass();
- }
+ cost++;
+ srcClass = srcClass.getSuperclass();
+ }
- /*
- * If the destination class is null, we've travelled all the way up to
- * an Object match. We'll penalize this by adding 1.5 to the cost.
- */
- if (srcClass == null) {
- cost += 1.5f;
- }
+ /*
+ * If the destination class is null, we've travelled all the way up to
+ * an Object match. We'll penalize this by adding 1.5 to the cost.
+ */
+ if (srcClass == null) {
+ cost += 1.5f;
+ }
return cost;
}
@@ -481,7 +483,7 @@
/**
* <p>Determine whether a type can be used as a parameter in a method invocation.
* This method handles primitive conversions correctly.</p>
- *
+ * <p/>
* <p>In order words, it will match a <code>Boolean</code> to a <code>boolean</code>,
* a <code>Long</code> to a <code>long</code>,
* a <code>Float</code> to a <code>float</code>,
@@ -490,30 +492,30 @@
* Now logic widening matches are allowed.
* For example, a <code>Long</code> will not match a <code>int</code>.
*
- * @param parameterType the type of parameter accepted by the method
+ * @param parameterType the type of parameter accepted by the method
* @param parameterization the type of parameter being tested
- *
* @return true if the assignement is compatible.
*/
public static boolean isAssignmentCompatible(Type parameterType, Type parameterization) {
Class<?> parameterClass = ELParserUtils.getRawType(parameterType);
-
+
if (ELParserUtils.isNullType(parameterization)) {
- //null value can be assigned to any class except primitive
- return !parameterClass.isPrimitive();
- } else {
- Class<?> parameterWrappedClass = getWrapperClass(parameterClass);
- Class<?> parameterizationWrappedClass = getWrapperClass(ELParserUtils.getRawType(parameterization));
- return parameterWrappedClass.isAssignableFrom(parameterizationWrappedClass);
- }
+ //null value can be assigned to any class except primitive
+ return !parameterClass.isPrimitive();
+ } else {
+ Class<?> parameterWrappedClass = getWrapperClass(parameterClass);
+ Class<?> parameterizationWrappedClass = getWrapperClass(ELParserUtils.getRawType(parameterization));
+ return parameterWrappedClass.isAssignableFrom(parameterizationWrappedClass);
+ }
}
/**
* Gets the wrapper object class for the given primitive type class.
* For example, passing <code>boolean.class</code> returns <code>Boolean.class</code>
+ *
* @param primitiveType the primitive type class for which a match is to be found
* @return the wrapper type associated with the given primitive
- * or null if no match is found
+ * or null if no match is found
*/
private static Class<?> getPrimitiveWrapper(Class<?> primitiveType) {
@@ -535,8 +537,8 @@
} else if (char.class.equals(primitiveType)) {
return Character.class;
} else {
- throw new IllegalArgumentException(
- MessageFormat.format("Type {0} is not primitive!", primitiveType.getName()));
+ throw new IllegalArgumentException(
+ MessageFormat.format("Type {0} is not primitive!", primitiveType.getName()));
}
}
@@ -546,72 +548,72 @@
static class ClassWalkingLogic {
private Queue<Class<?>> classesList = new LinkedList<Class<?>>();
-
+
private Set<Class<?>> visitedClasses = new HashSet<Class<?>>();
-
+
public ClassWalkingLogic(Class<?> clazz) {
super();
-
+
this.classesList.add(clazz);
}
public void walk(ClassVisitor visitor) throws ParsingException {
- //BFS algorithm
- while (!classesList.isEmpty()) {
- Class<?> clazz = classesList.remove();
-
- visitor.visit(clazz);
+ //BFS algorithm
+ while (!classesList.isEmpty()) {
+ Class<?> clazz = classesList.remove();
- Class<?> superclass = clazz.getSuperclass();
- if (superclass != null) {
- if (visitedClasses.add(superclass)) {
- classesList.add(superclass);
- }
- }
-
- Class<?>[] interfaces = clazz.getInterfaces();
- if (interfaces != null) {
- for (Class<?> iface : interfaces) {
- if (visitedClasses.add(superclass)) {
- classesList.add(iface);
- }
- }
- }
- }
-
- //this is for the case when we started just from interface, not class
- if (visitedClasses.add(Object.class)) {
- visitor.visit(Object.class);
- }
+ visitor.visit(clazz);
+
+ Class<?> superclass = clazz.getSuperclass();
+ if (superclass != null) {
+ if (visitedClasses.add(superclass)) {
+ classesList.add(superclass);
+ }
+ }
+
+ Class<?>[] interfaces = clazz.getInterfaces();
+ if (interfaces != null) {
+ for (Class<?> iface : interfaces) {
+ if (visitedClasses.add(superclass)) {
+ classesList.add(iface);
+ }
+ }
+ }
+ }
+
+ //this is for the case when we started just from interface, not class
+ if (visitedClasses.add(Object.class)) {
+ visitor.visit(Object.class);
+ }
}
}
- public static boolean isNullType(Type type) {
- return type instanceof NullType;
- }
+ public static boolean isNullType(Type type) {
+ return type instanceof NullType;
+ }
- public static Type getLastTypeArgument(Type type) {
- Type[] actualTypeArguments = null;
- if (type instanceof ParameterizedType) {
- ParameterizedType parameterizedType = (ParameterizedType) type;
- actualTypeArguments = parameterizedType.getActualTypeArguments();
- }
-
- if (actualTypeArguments != null && actualTypeArguments.length != 0) {
- return actualTypeArguments[actualTypeArguments.length - 1];
- } else {
- return null;
- }
- }
+ public static Type getLastTypeArgument(Type type) {
+ Type[] actualTypeArguments = null;
+ if (type instanceof ParameterizedType) {
+ ParameterizedType parameterizedType = (ParameterizedType) type;
+ actualTypeArguments = parameterizedType.getActualTypeArguments();
+ }
- public static Class<?> getRawType(Type type) {
- if (type instanceof ParameterizedType) {
- ParameterizedType parameterizedType = (ParameterizedType) type;
- return (Class<?>) parameterizedType.getRawType();
- } else if (type instanceof Class<?>) {
- return (Class<?>) type;
- } else {
- return null;
- }
- }
+ if (actualTypeArguments != null && actualTypeArguments.length != 0) {
+ return actualTypeArguments[actualTypeArguments.length - 1];
+ } else {
+ return null;
+ }
+ }
+
+ public static Class<?> getRawType(Type type) {
+ if (type instanceof ParameterizedType) {
+ ParameterizedType parameterizedType = (ParameterizedType) type;
+ return (Class<?>) parameterizedType.getRawType();
+ } else if (type instanceof Class<?>) {
+ return (Class<?>) type;
+ } else {
+ return null;
+ }
+ }
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/ELVisitor.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/ELVisitor.java 2009-12-07 13:13:26 UTC (rev 16081)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/ELVisitor.java 2009-12-07 13:13:40 UTC (rev 16082)
@@ -19,8 +19,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-
-
package org.richfaces.cdk.parser.el;
import java.lang.reflect.Type;
@@ -33,16 +31,17 @@
/**
* Entry point for parsing EL expressions. @see parse() method.
+ *
* @author amarkhel
- *
*/
public final class ELVisitor {
- private String parsedExpression = null;
- private Type variableType = null;
boolean useConversionToString;
boolean useEmptinessCheck;
-
+
+ private String parsedExpression = null;
+ private Type variableType = null;
+
public boolean isUseConversionToString() {
return useConversionToString;
}
@@ -51,14 +50,14 @@
this.useConversionToString = needConversion;
}
- public boolean isUseEmptinessCheck() {
- return useEmptinessCheck;
- }
-
- public void setUseEmptinessCheck(boolean useCheckForEmpty) {
- this.useEmptinessCheck = useCheckForEmpty;
- }
-
+ public boolean isUseEmptinessCheck() {
+ return useEmptinessCheck;
+ }
+
+ public void setUseEmptinessCheck(boolean useCheckForEmpty) {
+ this.useEmptinessCheck = useCheckForEmpty;
+ }
+
public Type getVariableType() {
return variableType;
}
@@ -68,30 +67,31 @@
}
/**
- * @return the parsedExpression
- */
- public String getParsedExpression() {
- return parsedExpression;
- }
-
+ * @return the parsedExpression
+ */
+ public String getParsedExpression() {
+ return parsedExpression;
+ }
+
/**
* Parse specified EL expression and return Java code, that represent this expression
+ *
* @param expression - expression to resolve
* @param contextMap - Map<String, Class<?>> - context for search classes.
* @return generated Java code.
* @throws ParsingException - if error occurred during parsing.
*/
public void parse(String expression, Map<String, Type> contextMap) throws ParsingException {
- reset();
-
+ reset();
+
Node ret = ELParser.parse(expression);
if (ret instanceof AstCompositeExpression && ret.jjtGetNumChildren() >= 2) {
- //AstCompositeExpression with 2+ children is a mixed expression
- this.setUseConversionToString(true);
+ //AstCompositeExpression with 2+ children is a mixed expression
+ this.setUseConversionToString(true);
}
-
- parsedExpression = this.visit(ret, contextMap);
+
+ parsedExpression = this.visit(ret, contextMap);
}
private String visit(Node node, Map<String, Type> context) throws ParsingException {
@@ -112,11 +112,11 @@
return sb.toString();
}
-
+
private void reset() {
- parsedExpression = null;
- useConversionToString = false;
- useEmptinessCheck = false;
- variableType = null;
+ parsedExpression = null;
+ useConversionToString = false;
+ useEmptinessCheck = false;
+ variableType = null;
}
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/NullType.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/NullType.java 2009-12-07 13:13:26 UTC (rev 16081)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/NullType.java 2009-12-07 13:13:40 UTC (rev 16082)
@@ -25,11 +25,11 @@
/**
* @author Nick Belaevski
- *
*/
-public class NullType implements Type {
+public final class NullType implements Type {
- public static final NullType INSTANCE = new NullType();
-
- private NullType() {}
+ public static final NullType INSTANCE = new NullType();
+
+ private NullType() {
+ }
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AbstractBinaryOperationTreeNode.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AbstractBinaryOperationTreeNode.java 2009-12-07 13:13:26 UTC (rev 16081)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AbstractBinaryOperationTreeNode.java 2009-12-07 13:13:40 UTC (rev 16082)
@@ -32,40 +32,40 @@
/**
* <p>Abstract class for all binary (having two operands) operation expression nodes</p>
* <p>For operands <code>A</code> and <code>B</code> and operator <code>x</code> output is <code>(A x B)</code></p>
- *
+ *
* @author Nick Belaevski
*/
public abstract class AbstractBinaryOperationTreeNode extends AbstractTreeNode {
- private final String operatorString;
+ private final String operatorString;
- public AbstractBinaryOperationTreeNode(Node node, String operatorString) {
- super(node);
+ public AbstractBinaryOperationTreeNode(Node node, String operatorString) {
+ super(node);
- this.operatorString = operatorString;
- }
+ this.operatorString = operatorString;
+ }
- protected abstract Type getOperationType(Type firstArgumentType, Type secondArgumentType);
-
- /* (non-Javadoc)
- * @see org.richfaces.cdk.parser.el.node.AbstractTreeNode#visit(java.lang.StringBuilder, java.util.Map, org.richfaces.cdk.parser.el.ELVisitor)
- */
- @Override
- public void visit(StringBuilder sb, Map<String, Type> context,
- ELVisitor visitor) throws ParsingException {
+ protected abstract Type getOperationType(Type firstArgumentType, Type secondArgumentType);
+
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.parser.el.node.AbstractTreeNode#visit(java.lang.StringBuilder, java.util.Map, org.richfaces.cdk.parser.el.ELVisitor)
+ */
+ @Override
+ public void visit(StringBuilder sb, Map<String, Type> context,
+ ELVisitor visitor) throws ParsingException {
String firstChildOutput = getChildOutput(0, context, visitor);
Type firstChildType = visitor.getVariableType();
- String secondChildOutput = getChildOutput(1, context, visitor);
+ String secondChildOutput = getChildOutput(1, context, visitor);
Type secondChildType = visitor.getVariableType();
- sb.append(ELNodeConstants.LEFT_BRACKET);
+ sb.append(ELNodeConstants.LEFT_BRACKET);
- sb.append(firstChildOutput);
- sb.append(operatorString);
- sb.append(secondChildOutput);
-
- sb.append(ELNodeConstants.RIGHT_BRACKET);
-
- visitor.setVariableType(getOperationType(firstChildType, secondChildType));
- }
+ sb.append(firstChildOutput);
+ sb.append(operatorString);
+ sb.append(secondChildOutput);
+
+ sb.append(ELNodeConstants.RIGHT_BRACKET);
+
+ visitor.setVariableType(getOperationType(firstChildType, secondChildType));
+ }
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstBracketSuffixTreeNode.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstBracketSuffixTreeNode.java 2009-12-07 13:13:26 UTC (rev 16081)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstBracketSuffixTreeNode.java 2009-12-07 13:13:40 UTC (rev 16082)
@@ -19,8 +19,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-
-
package org.richfaces.cdk.parser.el.node;
import java.lang.reflect.Type;
@@ -37,7 +35,6 @@
* This class extend AbstractTreeNode and wrap AstBracketSuffix node.
*
* @author amarkhel
- *
*/
public class AstBracketSuffixTreeNode extends AbstractTreeNode {
public AstBracketSuffixTreeNode(Node node) {
@@ -48,35 +45,35 @@
public void visit(StringBuilder sb, Map<String, Type> context, ELVisitor visitor) throws ParsingException {
Type lastVariableType = visitor.getVariableType();
Class<?> rawType = ELParserUtils.getRawType(lastVariableType);
-
+
String suffixValue = getChildOutput(0, context, visitor);
if (rawType != null && rawType.isArray()) {
- sb.append(ELNodeConstants.LEFT_SQUARE_BRACKET);
- sb.append(suffixValue);
- sb.append(ELNodeConstants.RIGHT_SQUARE_BRACKET);
-
- //TODO: support for generified arrays
- visitor.setVariableType(rawType.getComponentType());
+ sb.append(ELNodeConstants.LEFT_SQUARE_BRACKET);
+ sb.append(suffixValue);
+ sb.append(ELNodeConstants.RIGHT_SQUARE_BRACKET);
+
+ //TODO: support for generified arrays
+ visitor.setVariableType(rawType.getComponentType());
} else {
- Type collectionValueType = null;
- if (rawType != null &&
- (List.class.isAssignableFrom(rawType) || Map.class.isAssignableFrom(rawType))) {
-
- collectionValueType = ELParserUtils.getLastTypeArgument(lastVariableType);
+ Type collectionValueType = null;
+ if (rawType != null &&
+ (List.class.isAssignableFrom(rawType) || Map.class.isAssignableFrom(rawType))) {
+
+ collectionValueType = ELParserUtils.getLastTypeArgument(lastVariableType);
}
-
+
if (collectionValueType == null) {
- collectionValueType = Object.class;
+ collectionValueType = Object.class;
}
-
- sb.append(ELNodeConstants.DOT);
- sb.append(ELNodeConstants.GET_FUNCTION);
- sb.append(ELNodeConstants.LEFT_BRACKET);
- sb.append(suffixValue);
- sb.append(ELNodeConstants.RIGHT_BRACKET);
-
- visitor.setVariableType(collectionValueType);
+
+ sb.append(ELNodeConstants.DOT);
+ sb.append(ELNodeConstants.GET_FUNCTION);
+ sb.append(ELNodeConstants.LEFT_BRACKET);
+ sb.append(suffixValue);
+ sb.append(ELNodeConstants.RIGHT_BRACKET);
+
+ visitor.setVariableType(collectionValueType);
}
}
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstDeferredOrDynamicExpressionTreeNode.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstDeferredOrDynamicExpressionTreeNode.java 2009-12-07 13:13:26 UTC (rev 16081)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstDeferredOrDynamicExpressionTreeNode.java 2009-12-07 13:13:40 UTC (rev 16082)
@@ -19,8 +19,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-
-
package org.richfaces.cdk.parser.el.node;
import java.lang.reflect.Type;
@@ -36,11 +34,10 @@
* This class extend AbstractTreeNode and wrap AstDeferredExpression node.
*
* @author amarkhel
- *
*/
public class AstDeferredOrDynamicExpressionTreeNode extends AbstractTreeNode {
-
- public AstDeferredOrDynamicExpressionTreeNode(Node node) {
+
+ public AstDeferredOrDynamicExpressionTreeNode(Node node) {
super(node);
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstFunctionTreeNode.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstFunctionTreeNode.java 2009-12-07 13:13:26 UTC (rev 16081)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstFunctionTreeNode.java 2009-12-07 13:13:40 UTC (rev 16082)
@@ -19,8 +19,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-
-
package org.richfaces.cdk.parser.el.node;
import java.lang.reflect.Type;
@@ -37,7 +35,6 @@
* This class extend AbstractTreeNode and wrap AstFunction node.
*
* @author amarkhel
- *
*/
public class AstFunctionTreeNode extends AbstractTreeNode {
public AstFunctionTreeNode(Node node) {
@@ -48,17 +45,17 @@
public void visit(StringBuilder sb, Map<String, Type> context, ELVisitor visitor) throws ParsingException {
AstFunction functionNode = (AstFunction) getNode();
String functionPrefix = functionNode.getPrefix();
- String functionName = functionNode.getLocalName();
+ String functionName = functionNode.getLocalName();
- if (functionPrefix != null && functionPrefix.length() != 0) {
- //TODO: this should be a property getter, not property name
- //TODO: support "super" keyword
- sb.append(functionPrefix);
- } else {
- sb.append(ELNodeConstants.THIS_PREFIX);
- }
- sb.append(ELNodeConstants.DOT);
-
+ if (functionPrefix != null && functionPrefix.length() != 0) {
+ //TODO: this should be a property getter, not property name
+ //TODO: support "super" keyword
+ sb.append(functionPrefix);
+ } else {
+ sb.append(ELNodeConstants.THIS_PREFIX);
+ }
+ sb.append(ELNodeConstants.DOT);
+
sb.append(functionName);
sb.append(ELNodeConstants.LEFT_BRACKET);
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstIdentifierTreeNode.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstIdentifierTreeNode.java 2009-12-07 13:13:26 UTC (rev 16081)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstIdentifierTreeNode.java 2009-12-07 13:13:40 UTC (rev 16082)
@@ -19,8 +19,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-
-
package org.richfaces.cdk.parser.el.node;
import java.lang.reflect.Type;
@@ -34,24 +32,23 @@
* This class extend AbstractTreeNode and wrap AstIdentifier node.
*
* @author amarkhel
- *
*/
public class AstIdentifierTreeNode extends AbstractTreeNode {
- public AstIdentifierTreeNode(Node node) {
- super(node);
- }
+ public AstIdentifierTreeNode(Node node) {
+ super(node);
+ }
- @Override
- public void visit(StringBuilder sb, Map<String, Type> context, ELVisitor visitor) throws ParsingException {
- String variableName = getNode().getImage();
+ @Override
+ public void visit(StringBuilder sb, Map<String, Type> context, ELVisitor visitor) throws ParsingException {
+ String variableName = getNode().getImage();
- Type variableType = context.get(variableName);
- if (variableType == null) {
- throw new ParsingException("No instance found in context for identifier " + variableName);
- }
-
- //TODO: implement variable mapper like "utils" -> "this.getUtils()"
- visitor.setVariableType(variableType);
- sb.append(variableName);
- }
+ Type variableType = context.get(variableName);
+ if (variableType == null) {
+ throw new ParsingException("No instance found in context for identifier " + variableName);
+ }
+
+ //TODO: implement variable mapper like "utils" -> "this.getUtils()"
+ visitor.setVariableType(variableType);
+ sb.append(variableName);
+ }
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstMethodSuffixTreeNode.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstMethodSuffixTreeNode.java 2009-12-07 13:13:26 UTC (rev 16081)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstMethodSuffixTreeNode.java 2009-12-07 13:13:40 UTC (rev 16082)
@@ -19,8 +19,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-
-
package org.richfaces.cdk.parser.el.node;
import java.lang.reflect.Type;
@@ -38,25 +36,24 @@
* This class extend AbstractTreeNode and wrap AstMethodSuffix node.
*
* @author amarkhel
- *
*/
public class AstMethodSuffixTreeNode extends AbstractTreeNode {
- private static final Type[] EMPTY_TYPES_ARRAY = new Type[0];
+ private static final Type[] EMPTY_TYPES_ARRAY = new Type[0];
- public AstMethodSuffixTreeNode(Node node) {
+ public AstMethodSuffixTreeNode(Node node) {
super(node);
}
@Override
public void visit(StringBuilder sb, Map<String, Type> context, ELVisitor visitor) throws ParsingException {
String methodName = getNode().getImage();
-
+
Class<?> objectClass = ELParserUtils.getRawType(visitor.getVariableType());
List<Type> argumentTypes = new ArrayList<Type>();
-
+
sb.append(ELNodeConstants.DOT);
- sb.append(methodName);
+ sb.append(methodName);
sb.append(ELNodeConstants.LEFT_BRACKET);
int childrenCount = getChildrenCount();
@@ -67,16 +64,16 @@
}
String childOutput = getChildOutput(k, context, visitor);
sb.append(childOutput);
-
+
//TODO: handle generic matches -?
argumentTypes.add(visitor.getVariableType());
}
sb.append(ELNodeConstants.RIGHT_BRACKET);
-
- Type returnType = ELParserUtils.getMatchingVisibleMethodReturnType(objectClass, methodName,
- argumentTypes.toArray(EMPTY_TYPES_ARRAY));
-
+
+ Type returnType = ELParserUtils.getMatchingVisibleMethodReturnType(objectClass, methodName,
+ argumentTypes.toArray(EMPTY_TYPES_ARRAY));
+
visitor.setVariableType(returnType);
}
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstPropertySuffixTreeNode.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstPropertySuffixTreeNode.java 2009-12-07 13:13:26 UTC (rev 16081)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstPropertySuffixTreeNode.java 2009-12-07 13:13:40 UTC (rev 16082)
@@ -19,8 +19,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-
-
package org.richfaces.cdk.parser.el.node;
import java.beans.PropertyDescriptor;
@@ -38,54 +36,53 @@
* This class extend AbstractTreeNode and wrap AstPropertySuffix node.
*
* @author amarkhel
- *
*/
public class AstPropertySuffixTreeNode extends AbstractTreeNode {
- public AstPropertySuffixTreeNode(Node node) {
+ public AstPropertySuffixTreeNode(Node node) {
super(node);
}
private final String capitalize(String propertyName) {
- char[] chars = propertyName.toCharArray();
- chars[0] = Character.toUpperCase(chars[0]);
- return new String(chars);
+ char[] chars = propertyName.toCharArray();
+ chars[0] = Character.toUpperCase(chars[0]);
+ return new String(chars);
}
-
+
private final Method getReadMethod(Class<?> clazz, String propertyName) throws ParsingException {
if (clazz == null) {
- return null;
+ return null;
}
-
+
PropertyDescriptor propertyDescriptor = ELParserUtils.getPropertyDescriptor(clazz, propertyName);
if (propertyDescriptor == null) {
- return null;
+ return null;
}
-
+
return propertyDescriptor.getReadMethod();
}
-
+
@Override
public void visit(StringBuilder sb, Map<String, Type> context, ELVisitor visitor) throws ParsingException {
String propertyName = getNode().getImage();
Type variableType = visitor.getVariableType();
Class<?> clazz = ELParserUtils.getRawType(variableType);
-
+
String readMethodName;
Type readMethodReturnType;
-
+
Method readMethod = getReadMethod(clazz, propertyName);
if (readMethod != null) {
- readMethodName = readMethod.getName();
- readMethodReturnType = readMethod.getGenericReturnType();
+ readMethodName = readMethod.getName();
+ readMethodReturnType = readMethod.getGenericReturnType();
} else {
- readMethodName = ELNodeConstants.GETTER_PREFIX + capitalize(propertyName);
- readMethodReturnType = Object.class;
+ readMethodName = ELNodeConstants.GETTER_PREFIX + capitalize(propertyName);
+ readMethodReturnType = Object.class;
}
visitor.setVariableType(readMethodReturnType);
-
+
sb.append(ELNodeConstants.DOT);
sb.append(readMethodName);
sb.append(ELNodeConstants.LEFT_BRACKET);
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstValueTreeNode.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstValueTreeNode.java 2009-12-07 13:13:26 UTC (rev 16081)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/AstValueTreeNode.java 2009-12-07 13:13:40 UTC (rev 16082)
@@ -19,8 +19,6 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-
-
package org.richfaces.cdk.parser.el.node;
import java.lang.reflect.Type;
@@ -34,7 +32,6 @@
* This class extend AbstractTreeNode and wrap AstValue node.
*
* @author amarkhel
- *
*/
public class AstValueTreeNode extends AbstractTreeNode {
public AstValueTreeNode(Node node) {
@@ -44,9 +41,9 @@
@Override
public void visit(StringBuilder sb, Map<String, Type> context, ELVisitor visitor) throws ParsingException {
int childrenCount = getChildrenCount();
- for (int i = 0; i < childrenCount; i++) {
+ for (int i = 0; i < childrenCount; i++) {
String childOutput = getChildOutput(i, context, visitor);
- sb.append(childOutput);
+ sb.append(childOutput);
}
//variable type has been already set by getChildOuput()
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/BinaryArithmeticIntegerOperationTreeNode.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/BinaryArithmeticIntegerOperationTreeNode.java 2009-12-07 13:13:26 UTC (rev 16081)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/BinaryArithmeticIntegerOperationTreeNode.java 2009-12-07 13:13:40 UTC (rev 16082)
@@ -31,21 +31,21 @@
*/
public class BinaryArithmeticIntegerOperationTreeNode extends AbstractBinaryOperationTreeNode {
- /**
- * @param node
- * @param operatorString
- */
- public BinaryArithmeticIntegerOperationTreeNode(Node node, String operatorString) {
- super(node, operatorString);
- }
+ /**
+ * @param node
+ * @param operatorString
+ */
+ public BinaryArithmeticIntegerOperationTreeNode(Node node, String operatorString) {
+ super(node, operatorString);
+ }
- /* (non-Javadoc)
- * @see org.richfaces.cdk.parser.el.node.AbstractBinaryOperationTreeNode#getOperationType(java.lang.reflect.Type, java.lang.reflect.Type)
- */
- @Override
- protected Type getOperationType(Type firstArgumentType,
- Type secondArgumentType) {
- return Integer.TYPE;
- }
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.parser.el.node.AbstractBinaryOperationTreeNode#getOperationType(java.lang.reflect.Type, java.lang.reflect.Type)
+ */
+ @Override
+ protected Type getOperationType(Type firstArgumentType,
+ Type secondArgumentType) {
+ return Integer.TYPE;
+ }
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/BinaryArithmeticOperationTreeNode.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/BinaryArithmeticOperationTreeNode.java 2009-12-07 13:13:26 UTC (rev 16081)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/BinaryArithmeticOperationTreeNode.java 2009-12-07 13:13:40 UTC (rev 16082)
@@ -32,28 +32,28 @@
*/
public class BinaryArithmeticOperationTreeNode extends AbstractBinaryOperationTreeNode {
- /**
- * @param node
- * @param operatorString
- */
- public BinaryArithmeticOperationTreeNode(Node node, String operatorString) {
- super(node, operatorString);
- }
+ /**
+ * @param node
+ * @param operatorString
+ */
+ public BinaryArithmeticOperationTreeNode(Node node, String operatorString) {
+ super(node, operatorString);
+ }
- /* (non-Javadoc)
- * @see org.richfaces.cdk.parser.el.node.AbstractBinaryOperationTreeNode#getOperationType(java.lang.reflect.Type, java.lang.reflect.Type)
- */
- @Override
- protected Type getOperationType(Type firstArgumentType,
- Type secondArgumentType) {
-
- if (ELParserUtils.isAssignmentCompatible(firstArgumentType, Double.class) ||
- ELParserUtils.isAssignmentCompatible(secondArgumentType, Double.class)) {
-
- return Double.TYPE;
- }
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.parser.el.node.AbstractBinaryOperationTreeNode#getOperationType(java.lang.reflect.Type, java.lang.reflect.Type)
+ */
+ @Override
+ protected Type getOperationType(Type firstArgumentType,
+ Type secondArgumentType) {
- return Integer.TYPE;
- }
+ if (ELParserUtils.isAssignmentCompatible(firstArgumentType, Double.class) ||
+ ELParserUtils.isAssignmentCompatible(secondArgumentType, Double.class)) {
+ return Double.TYPE;
+ }
+
+ return Integer.TYPE;
+ }
+
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/BinaryBooleanOperationTreeNode.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/BinaryBooleanOperationTreeNode.java 2009-12-07 13:13:26 UTC (rev 16081)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/BinaryBooleanOperationTreeNode.java 2009-12-07 13:13:40 UTC (rev 16082)
@@ -31,21 +31,21 @@
*/
public class BinaryBooleanOperationTreeNode extends AbstractBinaryOperationTreeNode {
- /**
- * @param node
- * @param operatorString
- */
- public BinaryBooleanOperationTreeNode(Node node, String operatorString) {
- super(node, operatorString);
- }
+ /**
+ * @param node
+ * @param operatorString
+ */
+ public BinaryBooleanOperationTreeNode(Node node, String operatorString) {
+ super(node, operatorString);
+ }
- /* (non-Javadoc)
- * @see org.richfaces.cdk.parser.el.node.AbstractBinaryOperationTreeNode#getOperationType(java.lang.reflect.Type, java.lang.reflect.Type)
- */
- @Override
- protected Type getOperationType(Type firstArgumentType,
- Type secondArgumentType) {
- return Boolean.TYPE;
- }
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.parser.el.node.AbstractBinaryOperationTreeNode#getOperationType(java.lang.reflect.Type, java.lang.reflect.Type)
+ */
+ @Override
+ protected Type getOperationType(Type firstArgumentType,
+ Type secondArgumentType) {
+ return Boolean.TYPE;
+ }
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/ConstantValueTreeNode.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/ConstantValueTreeNode.java 2009-12-07 13:13:26 UTC (rev 16081)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/parser/el/node/ConstantValueTreeNode.java 2009-12-07 13:13:40 UTC (rev 16082)
@@ -31,37 +31,40 @@
/**
* @author Nick Belaevski
- *
*/
-public class ConstantValueTreeNode extends AbstractTreeNode {
+public final class ConstantValueTreeNode extends AbstractTreeNode {
- private final String value;
+ //XXX what class to use for null object: Void.class or null - null will be used
+ public static final ConstantValueTreeNode NULL_NODE =
+ new ConstantValueTreeNode(ELNodeConstants.NULL_VALUE, NullType.INSTANCE);
- private final Type type;
-
- //XXX what class to use for null object: Void.class or null - null will be used
- public static final ConstantValueTreeNode NULL_NODE = new ConstantValueTreeNode(ELNodeConstants.NULL_VALUE, NullType.INSTANCE);
-
- public static final ConstantValueTreeNode TRUE_NODE = new ConstantValueTreeNode(ELNodeConstants.TRUE_VALUE, Boolean.TYPE);
-
- public static final ConstantValueTreeNode FALSE_NODE = new ConstantValueTreeNode(ELNodeConstants.FALSE_VALUE, Boolean.TYPE);
+ public static final ConstantValueTreeNode TRUE_NODE =
+ new ConstantValueTreeNode(ELNodeConstants.TRUE_VALUE, Boolean.TYPE);
- private ConstantValueTreeNode(String value, Type type) {
- super(null);
-
- this.value = value;
- this.type = type;
- }
+ public static final ConstantValueTreeNode FALSE_NODE =
+ new ConstantValueTreeNode(ELNodeConstants.FALSE_VALUE, Boolean.TYPE);
- /* (non-Javadoc)
- * @see org.richfaces.cdk.parser.el.node.AbstractTreeNode#visit(java.lang.StringBuilder, java.util.Map, org.richfaces.cdk.parser.el.ELVisitor)
- */
- @Override
- public void visit(StringBuilder sb, Map<String, Type> context,
- ELVisitor visitor) throws ParsingException {
+ private final String value;
- sb.append(value);
- visitor.setVariableType(type);
- }
-
+ private final Type type;
+
+ private ConstantValueTreeNode(String value, Type type) {
+ super(null);
+
+ this.value = value;
+ this.type = type;
+ }
+
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.parser.el.node.AbstractTreeNode#visit(java.lang.StringBuilder, java.util.Map,
+ * org.richfaces.cdk.parser.el.ELVisitor)
+ */
+ @Override
+ public void visit(StringBuilder sb, Map<String, Type> context,
+ ELVisitor visitor) throws ParsingException {
+
+ sb.append(value);
+ visitor.setVariableType(type);
+ }
+
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererClassVisitor.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererClassVisitor.java 2009-12-07 13:13:26 UTC (rev 16081)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/templatecompiler/RendererClassVisitor.java 2009-12-07 13:13:40 UTC (rev 16082)
@@ -71,78 +71,81 @@
/**
* <p class="changed_added_4_0"></p>
+ *
* @author asmirnov(a)exadel.com
- *
*/
public class RendererClassVisitor implements TemplateVisitor {
- /**
- *
- */
- static final String RESPONSE_WRITER_VARIABLE = "responseWriter";
- /**
- *
- */
- static final String COMPONENT_VARIABLE = "cc";
- /**
- *
- */
- static final String THIS_VARIABLE = "this";
- /**
- *
- */
- static final String FACES_CONTEXT_VARIABLE = "facesContext";
- /**
- *
- */
- static final String CLIENT_ID_VARIABLE = "clientId";
- /**
- *
- */
- static final String RENDERER_UTILS_VARIABLE = "utils";
-
- static final String RENDERER_UTILS_CLASS_NAME = "org.ajax4jsf.renderkit.RendererUtils";
-
- private static final Set<String> DEFAULT_NAMESPACES = new HashSet<String>();
-
- static {
- DEFAULT_NAMESPACES.add("http://richfaces.org/xhtml-el");
- DEFAULT_NAMESPACES.add("http://www.w3.org/1999/xhtml");
- }
+ /**
+ *
+ */
+ static final String RESPONSE_WRITER_VARIABLE = "responseWriter";
+ /**
+ *
+ */
+ static final String COMPONENT_VARIABLE = "cc";
+ /**
+ *
+ */
+ static final String THIS_VARIABLE = "this";
+ /**
+ *
+ */
+ static final String FACES_CONTEXT_VARIABLE = "facesContext";
+ /**
+ *
+ */
+ static final String CLIENT_ID_VARIABLE = "clientId";
+ /**
+ *
+ */
+ static final String RENDERER_UTILS_VARIABLE = "utils";
- private static final String[] GUESS_PACKAGES;
-
- static {
- Class<?>[] GUESS_PACKAGES_CLASSES = {
- UIComponent.class,
- Behavior.class,
- Converter.class,
- FacesContext.class,
- Collection.class,
- Object.class
- };
-
- GUESS_PACKAGES = new String[GUESS_PACKAGES_CLASSES.length];
- int i = 0;
- for (Class<?> guessPackageClass : GUESS_PACKAGES_CLASSES) {
- GUESS_PACKAGES[i++] = guessPackageClass.getPackage().getName();
- }
- }
-
+ static final String RENDERER_UTILS_CLASS_NAME = "org.ajax4jsf.renderkit.RendererUtils";
+
+ private static final Set<String> DEFAULT_NAMESPACES = new HashSet<String>();
+
+ static {
+ DEFAULT_NAMESPACES.add("http://richfaces.org/xhtml-el");
+ DEFAULT_NAMESPACES.add("http://www.w3.org/1999/xhtml");
+ }
+
+ private static final String[] GUESS_PACKAGES;
+
+ static {
+ Class<?>[] guessPackagesClasses = {
+ UIComponent.class,
+ Behavior.class,
+ Converter.class,
+ FacesContext.class,
+ Collection.class,
+ Object.class
+ };
+
+ GUESS_PACKAGES = new String[guessPackagesClasses.length];
+ int i = 0;
+ for (Class<?> guessPackageClass : guessPackagesClasses) {
+ GUESS_PACKAGES[i++] = guessPackageClass.getPackage().getName();
+ }
+ }
+
private static final Map<String, Set<String>> ELEMENTS_ATTRIBUTES;
+
+ protected MethodBodyStatementsContainer currentStatement;
+
private JavaClass rendererClass;
private CompositeInterface compositeInterface;
- protected MethodBodyStatementsContainer currentStatement;
private final LinkedList<MethodBodyStatementsContainer> statements = Lists.newLinkedList();
private Map<String, Type> localsTypesMap;
- private ClassLoader classLoader;
- private boolean isAddedMethodForConversionToString;
- private boolean isAddedMethodForCheckingEmptiness;
-
+ private ClassLoader classLoader;
+ private boolean isAddedMethodForConversionToString;
+ private boolean isAddedMethodForCheckingEmptiness;
+
static {
- InputStream serializedAttributesStream = RendererClassVisitor.class.getResourceAsStream("/META-INF/schema/attributes.ser");
+ InputStream serializedAttributesStream =
+ RendererClassVisitor.class.getResourceAsStream("/META-INF/schema/attributes.ser");
try {
@@ -163,80 +166,85 @@
}
}
}
-
- private void initializeJavaClass() {
- this.rendererClass = createJavaClassByName(compositeInterface.getJavaClass());
- this.rendererClass.addModifier(JavaModifier.PUBLIC);
+
+ public RendererClassVisitor(CompositeInterface compositeInterface, ClassLoader classLoader) {
+ this.compositeInterface = compositeInterface;
+ this.classLoader = classLoader;
+ }
+
+ private void initializeJavaClass() {
+ this.rendererClass = createJavaClassByName(compositeInterface.getJavaClass());
+ this.rendererClass.addModifier(JavaModifier.PUBLIC);
this.rendererClass.setSuperClass(createJavaClassByName(compositeInterface.getBaseClass()));
this.rendererClass.addImport(FacesContext.class);
- this.rendererClass.addImport(ResponseWriter.class);
+ this.rendererClass.addImport(ResponseWriter.class);
this.rendererClass.addImport(UIComponent.class);
- this.rendererClass.addImport(RENDERER_UTILS_CLASS_NAME);
+ this.rendererClass.addImport(RENDERER_UTILS_CLASS_NAME);
- this.rendererClass.addAnnotation(Generated.class, "\"RichFaces CDK\"");
- //TODO remove this after improving Java model
- this.rendererClass.addImport(Generated.class);
-
+ this.rendererClass.addAnnotation(Generated.class, "\"RichFaces CDK\"");
+ //TODO remove this after improving Java model
+ this.rendererClass.addImport(Generated.class);
+
this.createMethodContext();
- }
+ }
private void addMethodForConversionToString() {
- if (!isAddedMethodForConversionToString) {
- isAddedMethodForConversionToString = true;
-
- JavaMethod conversionMethod = new JavaMethod("convertToString", String.class,
- new Argument("object", Object.class));
-
- conversionMethod.addModifier(JavaModifier.PRIVATE);
- conversionMethod.addModifier(JavaModifier.FINAL);
+ if (!isAddedMethodForConversionToString) {
+ isAddedMethodForConversionToString = true;
- MethodBody conversionMethodBody = new MethodBody(conversionMethod);
- conversionMethod.setMethodBody(conversionMethodBody);
- conversionMethodBody.addStatement(new ConversionToStringMethodBodyStatement());
-
- rendererClass.addMethod(conversionMethod);
- }
+ JavaMethod conversionMethod = new JavaMethod("convertToString", String.class,
+ new Argument("object", Object.class));
+
+ conversionMethod.addModifier(JavaModifier.PRIVATE);
+ conversionMethod.addModifier(JavaModifier.FINAL);
+
+ MethodBody conversionMethodBody = new MethodBody(conversionMethod);
+ conversionMethod.setMethodBody(conversionMethodBody);
+ conversionMethodBody.addStatement(new ConversionToStringMethodBodyStatement());
+
+ rendererClass.addMethod(conversionMethod);
+ }
}
private void addMethodForCheckingEmptiness() {
- if (!isAddedMethodForCheckingEmptiness) {
- isAddedMethodForCheckingEmptiness = true;
+ if (!isAddedMethodForCheckingEmptiness) {
+ isAddedMethodForCheckingEmptiness = true;
- JavaMethod checkingMethod = new JavaMethod("isEmpty", boolean.class,
- new Argument("object", Object.class));
-
- checkingMethod.addModifier(JavaModifier.PRIVATE);
- checkingMethod.addModifier(JavaModifier.FINAL);
+ JavaMethod checkingMethod = new JavaMethod("isEmpty", boolean.class,
+ new Argument("object", Object.class));
- MethodBody checkingMethodBody = new MethodBody(checkingMethod);
- checkingMethod.setMethodBody(checkingMethodBody);
- checkingMethodBody.addStatement(new EmptinessCheckingMethodBodyStatement());
-
- rendererClass.addMethod(checkingMethod);
- }
+ checkingMethod.addModifier(JavaModifier.PRIVATE);
+ checkingMethod.addModifier(JavaModifier.FINAL);
+
+ MethodBody checkingMethodBody = new MethodBody(checkingMethod);
+ checkingMethod.setMethodBody(checkingMethodBody);
+ checkingMethodBody.addStatement(new EmptinessCheckingMethodBodyStatement());
+
+ rendererClass.addMethod(checkingMethod);
+ }
}
-
+
private String compileEl(String expression, Class<?> type) {
- try {
- ELVisitor elVisitor = new ELVisitor();
- elVisitor.parse(expression, localsTypesMap);
- String parsedExpression = elVisitor.getParsedExpression();
-
- if (elVisitor.isUseConversionToString()) {
- addMethodForConversionToString();
- }
-
- if (elVisitor.isUseEmptinessCheck()) {
- addMethodForCheckingEmptiness();
- }
-
- return parsedExpression + "/* " + expression.trim() + " */";
- } catch (ParsingException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- throw new RuntimeException(e.getMessage());
- }
+ try {
+ ELVisitor elVisitor = new ELVisitor();
+ elVisitor.parse(expression, localsTypesMap);
+ String parsedExpression = elVisitor.getParsedExpression();
+
+ if (elVisitor.isUseConversionToString()) {
+ addMethodForConversionToString();
+ }
+
+ if (elVisitor.isUseEmptinessCheck()) {
+ addMethodForCheckingEmptiness();
+ }
+
+ return parsedExpression + "/* " + expression.trim() + " */";
+ } catch (ParsingException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ throw new RuntimeException(e.getMessage());
+ }
//
// if (Boolean.class.isAssignableFrom(type)) {
// //TODO just a stub!
@@ -245,63 +253,63 @@
//
// return quote(expression) + " /* " + expression.trim() + " */";
}
-
- private String getElExpressionContainerType(String value) {
- // TODO Auto-generated method stub
- return Object.class.getName();
- }
- private String getElExpressionType(String value) {
- // TODO Auto-generated method stub
- return String.class.getName();
- }
-
+ private String getElExpressionContainerType(String value) {
+ // TODO Auto-generated method stub
+ return Object.class.getName();
+ }
+
+ private String getElExpressionType(String value) {
+ // TODO Auto-generated method stub
+ return String.class.getName();
+ }
+
private boolean isDefaultNamespace(String namespaceURI) {
- //TODO - another namespaces
- if (namespaceURI == null || namespaceURI.length() == 0) {
- return true;
- }
-
- if (DEFAULT_NAMESPACES.contains(namespaceURI)) {
- return true;
- }
-
- return false;
+ //TODO - another namespaces
+ if (namespaceURI == null || namespaceURI.length() == 0) {
+ return true;
+ }
+
+ if (DEFAULT_NAMESPACES.contains(namespaceURI)) {
+ return true;
+ }
+
+ return false;
}
private void createMethodContext() {
- this.currentStatement = new MethodBody();
- this.localsTypesMap = new HashMap<String, Type>();
- localsTypesMap.put(FACES_CONTEXT_VARIABLE, FacesContext.class);
- localsTypesMap.put(RESPONSE_WRITER_VARIABLE, ResponseWriter.class);
- localsTypesMap.put(CLIENT_ID_VARIABLE, String.class);
-
- //TODO: try load component class
- localsTypesMap.put(COMPONENT_VARIABLE, UIComponent.class);
- //TODO: try load renderer class
- localsTypesMap.put(THIS_VARIABLE, Renderer.class);
+ this.currentStatement = new MethodBody();
+ this.localsTypesMap = new HashMap<String, Type>();
+ localsTypesMap.put(FACES_CONTEXT_VARIABLE, FacesContext.class);
+ localsTypesMap.put(RESPONSE_WRITER_VARIABLE, ResponseWriter.class);
+ localsTypesMap.put(CLIENT_ID_VARIABLE, String.class);
+
+ //TODO: try load component class
+ localsTypesMap.put(COMPONENT_VARIABLE, UIComponent.class);
+ //TODO: try load renderer class
+ localsTypesMap.put(THIS_VARIABLE, Renderer.class);
}
-
+
private void flushToEncodeMethod(String encodeMethodName) {
- if (!this.currentStatement.isEmpty()) {
- Argument facesContextArgument = new Argument(FACES_CONTEXT_VARIABLE, FacesContext.class);
- Argument componentArgument = new Argument(COMPONENT_VARIABLE, UIComponent.class);
-
- JavaMethod javaMethod = new JavaMethod(encodeMethodName, facesContextArgument, componentArgument);
- javaMethod.addModifier(JavaModifier.PUBLIC);
- javaMethod.addAnnotation(Override.class);
- javaMethod.getExceptions().add(IOException.class);
-
- MethodBody methodBody = (MethodBody) currentStatement;
- javaMethod.setMethodBody(methodBody);
-
- methodBody.addStatement(0, new EncodeMethodPrefaceStatement());
- rendererClass.addMethod(javaMethod);
- }
+ if (!this.currentStatement.isEmpty()) {
+ Argument facesContextArgument = new Argument(FACES_CONTEXT_VARIABLE, FacesContext.class);
+ Argument componentArgument = new Argument(COMPONENT_VARIABLE, UIComponent.class);
- createMethodContext();
+ JavaMethod javaMethod = new JavaMethod(encodeMethodName, facesContextArgument, componentArgument);
+ javaMethod.addModifier(JavaModifier.PUBLIC);
+ javaMethod.addAnnotation(Override.class);
+ javaMethod.getExceptions().add(IOException.class);
+
+ MethodBody methodBody = (MethodBody) currentStatement;
+ javaMethod.setMethodBody(methodBody);
+
+ methodBody.addStatement(0, new EncodeMethodPrefaceStatement());
+ rendererClass.addMethod(javaMethod);
+ }
+
+ createMethodContext();
}
-
+
private JavaClass createJavaClassByName(String fullName) {
String simpleName = null;
String packageName = "";
@@ -316,144 +324,143 @@
return new JavaClass(simpleName, new JavaPackage(packageName));
}
-
+
//TODO handle arrays and generics
- private Class<?> getClasByObjectTypeName(String type) {
- Class<?> result = null;
-
- int dotIndex = type.indexOf('.');
- if (dotIndex < 0) {
- //guess type
- for (String guessPackage : GUESS_PACKAGES) {
- try {
- result = classLoader.loadClass(guessPackage + "." + type);
- break;
- } catch (ClassNotFoundException e) {
- //ignore
- }
- }
- }
-
- if (result == null) {
- try {
- classLoader.loadClass(type);
- } catch (ClassNotFoundException e) {
- //ignore
- }
- }
+ private Class<?> getClasByObjectTypeName(String type) {
+ Class<?> result = null;
- if (result == null) {
- result = Object.class;
- }
+ int dotIndex = type.indexOf('.');
+ if (dotIndex < 0) {
+ //guess type
+ for (String guessPackage : GUESS_PACKAGES) {
+ try {
+ result = classLoader.loadClass(guessPackage + "." + type);
+ break;
+ } catch (ClassNotFoundException e) {
+ //ignore
+ }
+ }
+ }
- return result;
- }
+ if (result == null) {
+ try {
+ classLoader.loadClass(type);
+ } catch (ClassNotFoundException e) {
+ //ignore
+ }
+ }
- private void defineObject(String type, String name, String initializationExpression) {
- currentStatement.addStatement(new DefineObjectStatement(type, name, initializationExpression));
- localsTypesMap.put(name, getClasByObjectTypeName(type));
- }
-
+ if (result == null) {
+ result = Object.class;
+ }
+ return result;
+ }
+
+ private void defineObject(String type, String name, String initializationExpression) {
+ currentStatement.addStatement(new DefineObjectStatement(type, name, initializationExpression));
+ localsTypesMap.put(name, getClasByObjectTypeName(type));
+ }
+
protected void pushStatement(MethodBodyStatementsContainer container) {
- currentStatement.addStatement(container);
- statements.push(currentStatement);
- currentStatement = container;
+ currentStatement.addStatement(container);
+ statements.push(currentStatement);
+ currentStatement = container;
}
-
+
protected void popStatement() {
- currentStatement = statements.pop();
+ currentStatement = statements.pop();
}
- public RendererClassVisitor(CompositeInterface compositeInterface, ClassLoader classLoader) {
- this.compositeInterface = compositeInterface;
- this.classLoader = classLoader;
- }
-
/**
* <p class="changed_added_4_0"></p>
+ *
* @return the rendererClass
*/
public JavaClass getRendererClass() {
return this.rendererClass;
}
-
+
/* (non-Javadoc)
- * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#startElement(org.richfaces.cdk.templatecompiler.model.CdkBodyElement)
- */
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor
+ * #startElement(org.richfaces.cdk.templatecompiler.model.CdkBodyElement)
+ */
@Override
public void startElement(CdkBodyElement cdkBodyElement) throws CdkException {
- flushToEncodeMethod("encodeBegin");
+ flushToEncodeMethod("encodeBegin");
}
/* (non-Javadoc)
- * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#endElement(org.richfaces.cdk.templatecompiler.model.CdkBodyElement)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor
+ * #endElement(org.richfaces.cdk.templatecompiler.model.CdkBodyElement)
*/
@Override
public void endElement(CdkBodyElement cdkBodyElement) throws CdkException {
- flushToEncodeMethod("encodeChildren");
+ flushToEncodeMethod("encodeChildren");
}
/* (non-Javadoc)
- * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#startElement(org.richfaces.cdk.templatecompiler.model.AnyElement)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor
+ * #startElement(org.richfaces.cdk.templatecompiler.model.AnyElement)
*/
@Override
public void startElement(AnyElement anyElement) throws CdkException {
QName elementName = anyElement.getName();
Map<QName, Object> elementAttributes = anyElement.getAttributes();
-
+
if (!isDefaultNamespace(elementName.getNamespaceURI())) {
- //TODO: add support
+ //TODO: add support
}
-
+
currentStatement.addStatement(new StartElementStatement(elementName.getLocalPart()));
-
+
if (elementAttributes != null) {
for (Map.Entry<QName, Object> attribute : elementAttributes.entrySet()) {
- QName attributeName = attribute.getKey();
- Object attributeValue = attribute.getValue();
-
- if (!isDefaultNamespace(attributeName.getNamespaceURI())) {
- //TODO: add support
-
- //TODO: optimize batch attributes encoding
- if (Template.CDK_NAMESPACE.equals(attributeName.getNamespaceURI()) &&
- "passThroughWithExclusions".equals(attributeName.getLocalPart())) {
-
- //TODO check element namespace
- Set<String> attributeSet = ELEMENTS_ATTRIBUTES.get(elementName.getLocalPart());
- if (attributeSet != null) {
- //make a copy of original set
- TreeSet<String> actualAttributesSet = new TreeSet<String>(attributeSet);
-
- if (attributeValue != null) {
- String[] exclusions = attributeValue.toString().split("\\s+");
- for (String exclusion : exclusions) {
- actualAttributesSet.remove(exclusion);
- }
- }
-
- if (!actualAttributesSet.isEmpty()) {
- currentStatement.addStatement(new WriteAttributesSetStatement(actualAttributesSet));
- }
- }
- }
-
- //TODO: cdk:passThrough
+ QName attributeName = attribute.getKey();
+ Object attributeValue = attribute.getValue();
+
+ if (!isDefaultNamespace(attributeName.getNamespaceURI())) {
+ //TODO: add support
+
+ //TODO: optimize batch attributes encoding
+ if (Template.CDK_NAMESPACE.equals(attributeName.getNamespaceURI())
+ && "passThroughWithExclusions".equals(attributeName.getLocalPart())) {
+
+ //TODO check element namespace
+ Set<String> attributeSet = ELEMENTS_ATTRIBUTES.get(elementName.getLocalPart());
+ if (attributeSet != null) {
+ //make a copy of original set
+ TreeSet<String> actualAttributesSet = new TreeSet<String>(attributeSet);
+
+ if (attributeValue != null) {
+ String[] exclusions = attributeValue.toString().split("\\s+");
+ for (String exclusion : exclusions) {
+ actualAttributesSet.remove(exclusion);
+ }
+ }
+
+ if (!actualAttributesSet.isEmpty()) {
+ currentStatement.addStatement(new WriteAttributesSetStatement(actualAttributesSet));
+ }
+ }
+ }
+
+ //TODO: cdk:passThrough
} else {
- currentStatement.addStatement(new WriteAttributeStatement(attributeName.getLocalPart(),
- compileEl(attributeValue.toString(), String.class)));
+ currentStatement.addStatement(new WriteAttributeStatement(attributeName.getLocalPart(),
+ compileEl(attributeValue.toString(), String.class)));
}
- }
+ }
}
}
/* (non-Javadoc)
- * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#endElement(org.richfaces.cdk.templatecompiler.model.AnyElement)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor
+ * #endElement(org.richfaces.cdk.templatecompiler.model.AnyElement)
*/
@Override
public void endElement(AnyElement anyElement) throws CdkException {
- QName elementName = anyElement.getName();
+ QName elementName = anyElement.getName();
currentStatement.addStatement(new EndElementStatement(elementName.getLocalPart()));
}
@@ -462,148 +469,160 @@
*/
@Override
public void visitElement(String text) throws CdkException {
- if (text != null) {
- String trimmedText = text.trim();
- if (trimmedText.length() != 0) {
- currentStatement.addStatement(new WriteTextStatement(compileEl(trimmedText, String.class)));
- }
- }
+ if (text != null) {
+ String trimmedText = text.trim();
+ if (trimmedText.length() != 0) {
+ currentStatement.addStatement(new WriteTextStatement(compileEl(trimmedText, String.class)));
+ }
+ }
}
/* (non-Javadoc)
- * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#visitElement(org.richfaces.cdk.templatecompiler.model.CdkCallElement)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor
+ * #visitElement(org.richfaces.cdk.templatecompiler.model.CdkCallElement)
*/
@Override
public void visitElement(CdkCallElement cdkCallElement) throws CdkException {
- currentStatement.addStatement(cdkCallElement.getExpression() + ";");
+ currentStatement.addStatement(cdkCallElement.getExpression() + ";");
}
/* (non-Javadoc)
- * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#startElement(org.richfaces.cdk.templatecompiler.model.CdkIfElement)
- */
- @Override
- public void startElement(CdkIfElement cdkIfElement) {
- String compiledTestExpression = compileEl(cdkIfElement.getTest(), Boolean.class);
-
- pushStatement(new IfElseStatement());
- pushStatement(new IfStatement(compiledTestExpression));
- }
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor
+ * #startElement(org.richfaces.cdk.templatecompiler.model.CdkIfElement)
+ */
+ @Override
+ public void startElement(CdkIfElement cdkIfElement) {
+ String compiledTestExpression = compileEl(cdkIfElement.getTest(), Boolean.class);
- /* (non-Javadoc)
- * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#endElement(org.richfaces.cdk.templatecompiler.model.CdkIfElement)
- */
- @Override
- public void endElement(CdkIfElement cdkIfElement) {
- popStatement();
- popStatement();
- }
-
- /* (non-Javadoc)
- * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#startElement(org.richfaces.cdk.templatecompiler.model.CdkChooseElement)
- */
- @Override
- public void startElement(CdkChooseElement cdkChooseElement) {
- pushStatement(new IfElseStatement());
- }
+ pushStatement(new IfElseStatement());
+ pushStatement(new IfStatement(compiledTestExpression));
+ }
- /* (non-Javadoc)
- * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#endElement(org.richfaces.cdk.templatecompiler.model.CdkChooseElement)
- */
- @Override
- public void endElement(CdkChooseElement cdkChooseElement) {
- popStatement();
- }
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor
+ * #endElement(org.richfaces.cdk.templatecompiler.model.CdkIfElement)
+ */
+ @Override
+ public void endElement(CdkIfElement cdkIfElement) {
+ popStatement();
+ popStatement();
+ }
- /* (non-Javadoc)
- * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#startElement(org.richfaces.cdk.templatecompiler.model.CdkWhenElement)
- */
- @Override
- public void startElement(CdkWhenElement cdkWhenElement) {
- String compiledTestExpression = compileEl(cdkWhenElement.getTest(), Boolean.class);
-
- pushStatement(new IfStatement(compiledTestExpression));
- }
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor
+ * #startElement(org.richfaces.cdk.templatecompiler.model.CdkChooseElement)
+ */
+ @Override
+ public void startElement(CdkChooseElement cdkChooseElement) {
+ pushStatement(new IfElseStatement());
+ }
- /* (non-Javadoc)
- * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#endElement(org.richfaces.cdk.templatecompiler.model.CdkWhenElement)
- */
- @Override
- public void endElement(CdkWhenElement cdkWhenElement) {
- popStatement();
- }
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor
+ * #endElement(org.richfaces.cdk.templatecompiler.model.CdkChooseElement)
+ */
+ @Override
+ public void endElement(CdkChooseElement cdkChooseElement) {
+ popStatement();
+ }
- /* (non-Javadoc)
- * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#startElement(org.richfaces.cdk.templatecompiler.model.CdkOtherwiseElement)
- */
- @Override
- public void startElement(CdkOtherwiseElement cdkOtherwiseElement) {
- pushStatement(new IfStatement(""));
- }
-
- /* (non-Javadoc)
- * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#endElement(org.richfaces.cdk.templatecompiler.model.CdkOtherwiseElement)
- */
- @Override
- public void endElement(CdkOtherwiseElement cdkOtherwiseElement) {
- popStatement();
- }
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor
+ * #startElement(org.richfaces.cdk.templatecompiler.model.CdkWhenElement)
+ */
+ @Override
+ public void startElement(CdkWhenElement cdkWhenElement) {
+ String compiledTestExpression = compileEl(cdkWhenElement.getTest(), Boolean.class);
- /* (non-Javadoc)
- * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#visitElement(org.richfaces.cdk.templatecompiler.model.CdkObjectElement)
- */
- @Override
- public void visitElement(CdkObjectElement cdkObjectElement) {
- String name = cdkObjectElement.getName();
-
- String value = cdkObjectElement.getValue();
- if (value == null || value.length() == 0) {
- value = cdkObjectElement.getBodyValue();
- }
-
- String type = cdkObjectElement.getType();
+ pushStatement(new IfStatement(compiledTestExpression));
+ }
- if (value != null && value.length() != 0) {
- if (type == null || type.length() == 0) {
- type = getElExpressionType(value);
- }
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor
+ * #endElement(org.richfaces.cdk.templatecompiler.model.CdkWhenElement)
+ */
+ @Override
+ public void endElement(CdkWhenElement cdkWhenElement) {
+ popStatement();
+ }
- value = compileEl(value, Object.class);
- }
-
- defineObject(type, name, value);
- }
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor
+ * #startElement(org.richfaces.cdk.templatecompiler.model.CdkOtherwiseElement)
+ */
+ @Override
+ public void startElement(CdkOtherwiseElement cdkOtherwiseElement) {
+ pushStatement(new IfStatement(""));
+ }
- /* (non-Javadoc)
- * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#startElement(org.richfaces.cdk.templatecompiler.model.CdkForEachElement)
- */
- @Override
- public void startElement(CdkForEachElement cdkForEachElement) {
- String items = cdkForEachElement.getItems();
- String itemsExpression = compileEl(items, Iterable.class);
- pushStatement(new ForEachStatement(itemsExpression, cdkForEachElement.getVar(),
- getElExpressionContainerType(items)));
- }
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor
+ * #endElement(org.richfaces.cdk.templatecompiler.model.CdkOtherwiseElement)
+ */
+ @Override
+ public void endElement(CdkOtherwiseElement cdkOtherwiseElement) {
+ popStatement();
+ }
- /* (non-Javadoc)
- * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor#endElement(org.richfaces.cdk.templatecompiler.model.CdkForEachElement)
- */
- @Override
- public void endElement(CdkForEachElement cdkForEachElement) {
- popStatement();
- }
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor
+ * #visitElement(org.richfaces.cdk.templatecompiler.model.CdkObjectElement)
+ */
+ @Override
+ public void visitElement(CdkObjectElement cdkObjectElement) {
+ String name = cdkObjectElement.getName();
- /**
- *
- */
- public void preProcess() {
+ String value = cdkObjectElement.getValue();
+ if (value == null || value.length() == 0) {
+ value = cdkObjectElement.getBodyValue();
+ }
+
+ String type = cdkObjectElement.getType();
+
+ if (value != null && value.length() != 0) {
+ if (type == null || type.length() == 0) {
+ type = getElExpressionType(value);
+ }
+
+ value = compileEl(value, Object.class);
+ }
+
+ defineObject(type, name, value);
+ }
+
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor
+ * #startElement(org.richfaces.cdk.templatecompiler.model.CdkForEachElement)
+ */
+ @Override
+ public void startElement(CdkForEachElement cdkForEachElement) {
+ String items = cdkForEachElement.getItems();
+ String itemsExpression = compileEl(items, Iterable.class);
+ pushStatement(new ForEachStatement(itemsExpression, cdkForEachElement.getVar(),
+ getElExpressionContainerType(items)));
+ }
+
+ /* (non-Javadoc)
+ * @see org.richfaces.cdk.templatecompiler.model.TemplateVisitor
+ * #endElement(org.richfaces.cdk.templatecompiler.model.CdkForEachElement)
+ */
+ @Override
+ public void endElement(CdkForEachElement cdkForEachElement) {
+ popStatement();
+ }
+
+ /**
+ *
+ */
+ public void preProcess() {
initializeJavaClass();
- }
+ }
- /**
- *
- */
- public void postProcess() {
- flushToEncodeMethod("encodeEnd");
- }
+ /**
+ *
+ */
+ public void postProcess() {
+ flushToEncodeMethod("encodeEnd");
+ }
}
14 years, 5 months
JBoss Rich Faces SVN: r16081 - root/framework/trunk/impl/src/main/java/org/ajax4jsf/renderkit.
by richfaces-svn-commits@lists.jboss.org
Author: Alex.Kolonitsky
Date: 2009-12-07 08:13:26 -0500 (Mon, 07 Dec 2009)
New Revision: 16081
Modified:
root/framework/trunk/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java
Log:
RFPL-195 - Code style policy
Reformatting
Modified: root/framework/trunk/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java
===================================================================
--- root/framework/trunk/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java 2009-12-07 10:29:14 UTC (rev 16080)
+++ root/framework/trunk/impl/src/main/java/org/ajax4jsf/renderkit/RendererUtils.java 2009-12-07 13:13:26 UTC (rev 16081)
@@ -504,7 +504,7 @@
/**
* Checks if the argument passed in is empty or not.
* Object is empty if it is: <br />
- * - <code>null<code><br />
+ * - <code>null</code><br />
* - zero-length string<br />
* - empty collection<br />
* - empty map<br />
@@ -893,20 +893,19 @@
/**
* @param ids
* @param keyword
- * @since 4.0
- *
* @return
+ * @since 4.0
*/
private static boolean checkKeyword(Collection<String> ids, String keyword) {
- if (ids.contains(keyword)) {
- if (ids.size() != 1) {
- //TODO log
- }
-
- return true;
- }
-
- return false;
+ if (ids.contains(keyword)) {
+ if (ids.size() != 1) {
+ //TODO log
+ }
+
+ return true;
+ }
+
+ return false;
}
/**
@@ -924,9 +923,9 @@
Set<String> result = new LinkedHashSet<String>(shortIds.size());
if (checkKeyword(shortIds, AjaxRendererUtils.ALL)) {
- result.add(AjaxRendererUtils.ALL);
+ result.add(AjaxRendererUtils.ALL);
} else if (checkKeyword(shortIds, AjaxRendererUtils.NONE)) {
- //do nothing, use empty set
+ //do nothing, use empty set
} else {
for (String id : shortIds) {
if (AjaxRendererUtils.THIS.equals(id)) {
@@ -1003,7 +1002,7 @@
private UIComponent findUIComponentBelow(UIComponent root, String id) {
UIComponent target = null;
- for (Iterator<UIComponent> iter = root.getFacetsAndChildren(); iter.hasNext(); ) {
+ for (Iterator<UIComponent> iter = root.getFacetsAndChildren(); iter.hasNext();) {
UIComponent child = (UIComponent) iter.next();
if (child instanceof NamingContainer) {
14 years, 5 months
JBoss Rich Faces SVN: r16080 - branches/community/3.3.X/examples/photoalbum/tests/src/test/java/org/richfaces/photoalbum.
by richfaces-svn-commits@lists.jboss.org
Author: lfryc(a)redhat.com
Date: 2009-12-07 05:29:14 -0500 (Mon, 07 Dec 2009)
New Revision: 16080
Modified:
branches/community/3.3.X/examples/photoalbum/tests/src/test/java/org/richfaces/photoalbum/RealWorldHelper.java
Log:
- photoalbum ftest - modified method waiting for login (RF-8185)
Modified: branches/community/3.3.X/examples/photoalbum/tests/src/test/java/org/richfaces/photoalbum/RealWorldHelper.java
===================================================================
--- branches/community/3.3.X/examples/photoalbum/tests/src/test/java/org/richfaces/photoalbum/RealWorldHelper.java 2009-12-05 11:07:54 UTC (rev 16079)
+++ branches/community/3.3.X/examples/photoalbum/tests/src/test/java/org/richfaces/photoalbum/RealWorldHelper.java 2009-12-07 10:29:14 UTC (rev 16080)
@@ -230,10 +230,14 @@
selenium.type(HtmlConstants.LoginPanel.passwordId, password);
selenium.click(HtmlConstants.LoginPanel.loginButtonPath);
- waitForAjaxCompletion(selenium);
-
+ waitForLogin(selenium);
}
-
+
+ private static void waitForLogin(final Selenium selenium) {
+ delay();
+ selenium.waitForPageToLoad(String.valueOf(TIMEOUT));
+ }
+
private static void delay() {
delay(5000);
}
14 years, 5 months
JBoss Rich Faces SVN: r16079 - in branches/community/3.3.X/examples/photoalbum/source/web/src/main/webapp: includes/index and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: amarkhel
Date: 2009-12-05 06:07:54 -0500 (Sat, 05 Dec 2009)
New Revision: 16079
Modified:
branches/community/3.3.X/examples/photoalbum/source/web/src/main/webapp/WEB-INF/pages.xml
branches/community/3.3.X/examples/photoalbum/source/web/src/main/webapp/includes/index/login.xhtml
Log:
Fix Rf-8182
Modified: branches/community/3.3.X/examples/photoalbum/source/web/src/main/webapp/WEB-INF/pages.xml
===================================================================
--- branches/community/3.3.X/examples/photoalbum/source/web/src/main/webapp/WEB-INF/pages.xml 2009-12-04 21:27:31 UTC (rev 16078)
+++ branches/community/3.3.X/examples/photoalbum/source/web/src/main/webapp/WEB-INF/pages.xml 2009-12-05 11:07:54 UTC (rev 16079)
@@ -12,6 +12,11 @@
<redirect view-id="/index.html"/>
</rule>
</navigation>
+ <navigation>
+ <rule if-outcome="gotoindex">
+ <redirect view-id="/index.html"/>
+ </rule>
+ </navigation>
<navigation from-action="#{authenticator.startConversation}">
<redirect view-id="/index.xhtml"/>
</navigation>
Modified: branches/community/3.3.X/examples/photoalbum/source/web/src/main/webapp/includes/index/login.xhtml
===================================================================
(Binary files differ)
14 years, 5 months
JBoss Rich Faces SVN: r16077 - management/design-4x/tree.
by richfaces-svn-commits@lists.jboss.org
Author: admitriev
Date: 2009-12-04 16:27:04 -0500 (Fri, 04 Dec 2009)
New Revision: 16077
Modified:
management/design-4x/tree/tree.html
Log:
Modified: management/design-4x/tree/tree.html
===================================================================
--- management/design-4x/tree/tree.html 2009-12-04 20:58:58 UTC (rev 16076)
+++ management/design-4x/tree/tree.html 2009-12-04 21:27:04 UTC (rev 16077)
@@ -4,27 +4,26 @@
<head>
<title>coll_panel</title>
<style>
-.tree_size{width : 170px;}
+.tree_size {width : 170px;}
-.tree_item{background : url(images/last.gif) no-repeat center left; cursor : default; font-size : 11px /*generalSizeFont*/; font-family : verdana /*generalFamilyFont*/; color : #000000 /*generalTextColor*/; padding : 1px 0px 1px 0px; overflow : hidden; width : 100%; white-space : nowrap; text-overflow: ellipsis;}
-.tree_item_name{padding : 0px 2px 0px 2px; vertical-align : middle; cursor : pointer; text-overflow: ellipsis;}
+.tree_item {background : url(images/last.gif) no-repeat center left; cursor : default; font-size : 11px /*generalSizeFont*/; font-family : verdana /*generalFamilyFont*/; color : #000000 /*generalTextColor*/; padding : 1px 0px 1px 0px; overflow : hidden; width : 100%; white-space : nowrap;}
+.tree_item_name {padding : 0px 4px 0px 2px; vertical-align : middle; cursor : pointer; display : inline-block;}
-.tree_selected{background : url(images/cross.gif) no-repeat center left #C7D7EC /*additionalBackgroundColor*/;}
-.tree_level{background : url(images/line.gif) repeat-y;}
-.tree_level_last{background : none;}
+.tree_selarea {display : inline-block;}
+.tree_selected {background : #C7D7EC /*additionalBackgroundColor*/;}
-.tree_level .tree_level{margin-left : 16px;}
+.tree_level {background : url(images/line.gif) repeat-y;}
+.tree_level_last {background : none;}
+.tree_level .tree_level {margin-left : 16px;}
.tree_icon {vertical-align : middle; margin : 0px; cursor : pointer; width : 16px; height : 16px; display : inline-block;}
.tree_status_plus {background : url(images/plus.gif) no-repeat center;}
.tree_status_minus {background : url(images/minus.gif) no-repeat center;}
-
.tree_status_blank {background : url(images/spacer.gif) no-repeat center;}
.tree_node {background : url(images/folder.gif) no-repeat center;}
.tree_child {background : url(images/file.gif) no-repeat center;}
-.tree_selarea {display : inline-block;}
.tree_level.tree_collapse .tree_level{display : none;}
@@ -38,62 +37,62 @@
<div class="tree_size">
<div class="tree_level tree_level_last">
- <div class="tree_item" onmouseover="this.className='tree_item tree_selected'" onmouseout="this.className='tree_item'">
- <div class="tree_icon tree_status_minus"></div><div class="tree_icon tree_node"></div><span class="tree_item_name">Node name</span>
+ <div class="tree_item">
+ <div class="tree_icon tree_status_minus"></div><div class="tree_selarea"><div class="tree_icon tree_node"></div><span class="tree_item_name">Node name</span></div>
</div>
<div class="tree_level">
- <div class="tree_item" onmouseover="this.className='tree_item tree_selected'" onmouseout="this.className='tree_item'">
- <div class="tree_icon tree_status_blank"></div><div class="tree_icon tree_node"></div><span class="tree_item_name">Node name</span>
+ <div class="tree_item">
+ <div class="tree_icon tree_status_blank"></div><div class="tree_selarea"><div class="tree_icon tree_node"></div><span class="tree_item_name">Node name</span></div>
</div>
</div>
<div class="tree_level">
- <div class="tree_item" onmouseover="this.className='tree_item tree_selected'" onmouseout="this.className='tree_item'">
- <div class="tree_icon tree_status_minus"></div><div class="tree_icon tree_node"></div><span class="tree_item_name">Node name</span>
+ <div class="tree_item">
+ <div class="tree_icon tree_status_minus"></div><div class="tree_selarea"><div class="tree_icon tree_node"></div><span class="tree_item_name">Node name</span></div>
</div>
<div class="tree_level">
- <div class="tree_item tree_selected">
- <div class="tree_icon tree_status_blank"></div><div class="tree_icon tree_node"></div><span class="tree_item_name">Very long node name</span>
+ <div class="tree_item">
+ <div class="tree_icon tree_status_blank"></div><div class="tree_selarea tree_selected"><div class="tree_icon tree_node"></div><span class="tree_item_name">Very long node name</span></div>
</div>
</div>
<div class="tree_level tree_collapse">
- <div class="tree_item" onmouseover="this.className='tree_item tree_selected'" onmouseout="this.className='tree_item'">
- <div class="tree_icon tree_status_plus"></div><div class="tree_icon tree_node"></div><span class="tree_item_name">Node name</span>
+ <div class="tree_item">
+ <div class="tree_icon tree_status_plus"></div><div class="tree_selarea"><div class="tree_icon tree_node"></div><span class="tree_item_name">Node name</span></div>
</div>
<div class="tree_level">
- <div class="tree_item" onmouseover="this.className='tree_item tree_selected'" onmouseout="this.className='tree_item'">
- <div class="tree_icon tree_status_blank"></div><div class="tree_icon tree_node"></div><span class="tree_item_name">Node name</span>
+ <div class="tree_item">
+ <div class="tree_icon tree_status_minus"></div><div class="tree_selarea"><div class="tree_icon tree_node"></div><span class="tree_item_name">Node name</span></div>
</div>
</div>
<div class="tree_level tree_level_last">
- <div class="tree_item" onmouseover="this.className='tree_item tree_selected'" onmouseout="this.className='tree_item'">
- <div class="tree_icon tree_status_minus"></div><div class="tree_icon tree_node"></div><span class="tree_item_name">Node name</span>
+ <div class="tree_item">
+ <div class="tree_icon tree_status_minus"></div><div class="tree_selarea"><div class="tree_icon tree_node"></div><span class="tree_item_name">Node name</span></div>
</div>
<div class="tree_level tree_level_last">
- <div class="tree_item" onmouseover="this.className='tree_item tree_selected'" onmouseout="this.className='tree_item'">
- <div class="tree_icon tree_status_minus"></div><div class="tree_icon tree_node"></div><span class="tree_item_name">Node name</span>
+ <div class="tree_item">
+ <div class="tree_icon tree_status_minus"></div><div class="tree_selarea"><div class="tree_icon tree_node"></div><span class="tree_item_name">Node name</span></div>
</div>
<div class="tree_level">
- <div class="tree_item" onmouseover="this.className='tree_item tree_selected'" onmouseout="this.className='tree_item'">
- <div class="tree_icon tree_status_blank"></div><div class="tree_icon tree_node"></div><span class="tree_item_name">Node name</span>
+ <div class="tree_item">
+ <div class="tree_icon tree_status_blank"></div><div class="tree_selarea"><div class="tree_icon tree_child"></div><span class="tree_item_name">Node name</span></div>
</div>
</div>
<div class="tree_level tree_level_last">
- <div class="tree_item tree_selected">
- <div class="tree_icon tree_status_blank"></div><div class="tree_icon tree_node"></div><span class="tree_item_name">Very long node name</span>
+ <div class="tree_item">
+ <div class="tree_icon tree_status_blank"></div><div class="tree_selarea"><div class="tree_icon tree_child"></div><span class="tree_item_name">Node name</span></div>
</div>
</div>
</div>
</div>
</div>
<div class="tree_level tree_level_last">
- <div class="tree_item" onmouseover="this.className='tree_item tree_selected'" onmouseout="this.className='tree_item'">
- <div class="tree_icon tree_status_blank"></div><div class="tree_icon tree_child"></div><span class="tree_item_name">File name</span>
+ <div class="tree_item">
+ <div class="tree_icon tree_status_blank"></div><div class="tree_selarea"><div class="tree_icon tree_child"></div><span class="tree_item_name">Node name</span></div>
</div>
</div>
</div>
<div class="tree_level tree_level_last">
- <div class="tree_item" onmouseover="this.className='tree_item tree_selected'" onmouseout="this.className='tree_item'">
- <div class="tree_icon tree_status_blank"></div><div class="tree_icon tree_child"></div><span class="tree_item_name">File name</span>
+ <div class="tree_item">
+ <div class="tree_icon tree_status_blank"></div><div class="tree_selarea"><div class="tree_icon tree_child"></div><span class="tree_item_name">Node name</span></div>
</div>
</div>
</div>
14 years, 6 months