JBoss Rich Faces SVN: r19023 - in branches/RFPL-434: archetypes/richfaces-archetype-simpleapp/src/main/resources/archetype-resources and 22 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2010-08-30 14:45:51 -0400 (Mon, 30 Aug 2010)
New Revision: 19023
Added:
branches/RFPL-434/archetypes/richfaces-archetype-simpleapp/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/jboss-scanning.xml
branches/RFPL-434/examples/richfaces-showcase/src/main/webapp/WEB-INF/jboss-scanning.xml
branches/RFPL-434/ui/input/ui/src/test/resources/org/richfaces/renderkit/inplaceInputTest.xhtml
branches/RFPL-434/ui/iteration/ui/src/test/java/org/richfaces/component/UIDataTableTest.java
branches/RFPL-434/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataScrollerBean.java
branches/RFPL-434/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataScrollerRenderTest.java
branches/RFPL-434/ui/iteration/ui/src/test/resources/org/richfaces/renderkit/dataTableTest.xhtml
Removed:
branches/RFPL-434/ui/input/ui/src/test/resources/org/richfaces/renderkit/rendererTest.xhtml
Modified:
branches/RFPL-434/
branches/RFPL-434/archetypes/richfaces-archetype-simpleapp/src/main/resources/archetype-resources/pom.xml
branches/RFPL-434/archetypes/richfaces-archetype-simpleapp/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml
branches/RFPL-434/core/impl/src/main/java/org/richfaces/component/UISequence.java
branches/RFPL-434/core/impl/src/main/resources/META-INF/resources/richfaces-queue.js
branches/RFPL-434/dist/readme-ui.txt
branches/RFPL-434/examples/core-demo/src/main/webapp/button.xhtml
branches/RFPL-434/examples/input-demo/src/main/webapp/autocomplete.xhtml
branches/RFPL-434/examples/richfaces-showcase/pom.xml
branches/RFPL-434/examples/richfaces-showcase/src/main/webapp/WEB-INF/web.xml
branches/RFPL-434/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceInput.java
branches/RFPL-434/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceInputBaseRenderer.java
branches/RFPL-434/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/Autocomplete.js
branches/RFPL-434/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceInput.js
branches/RFPL-434/ui/input/ui/src/main/templates/inplaceInput.template.xml
branches/RFPL-434/ui/input/ui/src/test/java/org/richfaces/renderkit/InplaceInputRendererTest.java
branches/RFPL-434/ui/iteration/ui/src/main/java/org/richfaces/component/AbstractSubTable.java
branches/RFPL-434/ui/iteration/ui/src/main/resources/META-INF/resources/org.richfaces/subtable.js
branches/RFPL-434/ui/iteration/ui/src/main/templates/datascroller.template.xml
branches/RFPL-434/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataGridRendererTest.java
branches/RFPL-434/ui/iteration/ui/src/test/resources/org/richfaces/renderkit/faces-config.xml
branches/RFPL-434/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PopupPanelBaseRenderer.java
branches/RFPL-434/ui/output/ui/src/main/templates/popupPanel.template.xml
Log:
Merged revisions 18970-18972,18975-18978,18987-18991,18993,18995,19004,19009,19014-19019,19021 via svnmerge from
https://svn.jboss.org/repos/richfaces/trunk
Property changes on: branches/RFPL-434
___________________________________________________________________
Name: svnmerge-integrated
- /branches/RFPL-754:1-18909 /trunk:1-18969
+ /branches/RFPL-754:1-18909 /trunk:1-19022
Modified: branches/RFPL-434/archetypes/richfaces-archetype-simpleapp/src/main/resources/archetype-resources/pom.xml
===================================================================
--- branches/RFPL-434/archetypes/richfaces-archetype-simpleapp/src/main/resources/archetype-resources/pom.xml 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/archetypes/richfaces-archetype-simpleapp/src/main/resources/archetype-resources/pom.xml 2010-08-30 18:45:51 UTC (rev 19023)
@@ -1,6 +1,7 @@
#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
-#set( $symbol_escape = '\' )
+#set(
+$symbol_escape = '\' )
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
@@ -73,13 +74,13 @@
<dependencies>
<dependency>
- <groupId>${jsf2.api.groupid}</groupId>
- <artifactId>${jsf2.api.artifactid}</artifactId>
+ <groupId>com.sun.faces</groupId>
+ <artifactId>jsf-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
- <groupId>${jsf2.impl.groupid}</groupId>
- <artifactId>${jsf2.impl.artifactid}</artifactId>
+ <groupId>com.sun.faces</groupId>
+ <artifactId>jsf-impl</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
@@ -128,7 +129,7 @@
<dependencyManagement>
<dependencies>
<dependency>
- <groupId>org.richfaces.ui</groupId>
+ <groupId>org.richfaces</groupId>
<artifactId>richfaces-bom</artifactId>
<version>${org.richfaces.bom.version}</version>
<scope>import</scope>
Copied: branches/RFPL-434/archetypes/richfaces-archetype-simpleapp/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/jboss-scanning.xml (from rev 19021, trunk/archetypes/richfaces-archetype-simpleapp/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/jboss-scanning.xml)
===================================================================
--- branches/RFPL-434/archetypes/richfaces-archetype-simpleapp/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/jboss-scanning.xml (rev 0)
+++ branches/RFPL-434/archetypes/richfaces-archetype-simpleapp/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/jboss-scanning.xml 2010-08-30 18:45:51 UTC (rev 19023)
@@ -0,0 +1,11 @@
+<scanning xmlns="urn:jboss:scanning:1.0">
+<!--
+ For JBoss AS 6 integration there is a conflict with guava, and
+ google-collections. JBAS-8361
+-->
+ <path name="WEB-INF/classes"></path>
+
+ <path name="WEB-INF/lib/guava-r05.jar">
+ <exclude name="com.google.common.collect" />
+ </path>
+</scanning>
\ No newline at end of file
Modified: branches/RFPL-434/archetypes/richfaces-archetype-simpleapp/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml
===================================================================
--- branches/RFPL-434/archetypes/richfaces-archetype-simpleapp/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/archetypes/richfaces-archetype-simpleapp/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml 2010-08-30 18:45:51 UTC (rev 19023)
@@ -1,35 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
-<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- version="2.5">
-
- <display-name>Sample RichFaces 4 Application</display-name>
- <context-param>
- <param-name>javax.faces.PROJECT_STAGE</param-name>
- <param-value>Development</param-value>
- </context-param>
- <context-param>
- <param-name>javax.faces.SKIP_COMMENTS</param-name>
- <param-value>true</param-value>
- </context-param>
- <servlet>
- <servlet-name>Faces Servlet</servlet-name>
- <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>Faces Servlet</servlet-name>
- <url-pattern>*.jsf</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>Faces Servlet</servlet-name>
- <url-pattern>/faces/*</url-pattern>
- </servlet-mapping>
- <welcome-file-list>
- <welcome-file>faces/index.xhtml</welcome-file>
- </welcome-file-list>
- <session-config>
- <session-timeout>30</session-timeout>
- </session-config>
-</web-app>
\ No newline at end of file
+<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+ <display-name>Sample RichFaces 4 Application</display-name>
+ <context-param>
+ <param-name>javax.faces.PROJECT_STAGE</param-name>
+ <param-value>Development</param-value>
+ </context-param>
+ <context-param>
+ <param-name>javax.faces.SKIP_COMMENTS</param-name>
+ <param-value>true</param-value>
+ </context-param>
+ <servlet>
+ <servlet-name>Faces Servlet</servlet-name>
+ <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>Faces Servlet</servlet-name>
+ <url-pattern>*.jsf</url-pattern>
+ </servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>Faces Servlet</servlet-name>
+ <url-pattern>/faces/*</url-pattern>
+ </servlet-mapping>
+ <session-config>
+ <session-timeout>30</session-timeout>
+ </session-config>
+ <mime-mapping>
+ <extension>ecss</extension>
+ <mime-type>text/css</mime-type>
+ </mime-mapping>
+ <welcome-file-list>
+ <welcome-file>faces/index.xhtml</welcome-file>
+ </welcome-file-list>
+ <login-config>
+ <auth-method>BASIC</auth-method>
+ </login-config>
+</web-app>
Modified: branches/RFPL-434/core/impl/src/main/java/org/richfaces/component/UISequence.java
===================================================================
--- branches/RFPL-434/core/impl/src/main/java/org/richfaces/component/UISequence.java 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/core/impl/src/main/java/org/richfaces/component/UISequence.java 2010-08-30 18:45:51 UTC (rev 19023)
@@ -277,7 +277,7 @@
int rowIndex = getRowIndex();
int rows = getRows();
- if (rows > 0) {
+ if (rows > 1) {
return rowIndex % rows;
}
Modified: branches/RFPL-434/core/impl/src/main/resources/META-INF/resources/richfaces-queue.js
===================================================================
--- branches/RFPL-434/core/impl/src/main/resources/META-INF/resources/richfaces-queue.js 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/core/impl/src/main/resources/META-INF/resources/richfaces-queue.js 2010-08-30 18:45:51 UTC (rev 19023)
@@ -105,6 +105,10 @@
}
}
}
+
+ if (typeof this.queueOptions.requestGroupId == "undefined") {
+ this.queueOptions.requestGroupId = typeof this.source == "string" ? this.source : this.source.id;
+ }
// copy of event should be created otherwise IE will fail
this.event = $.extend({}, event);
Modified: branches/RFPL-434/dist/readme-ui.txt
===================================================================
--- branches/RFPL-434/dist/readme-ui.txt 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/dist/readme-ui.txt 2010-08-30 18:45:51 UTC (rev 19023)
@@ -17,6 +17,8 @@
1.7) slf4j-log4j12 (or whatever else - select the implementation according to logging framework that you use)
1.8) sac-1.3, cssparser-0.9.5 - required for components CSS work
1.9) google-guava-r06 - core runtime dependency.
+ 1.10) annotations.jar from org.richfaces.cdk . It's optional and should be added only if some RichFaces components will be
+ created/accessed dynamically from some appication actions/listeners.
For optimal performance it's recommended to add one of these caching frameworks to application classpath: EhCache, JBoss Cache, OsCache.
Modified: branches/RFPL-434/examples/core-demo/src/main/webapp/button.xhtml
===================================================================
--- branches/RFPL-434/examples/core-demo/src/main/webapp/button.xhtml 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/examples/core-demo/src/main/webapp/button.xhtml 2010-08-30 18:45:51 UTC (rev 19023)
@@ -23,11 +23,28 @@
<f:ajax event="action" execute="@form" render=":out" listener="#{commandBean.listener}" />
</a4j:commandButton>
</h:form>
- <br />
+ <br />
<h:panelGroup id="out">
<h:outputText value="#{commandBean.name}" />
<h:outputText value="!" rendered="#{not empty commandBean.name}" />
</h:panelGroup>
+ <br /><hr />
+ RF-9146: request grouping id not set:
+ <br />
+ <h:panelGroup id="out1">
+ <h:outputText value="#{commandBean.name}" />
+ </h:panelGroup>
+ <h:form>
+ <a4j:queue requestDelay="5000"/>
+ <a4j:commandButton value="Update 1" render="out1">
+ <a4j:param name="v1" value="Update 1" assignTo="#{commandBean.name}" />
+ </a4j:commandButton>
+ <a4j:commandButton value="Update 2" render="out1">
+ <a4j:param name="v1" value="Update 2" assignTo="#{commandBean.name}" />
+ </a4j:commandButton>
+ <hr />
+ <a4j:log level="debug" style="border: solid red 1px" styleClass="log" mode="popup" />
+ </h:form>
</h:body>
</f:view>
</html>
\ No newline at end of file
Modified: branches/RFPL-434/examples/input-demo/src/main/webapp/autocomplete.xhtml
===================================================================
--- branches/RFPL-434/examples/input-demo/src/main/webapp/autocomplete.xhtml 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/examples/input-demo/src/main/webapp/autocomplete.xhtml 2010-08-30 18:45:51 UTC (rev 19023)
@@ -17,7 +17,7 @@
block text block text block text block text block text block text
block text block
- <input:autocomplete autocompleteMethod="#{autoCompleteBean.autocomplete}" var="country" fetchValue="#{country.name}">
+ <input:autocomplete mode="" minChars="2" autocompleteMethod="#{autoCompleteBean.autocomplete}" var="country" fetchValue="#{country.name}" showButton="true">
#{country.name} #{country.iso} #{country.domain}
</input:autocomplete>
Modified: branches/RFPL-434/examples/richfaces-showcase/pom.xml
===================================================================
--- branches/RFPL-434/examples/richfaces-showcase/pom.xml 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/examples/richfaces-showcase/pom.xml 2010-08-30 18:45:51 UTC (rev 19023)
@@ -17,37 +17,37 @@
<packaging>war</packaging>
<name>Richfaces Examples: Richfaces Showcase Application</name>
- <properties>
- </properties>
+ <properties>
+ </properties>
- <dependencies>
- <dependency>
- <groupId>org.richfaces.ui</groupId>
- <artifactId>richfaces-components-api</artifactId>
- </dependency>
- <dependency>
- <groupId>org.richfaces.ui</groupId>
- <artifactId>richfaces-components-ui</artifactId>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-api</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>javax.servlet.jsp</groupId>
- <artifactId>jsp-api</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>javax.el</groupId>
- <artifactId>el-api</artifactId>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>jstl</artifactId>
- </dependency>
+ <dependencies>
+ <dependency>
+ <groupId>org.richfaces.ui</groupId>
+ <artifactId>richfaces-components-api</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.richfaces.ui</groupId>
+ <artifactId>richfaces-components-ui</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet.jsp</groupId>
+ <artifactId>jsp-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.el</groupId>
+ <artifactId>el-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>jstl</artifactId>
+ </dependency>
<dependency>
<groupId>net.sf.ehcache</groupId>
@@ -112,13 +112,13 @@
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>el-impl</artifactId>
- <version>2.2</version>
- </dependency>
+ <version>2.2</version>
+ </dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>el-api</artifactId>
- <version>2.2</version>
- </dependency>
+ <version>2.2</version>
+ </dependency>
<dependency>
<groupId>org.apache.geronimo.specs</groupId>
<artifactId>geronimo-jta_1.1_spec</artifactId>
Copied: branches/RFPL-434/examples/richfaces-showcase/src/main/webapp/WEB-INF/jboss-scanning.xml (from rev 19021, trunk/examples/richfaces-showcase/src/main/webapp/WEB-INF/jboss-scanning.xml)
===================================================================
--- branches/RFPL-434/examples/richfaces-showcase/src/main/webapp/WEB-INF/jboss-scanning.xml (rev 0)
+++ branches/RFPL-434/examples/richfaces-showcase/src/main/webapp/WEB-INF/jboss-scanning.xml 2010-08-30 18:45:51 UTC (rev 19023)
@@ -0,0 +1,11 @@
+<scanning xmlns="urn:jboss:scanning:1.0">
+<!--
+ For JBoss AS 6 integration there is a conflict with guava, and
+ google-collections. JBAS-8361
+-->
+ <path name="WEB-INF/classes"></path>
+
+ <path name="WEB-INF/lib/guava-r05.jar">
+ <exclude name="com.google.common.collect" />
+ </path>
+</scanning>
\ No newline at end of file
Modified: branches/RFPL-434/examples/richfaces-showcase/src/main/webapp/WEB-INF/web.xml
===================================================================
--- branches/RFPL-434/examples/richfaces-showcase/src/main/webapp/WEB-INF/web.xml 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/examples/richfaces-showcase/src/main/webapp/WEB-INF/web.xml 2010-08-30 18:45:51 UTC (rev 19023)
@@ -1,52 +1,58 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
- id="richfaces-showcase" version="2.5">
- <display-name>richfaces-showcase</display-name>
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- <welcome-file>index.htm</welcome-file>
- <welcome-file>index.jsp</welcome-file>
- <welcome-file>default.html</welcome-file>
- <welcome-file>default.htm</welcome-file>
- <welcome-file>default.jsp</welcome-file>
- </welcome-file-list>
- <context-param>
- <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
- <param-value>/WEB-INF/app-tags.taglib.xml</param-value>
- </context-param>
- <context-param>
- <param-name>org.richfaces.enableControlSkinning</param-name>
- <param-value>true</param-value>
- </context-param>
- <context-param>
- <param-name>org.richfaces.enableControlSkinningClasses</param-name>
- <param-value>false</param-value>
- </context-param>
- <context-param>
- <param-name>org.richfaces.skin</param-name>
- <param-value>#{skinBean.skin}</param-value>
- </context-param>
- <context-param>
- <param-name>javax.faces.PROJECT_STAGE</param-name>
- <param-value>Development</param-value>
- </context-param>
- <context-param>
- <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
- <param-value>server</param-value>
- </context-param>
- <servlet>
- <servlet-name>Faces Servlet</servlet-name>
- <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <servlet-mapping>
- <servlet-name>Faces Servlet</servlet-name>
- <url-pattern>*.jsf</url-pattern>
- </servlet-mapping>
- <servlet-mapping>
- <servlet-name>Faces Servlet</servlet-name>
- <url-pattern>/faces/*</url-pattern>
- </servlet-mapping>
-</web-app>
\ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app id="richfaces-showcase" version="2.5"
+ xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
+ <display-name>richfaces-showcase</display-name>
+ <context-param>
+ <param-name>javax.faces.FACELETS_LIBRARIES</param-name>
+ <param-value>/WEB-INF/app-tags.taglib.xml</param-value>
+ </context-param>
+ <context-param>
+ <param-name>org.richfaces.enableControlSkinning</param-name>
+ <param-value>true</param-value>
+ </context-param>
+ <context-param>
+ <param-name>org.richfaces.enableControlSkinningClasses</param-name>
+ <param-value>false</param-value>
+ </context-param>
+ <context-param>
+ <param-name>org.richfaces.skin</param-name>
+ <param-value>#{skinBean.skin}</param-value>
+ </context-param>
+ <context-param>
+ <param-name>javax.faces.PROJECT_STAGE</param-name>
+ <param-value>Development</param-value>
+ </context-param>
+ <context-param>
+ <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
+ <param-value>server</param-value>
+ </context-param>
+ <servlet>
+ <servlet-name>Faces Servlet</servlet-name>
+ <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+ <servlet-mapping>
+ <servlet-name>Faces Servlet</servlet-name>
+ <url-pattern>*.jsf</url-pattern>
+ </servlet-mapping>
+ <servlet-mapping>
+ <servlet-name>Faces Servlet</servlet-name>
+ <url-pattern>/faces/*</url-pattern>
+ </servlet-mapping>
+ <mime-mapping>
+ <extension>ecss</extension>
+ <mime-type>text/css</mime-type>
+ </mime-mapping>
+ <welcome-file-list>
+ <welcome-file>index.html</welcome-file>
+ <welcome-file>index.htm</welcome-file>
+ <welcome-file>index.jsp</welcome-file>
+ <welcome-file>default.html</welcome-file>
+ <welcome-file>default.htm</welcome-file>
+ <welcome-file>default.jsp</welcome-file>
+ </welcome-file-list>
+ <login-config>
+ <auth-method>BASIC</auth-method>
+ </login-config>
+</web-app>
Modified: branches/RFPL-434/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceInput.java
===================================================================
--- branches/RFPL-434/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceInput.java 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/ui/input/ui/src/main/java/org/richfaces/component/AbstractInplaceInput.java 2010-08-30 18:45:51 UTC (rev 19023)
@@ -24,6 +24,7 @@
import javax.faces.component.UIInput;
import org.richfaces.cdk.annotations.Attribute;
+import org.richfaces.cdk.annotations.EventName;
import org.richfaces.cdk.annotations.JsfComponent;
import org.richfaces.cdk.annotations.JsfRenderer;
import org.richfaces.cdk.annotations.Tag;
@@ -62,4 +63,84 @@
@Attribute
public abstract String getTabIndex();
+
+ @Attribute(events=@EventName("blur"))
+ public abstract String getOnblur();
+
+ @Attribute(events=@EventName("click"))
+ public abstract String getOnclick();
+
+ @Attribute(events=@EventName("ondblclick"))
+ public abstract String getOndblclick();
+
+ @Attribute(events=@EventName("focus"))
+ public abstract String getOnfocus();
+
+ @Attribute(events=@EventName("keydown"))
+ public abstract String getOnkeydown();
+
+ @Attribute(events=@EventName("keypress"))
+ public abstract String getOnkeypress();
+
+ @Attribute(events=@EventName("keyup"))
+ public abstract String getOnkeypup();
+
+ @Attribute(events=@EventName("mousedown"))
+ public abstract String getOnmousedown();
+
+ @Attribute(events=@EventName("mousemove"))
+ public abstract String getOnmousemove();
+
+ @Attribute(events=@EventName("mouseout"))
+ public abstract String getOnmouseout();
+
+ @Attribute(events=@EventName("mouseover"))
+ public abstract String getOnmouseover();
+
+ @Attribute(events=@EventName("mouseup"))
+ public abstract String getOnmouseup();
+
+ @Attribute(events=@EventName("inputClick"))
+ public abstract String getOnInputClick();
+
+ @Attribute(events=@EventName("inputDblclick"))
+ public abstract String getOnInputDblclick();
+
+ @Attribute(events=@EventName("inputMousedown"))
+ public abstract String getOnInputMousedown();
+
+ @Attribute(events=@EventName("inputMousemove"))
+ public abstract String getOnInputMousemove();
+
+ @Attribute(events=@EventName("inputMouseout"))
+ public abstract String getOnInputMouseout();
+
+ @Attribute(events=@EventName("inputMouseover"))
+ public abstract String getOnInputMouseover();
+
+ @Attribute(events=@EventName("inputMouseup"))
+ public abstract String getOnInputMouseup();
+
+ @Attribute(events=@EventName("inputKeydown"))
+ public abstract String getOnInputKeydown();
+
+ @Attribute(events=@EventName("inputKeypress"))
+ public abstract String getOnInputKeypress();
+
+ @Attribute(events=@EventName("oninputKeyup"))
+ public abstract String getOnInputKeypup();
+
+ @Attribute(events=@EventName("inputFocus"))
+ public abstract String getOnInputFocus();
+
+ @Attribute(events=@EventName("inputBlur"))
+ public abstract String getOnInputBlur();
+
+ @Attribute(events=@EventName("select"))
+ public abstract String getOnselect();
+
+ @Attribute(events=@EventName("change"))
+ public abstract String getOnchange();
+
+ //TODO: what is default event?, add onViewActivated, onEditActivated events support
}
Modified: branches/RFPL-434/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceInputBaseRenderer.java
===================================================================
--- branches/RFPL-434/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceInputBaseRenderer.java 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/ui/input/ui/src/main/java/org/richfaces/renderkit/InplaceInputBaseRenderer.java 2010-08-30 18:45:51 UTC (rev 19023)
@@ -22,6 +22,7 @@
package org.richfaces.renderkit;
import java.io.IOException;
+import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
@@ -35,6 +36,7 @@
import org.ajax4jsf.javascript.JSFunction;
import org.ajax4jsf.renderkit.RendererBase;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
import org.richfaces.component.AbstractInplaceInput;
import org.richfaces.component.InplaceState;
import org.richfaces.component.util.HtmlUtil;
@@ -57,6 +59,8 @@
public static final String OPTIONS_INPUT = "input";
+ public static final String OPTIONS_FOCUS = "focusElement";
+
public static final String OPTIONS_BTN_OK = "okbtn";
public static final String OPTIONS_LABEL = "label";
@@ -79,6 +83,38 @@
private static final String NONE_CSS = "rf-ii-none";
+ private static final Map<String, ComponentAttribute> INPLACEINPUT_HANDLER_ATTRIBUTES = Collections
+ .unmodifiableMap(ComponentAttribute.createMap(
+ new ComponentAttribute(HTML.ONCLICK_ATTRIBUTE).setEventNames("inputClick").
+ setComponentAttributeName("onInputClick"),
+ new ComponentAttribute(HTML.ONDBLCLICK_ATTRIBUTE).setEventNames("inputDblclick").
+ setComponentAttributeName("onInputDblclick"),
+ new ComponentAttribute(HTML.ONMOUSEDOWN_ATTRIBUTE).setEventNames("inputMousedown").
+ setComponentAttributeName("onInputMousedown"),
+ new ComponentAttribute(HTML.ONMOUSEUP_ATTRIBUTE).setEventNames("inputMouseup").
+ setComponentAttributeName("onInputMouseup"),
+ new ComponentAttribute(HTML.ONMOUSEOVER_ATTRIBUTE).setEventNames("inputMouseover").
+ setComponentAttributeName("onInputMouseover"),
+ new ComponentAttribute(HTML.ONMOUSEMOVE_ATTRIBUTE).setEventNames("inputMousemove").
+ setComponentAttributeName("onInputMousemove"),
+ new ComponentAttribute(HTML.ONMOUSEOUT_ATTRIBUTE).setEventNames("inputMouseout").
+ setComponentAttributeName("onInputMouseout"),
+ new ComponentAttribute(HTML.ONKEYPRESS_ATTRIBUTE).setEventNames("inputKeypress").
+ setComponentAttributeName("onInputKeypress"),
+ new ComponentAttribute(HTML.ONKEYDOWN_ATTRIBUTE).setEventNames("inputKeydown").
+ setComponentAttributeName("onInputKeydown"),
+ new ComponentAttribute(HTML.ONKEYUP_ATTRIBUTE).setEventNames("inputKeyup").
+ setComponentAttributeName("onInputKeyup"),
+ new ComponentAttribute(HTML.ONBLUR_ATTRIBUTE).setEventNames("inputBlur").
+ setComponentAttributeName("onInputBlur"),
+ new ComponentAttribute(HTML.ONFOCUS_ATTRIBUTE).setEventNames("inputFocus").
+ setComponentAttributeName("onInputFocus"),
+ new ComponentAttribute(HTML.ONCHANGE_ATTRIBUTE).setEventNames("change").
+ setComponentAttributeName("onchange"),
+ new ComponentAttribute(HTML.ONSELECT_ATTRIBUTE).setEventNames("select").
+ setComponentAttributeName("onselect")
+ ));
+
@Override
protected void doDecode(FacesContext facesContext, UIComponent component) {
@@ -90,6 +126,10 @@
}
}
+ protected void renderInputHandlers(FacesContext facesContext, UIComponent component) throws IOException {
+ RenderKitUtils.renderPassThroughAttributesOptimized(facesContext, component, INPLACEINPUT_HANDLER_ATTRIBUTES);
+ }
+
public InplaceState getInplaceState(UIComponent component) {
return ((AbstractInplaceInput) component).getState();
}
@@ -147,6 +187,7 @@
options.put(OPTIONS_EDIT_CONTAINER, clientId + ":edit");
options.put(OPTIONS_INPUT, clientId + ":input");
options.put(OPTIONS_LABEL, clientId + ":label");
+ options.put(OPTIONS_FOCUS, clientId + ":focus");
boolean showControls = inplaceInput.isShowControls();
options.put(OPTIONS_SHOWCONTROLS, showControls);
Modified: branches/RFPL-434/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/Autocomplete.js
===================================================================
--- branches/RFPL-434/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/Autocomplete.js 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/Autocomplete.js 2010-08-30 18:45:51 UTC (rev 19023)
@@ -6,7 +6,19 @@
this.cache = {}
this.cache[this.key] = items || [];
this.values = typeof values != "function" ? values || this.cache[this.key] : values(items);
+ this.useCache = checkValuesPrefix.call(this);
};
+
+ var checkValuesPrefix = function () {
+ var result = true;
+ for (var i = 0; i<this.values.length; i++) {
+ if (this.values[i].indexOf(this.key)!=0) {
+ result = false;
+ break;
+ }
+ }
+ return result;
+ }
var getItems = function (key) {
key = key.toLowerCase();
@@ -45,7 +57,7 @@
var isCached = function (key) {
key = key.toLowerCase();
- return this.cache[key] || this.key.indexOf(key)==0;
+ return this.cache[key] || this.useCache && key.indexOf(this.key)==0;
};
$.extend(rf.utils.Cache.prototype, (function () {
@@ -173,7 +185,7 @@
};
var autoFill = function (inputValue, value) {
- if( this.options.autofill) {
+ if( this.options.autofill && value.toLowerCase().indexOf(inputValue)==0) {
var field = rf.getDomElement(this.fieldId);
var start = rf.Selection.getStart(field);
this.setInputValue(inputValue + value.substring(inputValue.length));
@@ -184,7 +196,7 @@
var callAjax = function(event, value) {
- $(rf.getDomElement(this.id+ID.ITEMS)).removeData().empty();
+ clearItems.call(this);
rf.getDomElement(this.id+ID.VALUE).value = value;
@@ -245,18 +257,24 @@
this.items = $(newItems);
//TODO: works only with simple markup, not with <tr>
$(rf.getDomElement(this.id+ID.ITEMS)).empty().append(newItems);
- }
+ };
+ var clearItems = function () {
+ $(rf.getDomElement(this.id+ID.ITEMS)).removeData().empty();
+ this.items = [];
+ };
+
var onChangeValue = function (event, value) {
selectItem.call(this);
+ this.index = -1;
// value is undefined if called from AutocompleteBase onChange
var subValue = (typeof value == "undefined") ? this.__getSubValue() : value;
+ var oldValue = this.value;
+ this.value = subValue;
if (this.cache && this.cache.isCached(subValue)) {
updateItemsFromCache.call(this, subValue);
- this.index = -1;
- this.value = subValue;
if (this.options.selectFirst) {
if (event.which == rf.KEYS.RETURN || event.type == "click") {
this.setInputValue(subValue);
@@ -265,11 +283,17 @@
}
}
} else {
+ if (event.which == rf.KEYS.RETURN || event.type == "click") {
+ this.setInputValue(subValue);
+ }
if (subValue.length>=this.options.minChars) {
- if (this.options.ajaxMode && this.value!=subValue) {
- this.value = subValue;
+ if (this.options.ajaxMode && oldValue!=subValue) {
this.options.ajaxMode && callAjax.call(this, event, subValue);
}
+ } else {
+ if (this.options.ajaxMode) {
+ clearItems.call(this);
+ }
}
}
Modified: branches/RFPL-434/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceInput.js
===================================================================
--- branches/RFPL-434/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceInput.js 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/ui/input/ui/src/main/resources/META-INF/resources/org.richfaces/inplaceInput.js 2010-08-30 18:45:51 UTC (rev 19023)
@@ -29,7 +29,7 @@
this.attachToDom(id);
this.namespace = this.namespace || "."+rf.Event.createNamespace(this.name, this.id);
-
+
this.currentState = options.state;
this.editEvent = options.editEvent;
this.noneCss = options.noneCss;
@@ -40,6 +40,7 @@
this.editContainer = $(document.getElementById(options.editContainer));
this.input = $(document.getElementById(options.input));
this.label = $(document.getElementById(options.label));
+ this.focusElement = $(document.getElementById(options.focusElement));
this.initialValue = this.label.text();
this.element.bind(this.editEvent, $.proxy(this.__editHandler, this));
@@ -94,13 +95,14 @@
}
isSaved = true;
this.__hide();
- },
+ },
cancel: function() {
var text = this.label.text();
this.input.val(text);
isSaved = true;
this.__hide();
+ this.element.focus();
},
setValue: function (value) {
@@ -113,7 +115,7 @@
},
/****************** private methods *****************************************/
-
+
__saveBtnHandler: function(e) {
this.save();
return false;
@@ -140,6 +142,7 @@
if(!isSaved) {
this.save();
}
+ return false;
},
__scrollHandler: function(e) {
@@ -169,7 +172,7 @@
rf.Event.unbindScrollEventHandlers(this.scrollElements, this);
this.scrollElements = null;
this.editContainer.addClass(this.noneCss);
- this.input.blur();
+ this.focusElement.focus();
},
destroy: function () {
Modified: branches/RFPL-434/ui/input/ui/src/main/templates/inplaceInput.template.xml
===================================================================
--- branches/RFPL-434/ui/input/ui/src/main/templates/inplaceInput.template.xml 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/ui/input/ui/src/main/templates/inplaceInput.template.xml 2010-08-30 18:45:51 UTC (rev 19023)
@@ -23,9 +23,13 @@
<span id="#{clientId}:label" class="rf-ii-lbl">
#{inplaceValue}
</span>
+ <input id="#{clientId}:focus" type="image" style="position: absolute; top: 0px; left: 0px; outline-style: none;" class="rf-ii-none"/>
<span id="#{clientId}:edit" class="#{getEditStyleClass(component, inplaceState)}">
- <input id="#{clientId}:input" autocomplete="off" name="#{clientId}:input" type="text" value="#{inplaceValue}" class="rf-ii-f" cdk:passThrough="tabIndex" style="width: #{component.attributes['inputWidth']};" />
-
+ <input id="#{clientId}:input" autocomplete="off" name="#{clientId}:input"
+ type="text" value="#{inplaceValue}" class="rf-ii-f" style="width: #{component.attributes['inputWidth']};"
+ cdk:passThrough="tabIndex">
+ <cdk:call expression="renderInputHandlers(facesContext, component);"/>
+ </input>
<c:if test="#{component.attributes['showControls']}">
<span class="rf-ii-btn-prepos">
<span class="rf-ii-btn-pos">
Modified: branches/RFPL-434/ui/input/ui/src/test/java/org/richfaces/renderkit/InplaceInputRendererTest.java
===================================================================
--- branches/RFPL-434/ui/input/ui/src/test/java/org/richfaces/renderkit/InplaceInputRendererTest.java 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/ui/input/ui/src/test/java/org/richfaces/renderkit/InplaceInputRendererTest.java 2010-08-30 18:45:51 UTC (rev 19023)
@@ -51,16 +51,14 @@
environment = new HtmlUnitEnvironment();
environment.withWebRoot(new File("src/test/resources"));
environment.withResource("/WEB-INF/faces-config.xml", "org/richfaces/renderkit/faces-config.xml");
- environment.withResource("/test.xhtml", "org/richfaces/renderkit/rendererTest.xhtml");
+ environment.withResource("/test.xhtml", "org/richfaces/renderkit/inplaceInputTest.xhtml");
environment.start();
}
@Test
public void testRenderDefaultState() throws Exception {
HtmlPage page = environment.getPage("/test.jsf");
- List<?> nodes = page.getByXPath("//*[@id = 'form:input_default']");
- assertEquals(1, nodes.size());
- HtmlElement span = (HtmlElement) nodes.get(0);
+ HtmlElement span = page.getFirstByXPath("//*[@id = 'form:input_default']");
assertEquals("span", span.getNodeName());
assertEquals("rf-ii-d-s", span.getAttribute(HTML.CLASS_ATTRIBUTE));
@@ -70,7 +68,7 @@
DomNode text = label.getFirstChild();
assertEquals(DomNode.TEXT_NODE, text.getNodeType());
- HtmlElement edit = (HtmlElement)label.getNextSibling();
+ HtmlElement edit = page.getFirstByXPath("//*[@id = 'form:input_default:edit']");
assertEquals("span", edit.getNodeName());
assertEquals("rf-ii-e-s rf-ii-none", edit.getAttribute(HTML.CLASS_ATTRIBUTE));
@@ -88,9 +86,7 @@
HtmlPage page = environment.getPage("/test.jsf");
- List<?> nodes = page.getByXPath("//*[@id = 'form:input_edit']");
- assertEquals(1, nodes.size());
- HtmlElement span = (HtmlElement) nodes.get(0);
+ HtmlElement span = page.getFirstByXPath("//*[@id = 'form:input_edit']");
assertEquals("span", span.getNodeName());
assertEquals("rf-ii-d-s", span.getAttribute(HTML.CLASS_ATTRIBUTE));
@@ -100,7 +96,7 @@
DomNode text = label.getFirstChild();
assertEquals(DomNode.TEXT_NODE, text.getNodeType());
- HtmlElement edit = (HtmlElement)label.getNextSibling();
+ HtmlElement edit = page.getFirstByXPath("//*[@id = 'form:input_edit:edit']");
assertEquals("span", edit.getNodeName());
assertEquals("rf-ii-e-s", edit.getAttribute(HTML.CLASS_ATTRIBUTE));
@@ -109,24 +105,15 @@
assertEquals("rf-ii-f", input.getAttribute(HTML.CLASS_ATTRIBUTE));
assertEquals(text.getNodeValue(), input.getAttribute(HTML.VALUE_ATTRIBUTE));
- List<?> buttonNodes = page.getByXPath("//*[@id = 'form:input_edit:btn']");
- assertEquals(1, buttonNodes.size());
-
- HtmlElement button = (HtmlElement) buttonNodes.get(0);
+ HtmlElement button = page.getFirstByXPath("//*[@id = 'form:input_edit:btn']");
assertEquals("span", button.getNodeName());
- List<?> okButtonNodes = page.getByXPath("//*[@id = 'form:input_edit:okbtn']");
- assertEquals(1, okButtonNodes.size());
-
- HtmlElement okButton = (HtmlElement) okButtonNodes.get(0);
+ HtmlElement okButton = page.getFirstByXPath("//*[@id = 'form:input_edit:okbtn']");
assertEquals("input", okButton.getNodeName());
assertEquals("rf-ii-btn", okButton.getAttribute(HTML.CLASS_ATTRIBUTE));
assertEquals("image", okButton.getAttribute(HTML.TYPE_ATTR));
- List<?> cancelButtonNodes = page.getByXPath("//*[@id = 'form:input_edit:cancelbtn']");
- assertEquals(1, cancelButtonNodes.size());
-
- HtmlElement cancelButton = (HtmlElement) cancelButtonNodes.get(0);
+ HtmlElement cancelButton = page.getFirstByXPath("//*[@id = 'form:input_edit:cancelbtn']");
assertEquals("input", cancelButton.getNodeName());
assertEquals("rf-ii-btn", cancelButton.getAttribute(HTML.CLASS_ATTRIBUTE));
assertEquals("image", cancelButton.getAttribute(HTML.TYPE_ATTR));
@@ -137,97 +124,62 @@
public void testEdit() throws Exception {
HtmlPage page = environment.getPage("/test.jsf");
edit(page, "input_default", "Another Test String");
-
blur(page);
-
- List<?> labelNodes = page.getByXPath("//*[@id = 'form:input_default:label']/text()");
- assertEquals(1, labelNodes.size());
- DomText text = (DomText) labelNodes.get(0);
+ DomText text = page.getFirstByXPath("//*[@id = 'form:input_default:label']/text()");
assertEquals("Another Test String", text.getTextContent());
-
- List<?>nodes = page.getByXPath("//*[@id = 'form:input_default']");
- assertEquals(1, nodes.size());
- HtmlElement span = (HtmlElement) nodes.get(0);
+ HtmlElement span = page.getFirstByXPath("//*[@id = 'form:input_default']");
assertEquals("rf-ii-d-s rf-ii-c-s", span.getAttribute(HTML.CLASS_ATTRIBUTE));
-
}
private void blur(HtmlPage page) throws Exception {
- List<?> panelNodes = page.getByXPath("//*[@id = 'form:panel']");
- assertEquals(1, panelNodes.size());
- HtmlElement panel = (HtmlElement) panelNodes.get(0);
+ HtmlElement panel = page.getFirstByXPath("//*[@id = 'form:panel']");
panel.click();
}
private void typeNewValue(HtmlPage page, String inplaceInputId, String value) throws Exception {
- List<?> inputNodes = page.getByXPath("//*[@id = 'form:" + inplaceInputId + ":input']");
- assertEquals(1, inputNodes.size());
- HtmlElement input = (HtmlElement) inputNodes.get(0);
+ HtmlElement input = page.getFirstByXPath("//*[@id = 'form:" + inplaceInputId + ":input']");
input.setAttribute(HTML.VALUE_ATTRIBUTE, "");
input.type(value);
}
private void edit(HtmlPage page, String inplaceInputId, String value) throws Exception {
- List<?> nodes = page.getByXPath("//*[@id = 'form:" + inplaceInputId + "']");
- assertEquals(1, nodes.size());
- HtmlElement span = (HtmlElement) nodes.get(0);
+ HtmlElement span = page.getFirstByXPath("//*[@id = 'form:" + inplaceInputId + "']");
span.click();
-
- List<?> editNodes = page.getByXPath("//*[@id = 'form:" + inplaceInputId + ":edit']");
- assertEquals(1, editNodes.size());
- HtmlElement edit = (HtmlElement) editNodes.get(0);
+ HtmlElement edit = page.getFirstByXPath("//*[@id = 'form:" + inplaceInputId + ":edit']");
assertEquals("rf-ii-e-s", edit.getAttribute(HTML.CLASS_ATTRIBUTE));
-
typeNewValue(page, inplaceInputId, value);
}
@Test
public void testEditWithControls() throws Exception {
HtmlPage page = environment.getPage("/test.jsf");
-
edit(page, "input_controls", "Another Test String");
-
- List<?> cancelNodes = page.getByXPath("//*[@id = 'form:input_controls:cancelbtn']");
- assertEquals(1, cancelNodes.size());
- HtmlElement cancel = (HtmlElement) cancelNodes.get(0);
-
+
+ HtmlElement cancel = page.getFirstByXPath("//*[@id = 'form:input_controls:cancelbtn']");
cancel.mouseDown();
- List<?> labelNodes = page.getByXPath("//*[@id = 'form:input_controls:label']/text()");
- assertEquals(1, labelNodes.size());
- DomText text = (DomText) labelNodes.get(0);
+ DomText text = page.getFirstByXPath("//*[@id = 'form:input_controls:label']/text()");
assertEquals("Test String", text.getTextContent());
- List<?> nodes = page.getByXPath("//*[@id = 'form:input_controls']");
- assertEquals(1, nodes.size());
- HtmlElement span = (HtmlElement) nodes.get(0);
+ HtmlElement span = page.getFirstByXPath("//*[@id = 'form:input_controls']");
assertEquals("rf-ii-d-s", span.getAttribute(HTML.CLASS_ATTRIBUTE));
edit(page, "input_controls", "Another Test String");
- List<?> okNodes = page.getByXPath("//*[@id = 'form:input_controls:okbtn']");
- assertEquals(1, okNodes.size());
- HtmlElement ok = (HtmlElement) okNodes.get(0);
-
+ HtmlElement ok = page.getFirstByXPath("//*[@id = 'form:input_controls:okbtn']");
ok.mouseDown();
- labelNodes = page.getByXPath("//*[@id = 'form:input_controls:label']/text()");
- assertEquals(1, labelNodes.size());
- text = (DomText) labelNodes.get(0);
+ text = page.getFirstByXPath("//*[@id = 'form:input_controls:label']/text()");
assertEquals("Another Test String", text.getTextContent());
- nodes = page.getByXPath("//*[@id = 'form:input_controls']");
- assertEquals(1, nodes.size());
- span = (HtmlElement) nodes.get(0);
+ span = page.getFirstByXPath("//*[@id = 'form:input_controls']");
assertEquals("rf-ii-d-s rf-ii-c-s", span.getAttribute(HTML.CLASS_ATTRIBUTE));
edit(page, "input_controls", "Test String");
blur(page);
- labelNodes = page.getByXPath("//*[@id = 'form:input_controls:label']/text()");
- assertEquals(1, labelNodes.size());
- text = (DomText) labelNodes.get(0);
+ text = page.getFirstByXPath("//*[@id = 'form:input_controls:label']/text()");
assertEquals("Test String", text.getTextContent());
}
Copied: branches/RFPL-434/ui/input/ui/src/test/resources/org/richfaces/renderkit/inplaceInputTest.xhtml (from rev 19021, trunk/ui/input/ui/src/test/resources/org/richfaces/renderkit/inplaceInputTest.xhtml)
===================================================================
--- branches/RFPL-434/ui/input/ui/src/test/resources/org/richfaces/renderkit/inplaceInputTest.xhtml (rev 0)
+++ branches/RFPL-434/ui/input/ui/src/test/resources/org/richfaces/renderkit/inplaceInputTest.xhtml 2010-08-30 18:45:51 UTC (rev 19023)
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:in="http://richfaces.org/input">
+<f:view contentType="text/html" />
+
+<h:head>
+ <title>Richfaces InplaceInput</title>
+</h:head>
+
+<h:body>
+ <h:form id="form">
+ <in:inplaceInput id="input_default" value="#{dataBean.value}"/>
+
+ <in:inplaceInput id="input_controls" showControls="true" value="#{dataBean.value}"/>
+
+ <in:inplaceInput id="input_edit" state="edit" showControls="true" value="#{dataBean.value}"/>
+
+ <h:panelGroup id="panel">
+ <!-- click here for blur -->
+ </h:panelGroup>
+ </h:form>
+</h:body>
+</html>
Deleted: branches/RFPL-434/ui/input/ui/src/test/resources/org/richfaces/renderkit/rendererTest.xhtml
===================================================================
--- branches/RFPL-434/ui/input/ui/src/test/resources/org/richfaces/renderkit/rendererTest.xhtml 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/ui/input/ui/src/test/resources/org/richfaces/renderkit/rendererTest.xhtml 2010-08-30 18:45:51 UTC (rev 19023)
@@ -1,26 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:ui="http://java.sun.com/jsf/facelets"
- xmlns:in="http://richfaces.org/input">
-<f:view contentType="text/html" />
-
-<h:head>
- <title>Richfaces InplaceInput</title>
-</h:head>
-
-<h:body>
- <h:form id="form">
- <in:inplaceInput id="input_default" value="#{dataBean.value}"/>
-
- <in:inplaceInput id="input_controls" showControls="true" value="#{dataBean.value}"/>
-
- <in:inplaceInput id="input_edit" state="edit" showControls="true" value="#{dataBean.value}"/>
-
- <h:panelGroup id="panel">
- <!-- click here for blur -->
- </h:panelGroup>
- </h:form>
-</h:body>
-</html>
Modified: branches/RFPL-434/ui/iteration/ui/src/main/java/org/richfaces/component/AbstractSubTable.java
===================================================================
--- branches/RFPL-434/ui/iteration/ui/src/main/java/org/richfaces/component/AbstractSubTable.java 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/ui/iteration/ui/src/main/java/org/richfaces/component/AbstractSubTable.java 2010-08-30 18:45:51 UTC (rev 19023)
@@ -1,5 +1,5 @@
/*
- * JBoss, Home of Professional Open Source
+* JBoss, Home of Professional Open Source
* Copyright ${year}, Red Hat, Inc. and individual contributors
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
@@ -69,9 +69,14 @@
expanded
}
- @Attribute(defaultValue = "true")
- public abstract boolean isExpanded();
+ public boolean isExpanded() {
+ return (Boolean)getStateHelper().eval(PropertyKeys.expanded, true);
+ }
+ public void setExpanded(boolean expanded) {
+ getStateHelper().put(PropertyKeys.expanded, expanded);
+ }
+
@Attribute(defaultValue = MODE_CLIENT)
public abstract String getExpandMode();
@@ -79,6 +84,7 @@
if (event instanceof ToggleEvent) {
ToggleEvent toggleEvent = (ToggleEvent) event;
boolean newValue = toggleEvent.isExpanded();
+
getStateHelper().put(PropertyKeys.expanded, newValue);
FacesContext facesContext = getFacesContext();
Modified: branches/RFPL-434/ui/iteration/ui/src/main/resources/META-INF/resources/org.richfaces/subtable.js
===================================================================
--- branches/RFPL-434/ui/iteration/ui/src/main/resources/META-INF/resources/org.richfaces/subtable.js 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/ui/iteration/ui/src/main/resources/META-INF/resources/org.richfaces/subtable.js 2010-08-30 18:45:51 UTC (rev 19023)
@@ -85,7 +85,7 @@
},
isExpand: function() {
- return (this.getState() > richfaces.ui.SubTable.collapse);
+ return (parseInt(this.getState()) == richfaces.ui.SubTable.expand);
},
switchState: function(options) {
Modified: branches/RFPL-434/ui/iteration/ui/src/main/templates/datascroller.template.xml
===================================================================
--- branches/RFPL-434/ui/iteration/ui/src/main/templates/datascroller.template.xml 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/ui/iteration/ui/src/main/templates/datascroller.template.xml 2010-08-30 18:45:51 UTC (rev 19023)
@@ -53,7 +53,7 @@
<c:if test="#{controlsState.fastForwardRendered}">
<c:choose>
<c:when test="#{controlsState.fastForwardEnabled}">
- <a id="#{clientId}_ds_ff" class="rf-ds-btn rf-ds-r" href="javascript:void(0)">
+ <a id="#{clientId}_ds_ff" class="rf-ds-btn rf-ds-r" href="javascript:void(0);">
»
</a>
</c:when>
@@ -68,7 +68,7 @@
<c:if test="#{controlsState.lastRendered}">
<c:choose>
<c:when test="#{controlsState.lastEnabled}">
- <a id="#{clientId}_ds_l" class="rf-ds-btn rf-ds-r" href="javascript:void(0)">
+ <a id="#{clientId}_ds_l" class="rf-ds-btn rf-ds-r" href="javascript:void(0);">
»»
</a>
</c:when>
Copied: branches/RFPL-434/ui/iteration/ui/src/test/java/org/richfaces/component/UIDataTableTest.java (from rev 19021, trunk/ui/iteration/ui/src/test/java/org/richfaces/component/UIDataTableTest.java)
===================================================================
--- branches/RFPL-434/ui/iteration/ui/src/test/java/org/richfaces/component/UIDataTableTest.java (rev 0)
+++ branches/RFPL-434/ui/iteration/ui/src/test/java/org/richfaces/component/UIDataTableTest.java 2010-08-30 18:45:51 UTC (rev 19023)
@@ -0,0 +1,274 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright ${year}, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * 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;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import javax.el.ELContext;
+import javax.el.ExpressionFactory;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+
+import org.ajax4jsf.model.DataVisitor;
+import org.ajax4jsf.model.ExtendedDataModel;
+import org.ajax4jsf.model.Range;
+import org.jboss.test.faces.AbstractFacesTest;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.richfaces.model.Arrangeable;
+import org.richfaces.model.ArrangeableState;
+import org.richfaces.model.FilterField;
+import org.richfaces.model.SortField;
+import org.richfaces.model.SortMode;
+
+/**
+ * @author Konstantin Mishin
+ *
+ */
+public class UIDataTableTest extends AbstractFacesTest {
+
+ private class MockArrangeableModel extends ExtendedDataModel<Object> implements Arrangeable {
+
+ private ArrangeableState state;
+ @Override
+ public Object getRowKey() {
+ return null;
+ }
+
+ @Override
+ public void setRowKey(Object key) {
+ }
+
+ @Override
+ public void walk(FacesContext context, DataVisitor visitor, Range range, Object argument) {
+ }
+
+ @Override
+ public int getRowCount() {
+ return 0;
+ }
+
+ @Override
+ public Object getRowData() {
+ return null;
+ }
+
+ @Override
+ public int getRowIndex() {
+ return 0;
+ }
+
+ @Override
+ public Object getWrappedData() {
+ return null;
+ }
+
+ @Override
+ public boolean isRowAvailable() {
+ return false;
+ }
+
+ @Override
+ public void setRowIndex(int rowIndex) {
+ }
+
+ @Override
+ public void setWrappedData(Object data) {
+ }
+
+ public void arrange(FacesContext context, ArrangeableState state) {
+ this.state = state;
+ }
+
+ public ArrangeableState getState() {
+ return state;
+ }
+
+ }
+ private UIDataTable table = null;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ setupFacesRequest();
+ table = new UIDataTable();
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ table = null;
+ super.tearDown();
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#getRendersChildren()}.
+ */
+ @Test
+ public void testGetRendersChildren() {
+ Assert.assertTrue(table.getRendersChildren());
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#dataChildren()}.
+ */
+ @Test
+ public void testDataChildren() {
+ Assert.assertTrue(table.dataChildren() instanceof DataTableDataIterator);
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#fixedChildren()}.
+ */
+ @Test
+ public void testFixedChildren() {
+ Assert.assertTrue(table.fixedChildren() instanceof DataTableFixedChildrenIterator);
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#createExtendedDataModel()}.
+ */
+ @Test
+ public void testCreateExtendedDataModel() {
+ Assert.assertFalse(table.createExtendedDataModel() instanceof Arrangeable);
+ List<String> sortPriority = Arrays.asList("id2", "id0", "id1");
+ List<UIComponent> children = table.getChildren();
+ ExpressionFactory expressionFactory = facesContext.getApplication().getExpressionFactory();
+ ELContext elContext = facesContext.getELContext();
+ UIColumn column = new UIColumn();
+ column.setRendered(false);
+ children.add(column);
+ for (int i = 0; i < sortPriority.size(); i++) {
+ UIColumn child = new UIColumn();
+ child.setId("id" + i);
+ child.setValueExpression("filterExpression", expressionFactory
+ .createValueExpression(elContext, "#{'id" + i + "'}", Object.class));
+ child.setValueExpression("sortBy", expressionFactory
+ .createValueExpression(elContext, "#{'id" + i + "'}", Object.class));
+ child.setSortOrder(SortOrder.ascending);
+ children.add(child);
+ }
+ Assert.assertTrue(table.createExtendedDataModel() instanceof Arrangeable);
+ MockArrangeableModel model = new MockArrangeableModel();
+ table.setValue(model);
+ table.setSortPriority(sortPriority);
+ Assert.assertSame(model, table.createExtendedDataModel());
+ ArrangeableState state = model.getState();
+ List<FilterField> filterFields = state.getFilterFields();
+ for (int i = 0; i < sortPriority.size(); i++) {
+ Assert.assertEquals("id" + i , filterFields.get(i).getFilterExpression().getValue(elContext));
+ }
+ List<SortField> sortFields = state.getSortFields();
+ for (int i = 0; i < sortPriority.size(); i++) {
+ Assert.assertEquals(sortPriority.get(i), sortFields.get(i).getSortBy().getValue(elContext));
+ }
+ Assert.assertEquals(facesContext.getViewRoot().getLocale(), state.getLocale());
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#columns()}.
+ */
+ @Test
+ public void testColumns() {
+ Assert.assertTrue(table.columns() instanceof DataTableColumnsIterator);
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#getHeader()}.
+ */
+ @Test
+ public void testGetHeader() {
+ UIOutput component = new UIOutput();
+ table.getFacets().put("header", component);
+ Assert.assertSame(component, table.getHeader());
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#getFooter()}.
+ */
+ @Test
+ public void testGetFooter() {
+ UIOutput component = new UIOutput();
+ table.getFacets().put("footer", component);
+ Assert.assertSame(component, table.getFooter());
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#getFilterVar()} and
+ * {@link org.richfaces.component.UIDataTableBase#setFilterVar(java.lang.String)}.
+ */
+ @Test
+ public void testFilterVar() {
+ String string = "fv";
+ table.setFilterVar(string);
+ Assert.assertEquals(string, table.getFilterVar());
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#getSortPriority()} and
+ * {@link org.richfaces.component.UIDataTableBase#setSortPriority(java.util.Collection)}.
+ */
+ @Test
+ public void testSortPriority() {
+ table.setSortPriority(Collections.EMPTY_LIST);
+ Assert.assertEquals(Collections.EMPTY_LIST, table.getSortPriority());
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#getSortMode()} and
+ * {@link org.richfaces.component.UIDataTableBase#setSortMode(org.richfaces.model.SortMode)}.
+ */
+ @Test
+ public void testSortMode() {
+ table.setSortMode(SortMode.multi);
+ Assert.assertEquals(SortMode.multi, table.getSortMode());
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#isColumnFacetPresent(java.lang.String)}.
+ */
+ @Test
+ public void testIsColumnFacetPresent() {
+ String facetName = "header";
+ Assert.assertFalse(table.isColumnFacetPresent(facetName));
+ UIColumn child = new UIColumn();
+ List<UIComponent> children = table.getChildren();
+ children.add(new UIColumn());
+ children.add(child);
+ Assert.assertFalse(table.isColumnFacetPresent(facetName));
+ child.getFacets().put(facetName, new UIOutput());
+ Assert.assertTrue(table.isColumnFacetPresent(facetName));
+ child.setRendered(false);
+ Assert.assertFalse(table.isColumnFacetPresent(facetName));
+ }
+}
Modified: branches/RFPL-434/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataGridRendererTest.java
===================================================================
--- branches/RFPL-434/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataGridRendererTest.java 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataGridRendererTest.java 2010-08-30 18:45:51 UTC (rev 19023)
@@ -15,7 +15,6 @@
import org.junit.Before;
import org.junit.Test;
import org.richfaces.component.AbstractDataGrid;
-import org.richfaces.component.UIDataGrid;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
Copied: branches/RFPL-434/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataScrollerBean.java (from rev 19021, trunk/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataScrollerBean.java)
===================================================================
--- branches/RFPL-434/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataScrollerBean.java (rev 0)
+++ branches/RFPL-434/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataScrollerBean.java 2010-08-30 18:45:51 UTC (rev 19023)
@@ -0,0 +1,38 @@
+package org.richfaces.renderkit;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DataScrollerBean {
+
+ private List<String> content;
+
+ private int pageNumber = 1;
+
+
+ public DataScrollerBean() {
+ content = new ArrayList<String>();
+ content.add("1 page content");
+ content.add("2 page content");
+ content.add("3 page content");
+ content.add("4 page content");
+ content.add("5 page content");
+ content.add("6 page content");
+ }
+
+ public List<String> getContent() {
+ return content;
+ }
+
+ public void setContent(List<String> content) {
+ this.content = content;
+ }
+
+ public int getPageNumber() {
+ return pageNumber;
+ }
+
+ public void setPageNumber(int pageNumber) {
+ this.pageNumber = pageNumber;
+ }
+}
Copied: branches/RFPL-434/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataScrollerRenderTest.java (from rev 19021, trunk/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataScrollerRenderTest.java)
===================================================================
--- branches/RFPL-434/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataScrollerRenderTest.java (rev 0)
+++ branches/RFPL-434/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataScrollerRenderTest.java 2010-08-30 18:45:51 UTC (rev 19023)
@@ -0,0 +1,440 @@
+package org.richfaces.renderkit;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+import java.util.List;
+
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
+import org.jboss.test.faces.htmlunit.HtmlUnitEnvironment;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.gargoylesoftware.htmlunit.html.DomNode;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+
+
+/**
+ * @author Anton Belevich
+ *
+ */
+public class DataScrollerRenderTest {
+
+ private HtmlUnitEnvironment environment;
+
+ @Before
+ public void setUp() {
+ environment = new HtmlUnitEnvironment();
+ environment.withWebRoot(new File("src/test/resources"));
+ environment.withResource("/WEB-INF/faces-config.xml", "org/richfaces/renderkit/faces-config.xml");
+ environment.withResource("/test.xhtml", "org/richfaces/renderkit/dataTableTest.xhtml");
+ environment.start();
+ }
+
+ @Test
+ public void testEncoding() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+
+ String scrollerId = "scroller1";
+ //first scroll
+ List<?> nodes = page.getByXPath("//*[@id = 'form:scroller1']");
+
+ assertEquals(1, nodes.size());
+ HtmlElement span = (HtmlElement) nodes.get(0);
+ assertEquals("span", span.getNodeName());
+ assertEquals("rf-ds", span.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // first/fastRewind buttons with arrows
+ HtmlElement first = getFirstButton(page, scrollerId);
+ assertEquals("span", first.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l rf-ds-dis", first.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ HtmlElement fastRewind = getFastRewindButton(page, scrollerId);
+ assertEquals("span", fastRewind.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l rf-ds-dis", fastRewind.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // currently selected digital button
+ HtmlElement dc = getDigitalButton(page, scrollerId, 1);
+ assertEquals("span", dc.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", dc.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // digital buttons
+ HtmlElement d2 = getDigitalButton(page, scrollerId, 2);
+ assertEquals("a", d2.getNodeName());
+ assertEquals("rf-ds-dtl", d2.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+ assertEquals("javascript:void(0);", d2.getAttribute(HTML.HREF_ATTR));
+
+ HtmlElement d3 = getDigitalButton(page, scrollerId, 3);
+ assertEquals("a", d3.getNodeName());
+ assertEquals("rf-ds-dtl", d3.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+ assertEquals("javascript:void(0);", d3.getAttribute(HTML.HREF_ATTR));
+
+ HtmlElement d4 = getDigitalButton(page, scrollerId, 4);
+ assertEquals("a", d4.getNodeName());
+ assertEquals("rf-ds-dtl", d4.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+ assertEquals("javascript:void(0);", d4.getAttribute(HTML.HREF_ATTR));
+
+ HtmlElement d5 = getDigitalButton(page, scrollerId, 5);
+ assertEquals("a", d5.getNodeName());
+ assertEquals("rf-ds-dtl", d5.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+ assertEquals("javascript:void(0);", d5.getAttribute(HTML.HREF_ATTR));
+
+ HtmlElement d6 = getDigitalButton(page, scrollerId, 6);
+ assertEquals("a", d6.getNodeName());
+ assertEquals("rf-ds-dtl", d6.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+ assertEquals("javascript:void(0);", d6.getAttribute(HTML.HREF_ATTR));
+
+ // last/fastForward buttons with arrows
+ HtmlElement fastForward = getFastForwardButton(page, scrollerId);
+ assertEquals("a", fastForward.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r", fastForward.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+ assertEquals("javascript:void(0);", fastForward.getAttribute(HTML.HREF_ATTR));
+
+ HtmlElement last = getLastButton(page, scrollerId);
+ assertEquals("a", last.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r", last.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+ assertEquals("javascript:void(0);", last.getAttribute(HTML.HREF_ATTR));
+ }
+
+ @Test
+ public void testOutDataScrollerFirstLastButtons() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+ String firstScrollerId = "scroller1";
+
+ //dataScroller inside dataTable 'footer' facet
+ String secondScrollerId = "richTable:scroller2";
+
+ HtmlElement last = getLastButton(page, firstScrollerId);
+ last.click();
+ checkLastPageButtons(page, firstScrollerId, secondScrollerId);
+
+ HtmlElement first = getFirstButton(page, firstScrollerId);
+ first.click();
+ checkFirstPageButtons(page, firstScrollerId, secondScrollerId);
+ }
+
+ @Test
+ public void testInnerDataScrollerFirstLastButtons() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+ String firstScrollerId = "scroller1";
+
+ //dataScroller inside dataTable 'footer' facet
+ String secondScrollerId = "richTable:scroller2";
+
+ HtmlElement last = getLastButton(page, secondScrollerId);
+ last.click();
+ checkLastPageButtons(page, firstScrollerId, secondScrollerId);
+
+ HtmlElement first = getFirstButton(page, secondScrollerId);
+ first.click();
+ checkFirstPageButtons(page, firstScrollerId, secondScrollerId);
+ }
+
+ @Test
+ public void testOutDataScrollerFastButtons() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+ String firstScrollerId = "scroller1";
+
+ //dataScroller inside dataTable 'footer' facet
+ String secondScrollerId = "richTable:scroller2";
+
+ for(int i = 2; i <= 6; i++) {
+ HtmlElement ff = getFastForwardButton(page, firstScrollerId);
+
+ ff.click();
+
+ HtmlElement currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+ assertEquals("span", currentDigital1.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital1.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // if scroller inside dataTable has switched
+ HtmlElement currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ assertEquals("span", currentDigital2.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital2.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // check if page has switched
+ assertEquals(i + " page content", getCurrentPageContent(page, i));
+ }
+
+ checkLastPageButtons(page, firstScrollerId, secondScrollerId);
+
+ //scroll back
+ for(int i = 5; i >= 1; i--) {
+ HtmlElement fr = getFastRewindButton(page, firstScrollerId);
+ fr.click();
+ HtmlElement currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+
+ assertEquals("span", currentDigital1.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital1.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // if scroller inside dataTable has switched
+ HtmlElement currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ assertEquals("span", currentDigital2.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital2.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // check if page has switched
+ assertEquals(i + " page content", getCurrentPageContent(page, i));
+ }
+
+ checkFirstPageButtons(page, firstScrollerId, secondScrollerId);
+ }
+
+ @Test
+ public void testInnerDataScrollerFastButtons() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+ String firstScrollerId = "scroller1";
+
+ //dataScroller inside dataTable 'footer' facet
+ String secondScrollerId = "richTable:scroller2";
+
+ for(int i = 2; i <= 6; i++) {
+ HtmlElement ff = getFastForwardButton(page, secondScrollerId);
+ ff.click();
+ HtmlElement currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ assertEquals("span", currentDigital2.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital2.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // if scroller outside dataTable has switched
+ HtmlElement currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+ assertEquals("span", currentDigital1.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital1.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // check if page has switched
+ assertEquals(i + " page content", getCurrentPageContent(page, i));
+ }
+
+ checkLastPageButtons(page, firstScrollerId, secondScrollerId);
+
+ //scroll back
+ for(int i = 5; i >= 1; i--) {
+ HtmlElement fr = getFastRewindButton(page, secondScrollerId);
+ fr.click();
+
+ HtmlElement currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ assertEquals("span", currentDigital2.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital2.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // if scroller inside dataTable has switched
+ HtmlElement currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+ assertEquals("span", currentDigital1.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital1.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // check if page has switched
+ assertEquals(i + " page content", getCurrentPageContent(page, i));
+ }
+
+ checkFirstPageButtons(page, firstScrollerId, secondScrollerId);
+ }
+
+ @Test
+ public void testOutDataScrollerDigitalButtons() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+ String firstScrollerId = "scroller1";
+
+ //dataScroller inside dataTable 'footer' facet
+ String secondScrollerId = "richTable:scroller2";
+
+ for(int i = 2; i <= 6; i++) {
+ HtmlElement currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+ currentDigital1.click();
+
+ currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+ assertEquals("span", currentDigital1.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital1.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // if scroller inside dataTable has switched
+ HtmlElement currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ assertEquals("span", currentDigital2.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital2.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // check if page has switched
+ assertEquals(i + " page content", getCurrentPageContent(page, i));
+ }
+
+ checkLastPageButtons(page, firstScrollerId, secondScrollerId);
+
+ //scroll back
+ for(int i = 5; i >= 1; i--) {
+ HtmlElement currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+ currentDigital1.click();
+
+ currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+ assertEquals("span", currentDigital1.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital1.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // if scroller inside dataTable has switched
+ HtmlElement currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ assertEquals("span", currentDigital2.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital2.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // check if page has switched
+ assertEquals(i + " page content", getCurrentPageContent(page, i));
+ }
+
+ checkFirstPageButtons(page, firstScrollerId, secondScrollerId);
+ }
+
+ @Test
+ public void testInnerDataScrollerDigitalButtons() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+ String firstScrollerId = "scroller1";
+
+ //dataScroller inside dataTable 'footer' facet
+ String secondScrollerId = "richTable:scroller2";
+
+ for(int i = 2; i <= 6; i++) {
+ HtmlElement currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ currentDigital2.click();
+
+ currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ assertEquals("span", currentDigital2.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital2.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // if scroller outside dataTable has switched
+ HtmlElement currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+ assertEquals("span", currentDigital1.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital1.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // check if page has switched
+ assertEquals(i + " page content", getCurrentPageContent(page, i));
+ }
+
+ checkLastPageButtons(page, firstScrollerId, secondScrollerId);
+
+ //scroll back
+ for(int i = 5; i >= 1; i--) {
+ HtmlElement currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ currentDigital2.click();
+
+ currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ assertEquals("span", currentDigital2.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital2.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // if scroller inside dataTable has switched
+ HtmlElement currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+ assertEquals("span", currentDigital1.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital1.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // check if page has switched
+ assertEquals(i + " page content", getCurrentPageContent(page, i));
+ }
+
+ checkFirstPageButtons(page, firstScrollerId, secondScrollerId);
+ }
+
+ @After
+ public void tearDown() {
+ environment.release();
+ environment = null;
+ }
+
+ private void checkFirstPageButtons(HtmlPage page, String firstScrollerId, String secondScrollerId) throws Exception {
+ HtmlElement fastForward = getFastForwardButton(page, firstScrollerId);
+ HtmlElement last = getLastButton(page, firstScrollerId);
+
+ assertEquals("a", fastForward.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r", fastForward.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ assertEquals("a", last.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r", last.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ fastForward = getFastForwardButton(page, secondScrollerId);
+ last = getFastForwardButton(page, secondScrollerId);
+
+ assertEquals("a", fastForward.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r", fastForward.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ assertEquals("a", last.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r", last.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ //check if left buttons is disabled
+ HtmlElement fastRewind = getFastRewindButton(page, firstScrollerId);
+ HtmlElement first = getFirstButton(page, firstScrollerId);
+
+ assertEquals("span", fastRewind.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l rf-ds-dis", fastRewind.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ assertEquals("span", first.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l rf-ds-dis", first.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ fastRewind = getFastRewindButton(page, secondScrollerId);
+ first = getFirstButton(page, secondScrollerId);
+
+ assertEquals("span", fastRewind.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l rf-ds-dis", fastRewind.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ assertEquals("span", first.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l rf-ds-dis", first.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+ }
+
+ private void checkLastPageButtons(HtmlPage page, String firstScrollerId, String secondScrollerId) throws Exception {
+ //check if right buttons is disabled
+ HtmlElement fastForward = getFastForwardButton(page, firstScrollerId);
+ HtmlElement last = getLastButton(page, firstScrollerId);
+
+ assertEquals("span", fastForward.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r rf-ds-dis", fastForward.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ assertEquals("span", last.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r rf-ds-dis", last.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ fastForward = getFastForwardButton(page, secondScrollerId);
+ last = getFastForwardButton(page, secondScrollerId);
+
+ assertEquals("span", fastForward.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r rf-ds-dis", fastForward.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ assertEquals("span", last.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r rf-ds-dis", last.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ //check if left buttons is enabled
+ HtmlElement fastRewind = getFastRewindButton(page, firstScrollerId);
+ HtmlElement first = getFirstButton(page, firstScrollerId);
+
+ assertEquals("a", fastRewind.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l", fastRewind.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ assertEquals("a", first.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l", first.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ fastRewind = getFastRewindButton(page, secondScrollerId);
+ first = getFirstButton(page, secondScrollerId);
+
+ assertEquals("a", fastRewind.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l", fastRewind.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ assertEquals("a", first.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l", first.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+ }
+
+ private String getCurrentPageContent(HtmlPage page, int i) throws Exception {
+ HtmlElement content = page.getFirstByXPath("//*[@id = 'form:richTable:" + (--i) + ":pageContent']");
+ DomNode text = content.getFirstChild();
+ assertEquals(DomNode.TEXT_NODE, text.getNodeType());
+ return text.getNodeValue();
+ }
+
+ private HtmlElement getFastRewindButton(HtmlPage page, String scrollerId) {
+ return page.getFirstByXPath("//*[@id = 'form:" + scrollerId +"_ds_fr']");
+ }
+
+ private HtmlElement getFirstButton(HtmlPage page, String scrollerId) {
+ return page.getFirstByXPath("//*[@id = 'form:" + scrollerId +"_ds_f']");
+ }
+
+ private HtmlElement getFastForwardButton(HtmlPage page, String scrollerId) {
+ return page.getFirstByXPath("//*[@id = 'form:" + scrollerId +"_ds_ff']");
+ }
+
+ private HtmlElement getLastButton(HtmlPage page, String scrollerId) {
+ return page.getFirstByXPath("//*[@id = 'form:" + scrollerId +"_ds_l']");
+ }
+
+ private HtmlElement getDigitalButton(HtmlPage page, String scrollerId, int i) {
+ return page.getFirstByXPath("//*[@id = 'form:" + scrollerId + "_ds_" + i +"']");
+ }
+
+}
Copied: branches/RFPL-434/ui/iteration/ui/src/test/resources/org/richfaces/renderkit/dataTableTest.xhtml (from rev 19021, trunk/ui/iteration/ui/src/test/resources/org/richfaces/renderkit/dataTableTest.xhtml)
===================================================================
--- branches/RFPL-434/ui/iteration/ui/src/test/resources/org/richfaces/renderkit/dataTableTest.xhtml (rev 0)
+++ branches/RFPL-434/ui/iteration/ui/src/test/resources/org/richfaces/renderkit/dataTableTest.xhtml 2010-08-30 18:45:51 UTC (rev 19023)
@@ -0,0 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:it="http://richfaces.org/iteration">
+<f:view contentType="text/html" />
+
+<h:head>
+ <title>Richfaces List</title>
+</h:head>
+
+<h:body>
+ <h:form id="form">
+
+ <it:dataScroller id="scroller1" for="richTable" page="#{dataScrollerBean.pageNumber}" maxPages="6"></it:dataScroller>
+ <it:dataTable id="richTable" rowKeyVar="rowKey" var="content" value="#{dataScrollerBean.content}" rows="1">
+ <it:column>
+ <h:panelGroup id="pageContent">
+ <h:outputText value="#{content}"/>
+ </h:panelGroup>
+ </it:column>
+ <f:facet name="footer">
+ <it:dataScroller id="scroller2" for="richTable" page="#{dataScrollerBean.pageNumber}" maxPages="6"></it:dataScroller>
+ </f:facet>
+ </it:dataTable>
+ </h:form>
+</h:body>
+</html>
Modified: branches/RFPL-434/ui/iteration/ui/src/test/resources/org/richfaces/renderkit/faces-config.xml
===================================================================
--- branches/RFPL-434/ui/iteration/ui/src/test/resources/org/richfaces/renderkit/faces-config.xml 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/ui/iteration/ui/src/test/resources/org/richfaces/renderkit/faces-config.xml 2010-08-30 18:45:51 UTC (rev 19023)
@@ -10,5 +10,11 @@
<managed-bean-class>org.richfaces.renderkit.DataBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
-
+
+ <managed-bean>
+ <managed-bean-name>dataScrollerBean</managed-bean-name>
+ <managed-bean-class>org.richfaces.renderkit.DataScrollerBean</managed-bean-class>
+ <managed-bean-scope>session</managed-bean-scope>
+ </managed-bean>
+
</faces-config>
\ No newline at end of file
Modified: branches/RFPL-434/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PopupPanelBaseRenderer.java
===================================================================
--- branches/RFPL-434/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PopupPanelBaseRenderer.java 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/ui/output/ui/src/main/java/org/richfaces/renderkit/html/PopupPanelBaseRenderer.java 2010-08-30 18:45:51 UTC (rev 19023)
@@ -155,7 +155,10 @@
result.append("});");
}
- return result.toString();
+ if (result.length() > 0) {
+ return result.toString();
+ }
+ return null;
}
public String getStyleIfTrimmed(UIComponent panel){
Modified: branches/RFPL-434/ui/output/ui/src/main/templates/popupPanel.template.xml
===================================================================
--- branches/RFPL-434/ui/output/ui/src/main/templates/popupPanel.template.xml 2010-08-30 16:51:33 UTC (rev 19022)
+++ branches/RFPL-434/ui/output/ui/src/main/templates/popupPanel.template.xml 2010-08-30 18:45:51 UTC (rev 19023)
@@ -70,8 +70,7 @@
</c:if>
</div>
-</div>
-<cdk:object type="java.lang.String" name="script" value="#{buildScript(facesContext, component)}" />
+ <cdk:object type="java.lang.String" name="script" value="#{buildScript(facesContext, component)}" />
<cdk:object type="java.lang.String" name="showScript" value="#{buildShowScript(facesContext, component)}" />
<script type="text/javascript">
#{script}
@@ -81,7 +80,9 @@
#{showScript}
</script>
</c:if>
+</div>
+
</cc:implementation>
</cdk:root>
\ No newline at end of file
14 years, 3 months
JBoss Rich Faces SVN: r19022 - in branches/RFPL-434/core/commons/src: main/java/org/richfaces/log and 4 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2010-08-30 12:51:33 -0400 (Mon, 30 Aug 2010)
New Revision: 19022
Added:
branches/RFPL-434/core/commons/src/test/java/org/richfaces/log/
branches/RFPL-434/core/commons/src/test/java/org/richfaces/log/JavaLoggerTest.java
branches/RFPL-434/core/commons/src/test/java/org/richfaces/log/LoggerTestMessages.java
branches/RFPL-434/core/commons/src/test/resources/org/richfaces/log/
branches/RFPL-434/core/commons/src/test/resources/org/richfaces/log/Resources.properties
Modified:
branches/RFPL-434/core/commons/src/main/java/org/richfaces/l10n/MessageInterpolator.java
branches/RFPL-434/core/commons/src/main/java/org/richfaces/log/JavaLogger.java
branches/RFPL-434/core/commons/src/main/java/org/richfaces/log/LogFactory.java
branches/RFPL-434/core/commons/src/main/java/org/richfaces/log/Logger.java
Log:
https://jira.jboss.org/browse/RFPL-434
Modified: branches/RFPL-434/core/commons/src/main/java/org/richfaces/l10n/MessageInterpolator.java
===================================================================
--- branches/RFPL-434/core/commons/src/main/java/org/richfaces/l10n/MessageInterpolator.java 2010-08-30 14:56:16 UTC (rev 19021)
+++ branches/RFPL-434/core/commons/src/main/java/org/richfaces/l10n/MessageInterpolator.java 2010-08-30 16:51:33 UTC (rev 19022)
@@ -36,18 +36,11 @@
private BundleLoader bundleLoader;
- private boolean checkApplicationBundle;
-
public MessageInterpolator(BundleLoader bundleLoader) {
- this(bundleLoader, false);
- }
-
- public MessageInterpolator(BundleLoader bundleLoader, boolean checkApplicationBundle) {
super();
this.bundleLoader = bundleLoader;
- this.checkApplicationBundle = checkApplicationBundle;
}
-
+
protected String getMessageKey(Enum<?> key) {
return key.toString();
}
@@ -55,19 +48,6 @@
protected String getPattern(Locale locale, Enum<?> key) {
String messageKey = getMessageKey(key);
- if (checkApplicationBundle) {
- FacesContext facesContext = FacesContext.getCurrentInstance();
-
- if (facesContext != null) {
- try {
- ResourceBundle bundle = bundleLoader.getApplicationBundle(facesContext, key, locale);
- return bundle.getString(messageKey);
- } catch (MissingResourceException e1) {
- //do nothing
- }
- }
- }
-
try {
ResourceBundle bundle = bundleLoader.getBundle(key, locale);
return bundle.getString(messageKey);
Modified: branches/RFPL-434/core/commons/src/main/java/org/richfaces/log/JavaLogger.java
===================================================================
--- branches/RFPL-434/core/commons/src/main/java/org/richfaces/log/JavaLogger.java 2010-08-30 14:56:16 UTC (rev 19021)
+++ branches/RFPL-434/core/commons/src/main/java/org/richfaces/log/JavaLogger.java 2010-08-30 16:51:33 UTC (rev 19022)
@@ -24,12 +24,17 @@
package org.richfaces.log;
import java.util.EnumMap;
+import java.util.Locale;
import java.util.Map;
import java.util.logging.LogRecord;
+import org.richfaces.l10n.BundleLoader;
+import org.richfaces.l10n.InterpolationException;
+import org.richfaces.l10n.MessageInterpolator;
+
/**
* <p class="changed_added_4_0">That logger delegates all calls to the JDK {@link java.util.logging.Logger}</p>
*
@@ -38,11 +43,11 @@
*/
public class JavaLogger implements Logger {
- public static final String RICHFACES_LOG = "org.richfaces.cdk";
+ public static final String RICHFACES_LOG = "org.richfaces";
private static final String CLASS_NAME = JavaLogger.class.getName();
- private static final Map<Level, java.util.logging.Level> LEVELS_MAP =
+ static final Map<Level, java.util.logging.Level> LEVELS_MAP =
new EnumMap<Level, java.util.logging.Level>(Level.class);
static {
@@ -54,8 +59,11 @@
private final java.util.logging.Logger jdkLogger;
+ private MessageInterpolator messageInterpolator;
+
JavaLogger(String category) {
jdkLogger = java.util.logging.Logger.getLogger(category);
+ messageInterpolator = new MessageInterpolator(new BundleLoader());
}
JavaLogger() {
@@ -87,6 +95,14 @@
}
}
+ private String interpolate(Enum<?> messageKey, Object... args) {
+ try {
+ return messageInterpolator.interpolate(Locale.getDefault(), messageKey, args);
+ } catch (InterpolationException e) {
+ return "???" + e.getMessageKey() + "???";
+ }
+ }
+
private LogRecord createRecord(java.util.logging.Level level, CharSequence message, Throwable thrown) {
// millis and thread are filled by the constructor
LogRecord record = new LogRecord(level, message != null ? message.toString() : null);
@@ -107,10 +123,18 @@
log(Level.DEBUG, content);
}
+ public void debug(Enum<?> messageKey, Object... args) {
+ log(Level.DEBUG, messageKey, args);
+ }
+
public void debug(CharSequence content, Throwable thrown) {
log(Level.DEBUG, content, thrown);
}
+ public void debug(Throwable error, Enum<?> messageKey, Object... args) {
+ log(Level.DEBUG, error, messageKey, args);
+ }
+
public void debug(Throwable thrown) {
log(Level.DEBUG, thrown);
}
@@ -123,10 +147,18 @@
log(Level.INFO, content);
}
+ public void info(Enum<?> messageKey, Object... args) {
+ log(Level.INFO, messageKey, args);
+ }
+
public void info(CharSequence content, Throwable thrown) {
log(Level.INFO, content, thrown);
}
+ public void info(Throwable error, Enum<?> messageKey, Object... args) {
+ log(Level.INFO, error, messageKey, args);
+ }
+
public void info(Throwable thrown) {
log(Level.INFO, thrown);
}
@@ -138,11 +170,19 @@
public void warn(CharSequence content) {
log(Level.WARNING, content);
}
+
+ public void warn(Enum<?> messageKey, Object... args) {
+ log(Level.WARNING, messageKey, args);
+ }
public void warn(CharSequence content, Throwable thrown) {
log(Level.WARNING, content, thrown);
}
+ public void warn(Throwable error, Enum<?> messageKey, Object... args) {
+ log(Level.WARNING, error, messageKey, args);
+ }
+
public void warn(Throwable thrown) {
log(Level.WARNING, thrown);
}
@@ -155,10 +195,18 @@
log(Level.ERROR, content);
}
+ public void error(Enum<?> messageKey, Object... args) {
+ log(Level.ERROR, messageKey, args);
+ }
+
public void error(CharSequence content, Throwable thrown) {
log(Level.ERROR, content, thrown);
}
+ public void error(Throwable error, Enum<?> messageKey, Object... args) {
+ log(Level.ERROR, error, messageKey, args);
+ }
+
public void error(Throwable thrown) {
log(Level.ERROR, thrown);
}
@@ -174,6 +222,13 @@
}
}
+ public void log(Level level, Enum<?> messageKey, Object... args) {
+ java.util.logging.Level julLevel = LEVELS_MAP.get(level);
+ if (jdkLogger.isLoggable(julLevel)) {
+ jdkLogger.log(createRecord(julLevel, interpolate(messageKey, args), null));
+ }
+ }
+
public void log(Level level, CharSequence content, Throwable thrown) {
java.util.logging.Level julLevel = LEVELS_MAP.get(level);
if (jdkLogger.isLoggable(julLevel)) {
@@ -181,6 +236,13 @@
}
}
+ public void log(Level level, Throwable thrown, Enum<?> messageKey, Object... args) {
+ java.util.logging.Level julLevel = LEVELS_MAP.get(level);
+ if (jdkLogger.isLoggable(julLevel)) {
+ jdkLogger.log(createRecord(julLevel, interpolate(messageKey, args), thrown));
+ }
+ }
+
public void log(Level level, Throwable thrown) {
java.util.logging.Level julLevel = LEVELS_MAP.get(level);
if (jdkLogger.isLoggable(julLevel)) {
Modified: branches/RFPL-434/core/commons/src/main/java/org/richfaces/log/LogFactory.java
===================================================================
--- branches/RFPL-434/core/commons/src/main/java/org/richfaces/log/LogFactory.java 2010-08-30 14:56:16 UTC (rev 19021)
+++ branches/RFPL-434/core/commons/src/main/java/org/richfaces/log/LogFactory.java 2010-08-30 16:51:33 UTC (rev 19022)
@@ -23,6 +23,8 @@
package org.richfaces.log;
+import org.richfaces.log.Logger.Level;
+
/**
* <p class="changed_added_4_0">This class produces loggers used by whole RichFaces library.</p>
* @author asmirnov(a)exadel.com
Modified: branches/RFPL-434/core/commons/src/main/java/org/richfaces/log/Logger.java
===================================================================
--- branches/RFPL-434/core/commons/src/main/java/org/richfaces/log/Logger.java 2010-08-30 14:56:16 UTC (rev 19021)
+++ branches/RFPL-434/core/commons/src/main/java/org/richfaces/log/Logger.java 2010-08-30 16:51:33 UTC (rev 19022)
@@ -30,7 +30,10 @@
public interface Logger {
public enum Level {
- ERROR, INFO, WARNING, DEBUG
+ DEBUG,
+ INFO,
+ WARNING,
+ ERROR
}
/**
@@ -53,6 +56,15 @@
* <p class="changed_added_4_0">
* </p>
*
+ * @param messageKey
+ * @param args
+ */
+ public void debug(Enum<?> messageKey, Object... args);
+
+ /**
+ * <p class="changed_added_4_0">
+ * </p>
+ *
* @param content
* @param error
*/
@@ -63,13 +75,23 @@
* </p>
*
* @param error
+ * @param messageKey
+ * @param args
*/
+ public void debug(Throwable error, Enum<?> messageKey, Object... args);
+
/**
* <p class="changed_added_4_0">
* </p>
*
* @param error
*/
+ /**
+ * <p class="changed_added_4_0">
+ * </p>
+ *
+ * @param error
+ */
public void debug(Throwable error);
/**
@@ -92,6 +114,15 @@
* <p class="changed_added_4_0">
* </p>
*
+ * @param messageKey
+ * @param args
+ */
+ public void info(Enum<?> messageKey, Object... args);
+
+ /**
+ * <p class="changed_added_4_0">
+ * </p>
+ *
* @param content
* @param error
*/
@@ -102,7 +133,17 @@
* </p>
*
* @param error
+ * @param messageKey
+ * @param args
*/
+ public void info(Throwable error, Enum<?> messageKey, Object... args);
+
+ /**
+ * <p class="changed_added_4_0">
+ * </p>
+ *
+ * @param error
+ */
public void info(Throwable error);
/**
@@ -125,6 +166,15 @@
* <p class="changed_added_4_0">
* </p>
*
+ * @param messageKey
+ * @param args
+ */
+ public void warn(Enum<?> messageKey, Object... args);
+
+ /**
+ * <p class="changed_added_4_0">
+ * </p>
+ *
* @param content
* @param error
*/
@@ -135,7 +185,17 @@
* </p>
*
* @param error
+ * @param messageKey
+ * @param args
*/
+ public void warn(Throwable error, Enum<?> messageKey, Object... args);
+
+ /**
+ * <p class="changed_added_4_0">
+ * </p>
+ *
+ * @param error
+ */
public void warn(Throwable error);
/**
@@ -158,6 +218,15 @@
* <p class="changed_added_4_0">
* </p>
*
+ * @param messageKey
+ * @param args
+ */
+ public void error(Enum<?> messageKey, Object... args);
+
+ /**
+ * <p class="changed_added_4_0">
+ * </p>
+ *
* @param content
* @param error
*/
@@ -168,7 +237,17 @@
* </p>
*
* @param error
+ * @param messageKey
+ * @param args
*/
+ public void error(Throwable error, Enum<?> messageKey, Object... args);
+
+ /**
+ * <p class="changed_added_4_0">
+ * </p>
+ *
+ * @param error
+ */
public void error(Throwable error);
/**
@@ -208,5 +287,25 @@
*/
public void log(Level level, Throwable error);
+ /**
+ * <p class="changed_added_4_0">
+ * </p>
+ *
+ * @param level
+ * @param messageKey
+ * @param args
+ */
+ public void log(Level level, Enum<?> messageKey, Object... args);
+
+ /**
+ * <p class="changed_added_4_0">
+ * </p>
+ *
+ * @param level
+ * @param error
+ * @param messageKey
+ * @param args
+ */
+ public void log(Level level, Throwable error, Enum<?> messageKey, Object... args);
}
Added: branches/RFPL-434/core/commons/src/test/java/org/richfaces/log/JavaLoggerTest.java
===================================================================
--- branches/RFPL-434/core/commons/src/test/java/org/richfaces/log/JavaLoggerTest.java (rev 0)
+++ branches/RFPL-434/core/commons/src/test/java/org/richfaces/log/JavaLoggerTest.java 2010-08-30 16:51:33 UTC (rev 19022)
@@ -0,0 +1,194 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * 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.log;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import java.text.MessageFormat;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.logging.Handler;
+import java.util.logging.LogManager;
+import java.util.logging.LogRecord;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.richfaces.log.Logger.Level;
+
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+public class JavaLoggerTest {
+
+ private static final String ANOTHER_DUMMY_MESSAGE = "another message";
+
+ private static final String DUMMY_MESSAGE = "message";
+
+ private static final String TEST_MESSAGE_PATTERN = "RF-000000 Test message with arguments: {0} and {1}";
+
+ private static final String CHAR_SEQUENCE_THROWABLE_PATTERN = "(CharSequence, Throwable)({0})";
+
+ private static final String CHAR_SEQUENCE_PATTERN = "(CharSequence)({0})";
+
+ /**
+ * @author Nick Belaevski
+ *
+ */
+ private final class TrackingHandler extends Handler {
+ @Override
+ public void publish(LogRecord record) {
+ publishedRecords.add(record);
+ }
+
+ @Override
+ public void flush() {
+ }
+
+ @Override
+ public void close() throws SecurityException {
+ }
+ }
+
+ private java.util.logging.Logger wrappedLogger;
+
+ private JavaLogger logger;
+
+ private List<LogRecord> publishedRecords;
+
+ @Before
+ public void setUp() throws Exception {
+ LogManager.getLogManager().reset();
+ publishedRecords = new ArrayList<LogRecord>();
+
+ wrappedLogger = java.util.logging.Logger.getLogger("org.richfaces.JavaLoggerTest");
+ wrappedLogger.addHandler(new TrackingHandler());
+
+ logger = new JavaLogger(wrappedLogger.getName());
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ publishedRecords = null;
+
+ wrappedLogger = null;
+ logger = null;
+ }
+
+ private void verifyLogRecord(LogRecord logRecord, Level level, String message, Class<? extends Throwable> thrownClass, String thrownMessage) {
+ assertEquals(JavaLogger.LEVELS_MAP.get(level), logRecord.getLevel());
+ assertEquals(message, logRecord.getMessage());
+
+ if (thrownClass != null && thrownMessage != null) {
+ assertTrue(thrownClass.isInstance(logRecord.getThrown()));
+ assertEquals(thrownMessage, logRecord.getThrown().getMessage());
+ } else {
+ assertNull(logRecord.getThrown());
+ }
+ }
+
+ private void verifyEnabledMethods(Level loggerLevel) throws Exception {
+ String[] levels = {"Debug", "Info", "Warn", "Error"};
+
+ for (Level level : Level.values()) {
+ boolean enabledValue = (Boolean) Logger.class.getMethod(MessageFormat.format("is{0}Enabled", levels[level.ordinal()])).
+ invoke(logger);
+
+ if (level.compareTo(loggerLevel) < 0) {
+ assertFalse(loggerLevel.toString(), enabledValue);
+ } else {
+ assertTrue(loggerLevel.toString(), enabledValue);
+ }
+ }
+ }
+
+ private void verifyLoggingLevels(Level loggerLevel) {
+ for (Level messageLevel : Level.values()) {
+ logger.log(messageLevel, "test");
+
+ if (messageLevel.compareTo(loggerLevel) < 0) {
+ assertTrue(publishedRecords.isEmpty());
+ } else {
+ assertTrue(publishedRecords.size() == 1);
+ publishedRecords.clear();
+ }
+ }
+ }
+
+ @Test
+ public void testLogging() throws Exception {
+ wrappedLogger.setLevel(java.util.logging.Level.ALL);
+
+ String[] levels = {"debug", "info", "warn", "error"};
+
+ for (String levelName : levels) {
+ Logger.class.getMethod(levelName, CharSequence.class).invoke(logger, MessageFormat.format(CHAR_SEQUENCE_PATTERN, levelName));
+ Logger.class.getMethod(levelName, CharSequence.class, Throwable.class).invoke(logger,
+ MessageFormat.format(CHAR_SEQUENCE_THROWABLE_PATTERN, levelName), new NullPointerException(levelName));
+
+ Logger.class.getMethod(levelName, Enum.class, Object[].class).invoke(logger,
+ LoggerTestMessages.TEST_MESSAGE, new Object[] {levelName, DUMMY_MESSAGE});
+
+ Logger.class.getMethod(levelName, Throwable.class).invoke(logger, new IllegalArgumentException(levelName));
+
+ Logger.class.getMethod(levelName, Throwable.class, Enum.class, Object[].class).invoke(logger,
+ new UnsupportedOperationException(levelName), LoggerTestMessages.TEST_MESSAGE, new Object[] {levelName,
+ ANOTHER_DUMMY_MESSAGE});
+ }
+
+ Iterator<LogRecord> iterator = publishedRecords.iterator();
+
+ for (Level level: Level.values()) {
+ String levelName = levels[level.ordinal()];
+
+ verifyLogRecord(iterator.next(), level, MessageFormat.format(CHAR_SEQUENCE_PATTERN, levelName), null, null);
+ verifyLogRecord(iterator.next(), level, MessageFormat.format(CHAR_SEQUENCE_THROWABLE_PATTERN, levelName),
+ NullPointerException.class, levelName);
+
+ verifyLogRecord(iterator.next(), level, MessageFormat.format(TEST_MESSAGE_PATTERN,
+ levelName, DUMMY_MESSAGE), null, null);
+
+ verifyLogRecord(iterator.next(), level, null, IllegalArgumentException.class, levelName);
+
+ verifyLogRecord(iterator.next(), level, MessageFormat.format(TEST_MESSAGE_PATTERN,
+ levelName, ANOTHER_DUMMY_MESSAGE), UnsupportedOperationException.class, levelName);
+
+ }
+ }
+
+ @Test
+ public void testLevels() throws Exception {
+ for (Level loggerLevel : Level.values()) {
+ wrappedLogger.setLevel(JavaLogger.LEVELS_MAP.get(loggerLevel));
+
+ verifyEnabledMethods(loggerLevel);
+ verifyLoggingLevels(loggerLevel);
+ }
+ }
+
+}
Added: branches/RFPL-434/core/commons/src/test/java/org/richfaces/log/LoggerTestMessages.java
===================================================================
--- branches/RFPL-434/core/commons/src/test/java/org/richfaces/log/LoggerTestMessages.java (rev 0)
+++ branches/RFPL-434/core/commons/src/test/java/org/richfaces/log/LoggerTestMessages.java 2010-08-30 16:51:33 UTC (rev 19022)
@@ -0,0 +1,46 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * 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.log;
+
+import org.richfaces.l10n.MessageBundle;
+
+/**
+ * @author Nick Belaevski
+ *
+ */
+@MessageBundle(baseName = "org.richfaces.log.Resources")
+public enum LoggerTestMessages {
+
+ TEST_MESSAGE("org.richfaces.TestMessage");
+
+
+ private String s;
+
+ private LoggerTestMessages(String s) {
+ this.s = s;
+ }
+
+ @Override
+ public String toString() {
+ return s;
+ }
+}
Added: branches/RFPL-434/core/commons/src/test/resources/org/richfaces/log/Resources.properties
===================================================================
--- branches/RFPL-434/core/commons/src/test/resources/org/richfaces/log/Resources.properties (rev 0)
+++ branches/RFPL-434/core/commons/src/test/resources/org/richfaces/log/Resources.properties 2010-08-30 16:51:33 UTC (rev 19022)
@@ -0,0 +1 @@
+org.richfaces.TestMessage=RF-000000 Test message with arguments: {0} and {1}
\ No newline at end of file
14 years, 3 months
JBoss Rich Faces SVN: r19021 - in trunk: examples/core-demo/src/main/webapp and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: pyaschenko
Date: 2010-08-30 10:56:16 -0400 (Mon, 30 Aug 2010)
New Revision: 19021
Modified:
trunk/core/impl/src/main/resources/META-INF/resources/richfaces-queue.js
trunk/examples/core-demo/src/main/webapp/button.xhtml
Log:
https://jira.jboss.org/browse/RF-9146
Modified: trunk/core/impl/src/main/resources/META-INF/resources/richfaces-queue.js
===================================================================
--- trunk/core/impl/src/main/resources/META-INF/resources/richfaces-queue.js 2010-08-30 14:37:46 UTC (rev 19020)
+++ trunk/core/impl/src/main/resources/META-INF/resources/richfaces-queue.js 2010-08-30 14:56:16 UTC (rev 19021)
@@ -105,6 +105,10 @@
}
}
}
+
+ if (typeof this.queueOptions.requestGroupId == "undefined") {
+ this.queueOptions.requestGroupId = typeof this.source == "string" ? this.source : this.source.id;
+ }
// copy of event should be created otherwise IE will fail
this.event = $.extend({}, event);
Modified: trunk/examples/core-demo/src/main/webapp/button.xhtml
===================================================================
--- trunk/examples/core-demo/src/main/webapp/button.xhtml 2010-08-30 14:37:46 UTC (rev 19020)
+++ trunk/examples/core-demo/src/main/webapp/button.xhtml 2010-08-30 14:56:16 UTC (rev 19021)
@@ -23,11 +23,28 @@
<f:ajax event="action" execute="@form" render=":out" listener="#{commandBean.listener}" />
</a4j:commandButton>
</h:form>
- <br />
+ <br />
<h:panelGroup id="out">
<h:outputText value="#{commandBean.name}" />
<h:outputText value="!" rendered="#{not empty commandBean.name}" />
</h:panelGroup>
+ <br /><hr />
+ RF-9146: request grouping id not set:
+ <br />
+ <h:panelGroup id="out1">
+ <h:outputText value="#{commandBean.name}" />
+ </h:panelGroup>
+ <h:form>
+ <a4j:queue requestDelay="5000"/>
+ <a4j:commandButton value="Update 1" render="out1">
+ <a4j:param name="v1" value="Update 1" assignTo="#{commandBean.name}" />
+ </a4j:commandButton>
+ <a4j:commandButton value="Update 2" render="out1">
+ <a4j:param name="v1" value="Update 2" assignTo="#{commandBean.name}" />
+ </a4j:commandButton>
+ <hr />
+ <a4j:log level="debug" style="border: solid red 1px" styleClass="log" mode="popup" />
+ </h:form>
</h:body>
</f:view>
</html>
\ No newline at end of file
14 years, 3 months
JBoss Rich Faces SVN: r19020 - modules/tests/metamer/trunk/application/src/main/webapp/components/a4jAttachQueue.
by richfaces-svn-commits@lists.jboss.org
Author: ppitonak(a)redhat.com
Date: 2010-08-30 10:37:46 -0400 (Mon, 30 Aug 2010)
New Revision: 19020
Modified:
modules/tests/metamer/trunk/application/src/main/webapp/components/a4jAttachQueue/wrapped.xhtml
Log:
* wrong EL expressions fixed
Modified: modules/tests/metamer/trunk/application/src/main/webapp/components/a4jAttachQueue/wrapped.xhtml
===================================================================
--- modules/tests/metamer/trunk/application/src/main/webapp/components/a4jAttachQueue/wrapped.xhtml 2010-08-30 14:26:50 UTC (rev 19019)
+++ modules/tests/metamer/trunk/application/src/main/webapp/components/a4jAttachQueue/wrapped.xhtml 2010-08-30 14:37:46 UTC (rev 19020)
@@ -67,15 +67,15 @@
<a4j:ajax event="keyup" render="output1, output2" execute="@form" onbegin="addRequest();"
oncomplete="printCounts()" onbeforedomupdate="addUpdate()">
<a4j:attachQueue id="a4jAttachQueue"
- ignoreDupResponses="#{a4jAttachQueueBean.attributes1['ignoreDupResponses'].value}"
- name="#{a4jAttachQueueBean.attributes1['name'].value}"
- onrequestdequeue="#{a4jAttachQueueBean.attributes1['onrequestdequeue'].value}"
- onrequestqueue="#{a4jAttachQueueBean.attributes1['onrequestqueue'].value}"
- queueId="#{a4jAttachQueueBean.attributes1['queueId'].value}"
- rendered="#{a4jAttachQueueBean.attributes1['rendered'].value}"
- requestDelay="#{a4jAttachQueueBean.attributes1['requestDelay'].value}"
- requestGroupingId="#{a4jAttachQueueBean.attributes1['requestGroupingId'].value}"
- timeout="#{a4jAttachQueueBean.attributes1['timeout'].value}"/>
+ ignoreDupResponses="#{a4jAttachQueueBean.attributes['ignoreDupResponses'].value}"
+ name="#{a4jAttachQueueBean.attributes['name'].value}"
+ onrequestdequeue="#{a4jAttachQueueBean.attributes['onrequestdequeue'].value}"
+ onrequestqueue="#{a4jAttachQueueBean.attributes['onrequestqueue'].value}"
+ queueId="#{a4jAttachQueueBean.attributes['queueId'].value}"
+ rendered="#{a4jAttachQueueBean.attributes['rendered'].value}"
+ requestDelay="#{a4jAttachQueueBean.attributes['requestDelay'].value}"
+ requestGroupingId="#{a4jAttachQueueBean.attributes['requestGroupingId'].value}"
+ timeout="#{a4jAttachQueueBean.attributes['timeout'].value}"/>
<h:inputText id="input1" value="#{a4jAttachQueueBean.text1}" onkeyup="addEvent();"/>
<h:inputText id="input2" value="#{a4jAttachQueueBean.text2}" onkeyup="addEvent();"/>
@@ -97,7 +97,7 @@
</ui:define>
<ui:define name="outOfTemplateAfter">
- <metamer:attributes value="#{a4jAttachQueueBean.attributes1}" id="attributes" />
+ <metamer:attributes value="#{a4jAttachQueueBean.attributes}" id="attributes" />
</ui:define>
</ui:composition>
14 years, 3 months
JBoss Rich Faces SVN: r19019 - in trunk/ui/input/ui/src/test: resources/org/richfaces/renderkit and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2010-08-30 10:26:50 -0400 (Mon, 30 Aug 2010)
New Revision: 19019
Added:
trunk/ui/input/ui/src/test/resources/org/richfaces/renderkit/inplaceInputTest.xhtml
Removed:
trunk/ui/input/ui/src/test/resources/org/richfaces/renderkit/rendererTest.xhtml
Modified:
trunk/ui/input/ui/src/test/java/org/richfaces/renderkit/InplaceInputRendererTest.java
Log:
test refactoring
Modified: trunk/ui/input/ui/src/test/java/org/richfaces/renderkit/InplaceInputRendererTest.java
===================================================================
--- trunk/ui/input/ui/src/test/java/org/richfaces/renderkit/InplaceInputRendererTest.java 2010-08-30 14:23:21 UTC (rev 19018)
+++ trunk/ui/input/ui/src/test/java/org/richfaces/renderkit/InplaceInputRendererTest.java 2010-08-30 14:26:50 UTC (rev 19019)
@@ -31,7 +31,6 @@
import org.jboss.test.faces.htmlunit.HtmlUnitEnvironment;
import org.junit.After;
import org.junit.Before;
-import org.junit.Ignore;
import org.junit.Test;
import com.gargoylesoftware.htmlunit.html.DomNode;
@@ -52,17 +51,14 @@
environment = new HtmlUnitEnvironment();
environment.withWebRoot(new File("src/test/resources"));
environment.withResource("/WEB-INF/faces-config.xml", "org/richfaces/renderkit/faces-config.xml");
- environment.withResource("/test.xhtml", "org/richfaces/renderkit/rendererTest.xhtml");
+ environment.withResource("/test.xhtml", "org/richfaces/renderkit/inplaceInputTest.xhtml");
environment.start();
}
@Test
- @Ignore("Updates to RF-9132 broke this test - it needs to be fixed, but is blocking M2 release")
public void testRenderDefaultState() throws Exception {
HtmlPage page = environment.getPage("/test.jsf");
- List<?> nodes = page.getByXPath("//*[@id = 'form:input_default']");
- assertEquals(1, nodes.size());
- HtmlElement span = (HtmlElement) nodes.get(0);
+ HtmlElement span = page.getFirstByXPath("//*[@id = 'form:input_default']");
assertEquals("span", span.getNodeName());
assertEquals("rf-ii-d-s", span.getAttribute(HTML.CLASS_ATTRIBUTE));
@@ -72,10 +68,7 @@
DomNode text = label.getFirstChild();
assertEquals(DomNode.TEXT_NODE, text.getNodeType());
- List<?> editNodes = page.getByXPath("//*[@id = 'form:input_default:edit']");
- assertEquals(1, editNodes.size());
- HtmlElement edit = (HtmlElement) editNodes.get(0);
-
+ HtmlElement edit = page.getFirstByXPath("//*[@id = 'form:input_default:edit']");
assertEquals("span", edit.getNodeName());
assertEquals("rf-ii-e-s rf-ii-none", edit.getAttribute(HTML.CLASS_ATTRIBUTE));
@@ -93,9 +86,7 @@
HtmlPage page = environment.getPage("/test.jsf");
- List<?> nodes = page.getByXPath("//*[@id = 'form:input_edit']");
- assertEquals(1, nodes.size());
- HtmlElement span = (HtmlElement) nodes.get(0);
+ HtmlElement span = page.getFirstByXPath("//*[@id = 'form:input_edit']");
assertEquals("span", span.getNodeName());
assertEquals("rf-ii-d-s", span.getAttribute(HTML.CLASS_ATTRIBUTE));
@@ -105,9 +96,7 @@
DomNode text = label.getFirstChild();
assertEquals(DomNode.TEXT_NODE, text.getNodeType());
- List<?> editNodes = page.getByXPath("//*[@id = 'form:input_edit:edit']");
- assertEquals(1, editNodes.size());
- HtmlElement edit = (HtmlElement) editNodes.get(0);
+ HtmlElement edit = page.getFirstByXPath("//*[@id = 'form:input_edit:edit']");
assertEquals("span", edit.getNodeName());
assertEquals("rf-ii-e-s", edit.getAttribute(HTML.CLASS_ATTRIBUTE));
@@ -116,24 +105,15 @@
assertEquals("rf-ii-f", input.getAttribute(HTML.CLASS_ATTRIBUTE));
assertEquals(text.getNodeValue(), input.getAttribute(HTML.VALUE_ATTRIBUTE));
- List<?> buttonNodes = page.getByXPath("//*[@id = 'form:input_edit:btn']");
- assertEquals(1, buttonNodes.size());
-
- HtmlElement button = (HtmlElement) buttonNodes.get(0);
+ HtmlElement button = page.getFirstByXPath("//*[@id = 'form:input_edit:btn']");
assertEquals("span", button.getNodeName());
- List<?> okButtonNodes = page.getByXPath("//*[@id = 'form:input_edit:okbtn']");
- assertEquals(1, okButtonNodes.size());
-
- HtmlElement okButton = (HtmlElement) okButtonNodes.get(0);
+ HtmlElement okButton = page.getFirstByXPath("//*[@id = 'form:input_edit:okbtn']");
assertEquals("input", okButton.getNodeName());
assertEquals("rf-ii-btn", okButton.getAttribute(HTML.CLASS_ATTRIBUTE));
assertEquals("image", okButton.getAttribute(HTML.TYPE_ATTR));
- List<?> cancelButtonNodes = page.getByXPath("//*[@id = 'form:input_edit:cancelbtn']");
- assertEquals(1, cancelButtonNodes.size());
-
- HtmlElement cancelButton = (HtmlElement) cancelButtonNodes.get(0);
+ HtmlElement cancelButton = page.getFirstByXPath("//*[@id = 'form:input_edit:cancelbtn']");
assertEquals("input", cancelButton.getNodeName());
assertEquals("rf-ii-btn", cancelButton.getAttribute(HTML.CLASS_ATTRIBUTE));
assertEquals("image", cancelButton.getAttribute(HTML.TYPE_ATTR));
@@ -144,97 +124,62 @@
public void testEdit() throws Exception {
HtmlPage page = environment.getPage("/test.jsf");
edit(page, "input_default", "Another Test String");
-
blur(page);
-
- List<?> labelNodes = page.getByXPath("//*[@id = 'form:input_default:label']/text()");
- assertEquals(1, labelNodes.size());
- DomText text = (DomText) labelNodes.get(0);
+ DomText text = page.getFirstByXPath("//*[@id = 'form:input_default:label']/text()");
assertEquals("Another Test String", text.getTextContent());
-
- List<?>nodes = page.getByXPath("//*[@id = 'form:input_default']");
- assertEquals(1, nodes.size());
- HtmlElement span = (HtmlElement) nodes.get(0);
+ HtmlElement span = page.getFirstByXPath("//*[@id = 'form:input_default']");
assertEquals("rf-ii-d-s rf-ii-c-s", span.getAttribute(HTML.CLASS_ATTRIBUTE));
-
}
private void blur(HtmlPage page) throws Exception {
- List<?> panelNodes = page.getByXPath("//*[@id = 'form:panel']");
- assertEquals(1, panelNodes.size());
- HtmlElement panel = (HtmlElement) panelNodes.get(0);
+ HtmlElement panel = page.getFirstByXPath("//*[@id = 'form:panel']");
panel.click();
}
private void typeNewValue(HtmlPage page, String inplaceInputId, String value) throws Exception {
- List<?> inputNodes = page.getByXPath("//*[@id = 'form:" + inplaceInputId + ":input']");
- assertEquals(1, inputNodes.size());
- HtmlElement input = (HtmlElement) inputNodes.get(0);
+ HtmlElement input = page.getFirstByXPath("//*[@id = 'form:" + inplaceInputId + ":input']");
input.setAttribute(HTML.VALUE_ATTRIBUTE, "");
input.type(value);
}
private void edit(HtmlPage page, String inplaceInputId, String value) throws Exception {
- List<?> nodes = page.getByXPath("//*[@id = 'form:" + inplaceInputId + "']");
- assertEquals(1, nodes.size());
- HtmlElement span = (HtmlElement) nodes.get(0);
+ HtmlElement span = page.getFirstByXPath("//*[@id = 'form:" + inplaceInputId + "']");
span.click();
-
- List<?> editNodes = page.getByXPath("//*[@id = 'form:" + inplaceInputId + ":edit']");
- assertEquals(1, editNodes.size());
- HtmlElement edit = (HtmlElement) editNodes.get(0);
+ HtmlElement edit = page.getFirstByXPath("//*[@id = 'form:" + inplaceInputId + ":edit']");
assertEquals("rf-ii-e-s", edit.getAttribute(HTML.CLASS_ATTRIBUTE));
-
typeNewValue(page, inplaceInputId, value);
}
@Test
public void testEditWithControls() throws Exception {
HtmlPage page = environment.getPage("/test.jsf");
-
edit(page, "input_controls", "Another Test String");
-
- List<?> cancelNodes = page.getByXPath("//*[@id = 'form:input_controls:cancelbtn']");
- assertEquals(1, cancelNodes.size());
- HtmlElement cancel = (HtmlElement) cancelNodes.get(0);
-
+
+ HtmlElement cancel = page.getFirstByXPath("//*[@id = 'form:input_controls:cancelbtn']");
cancel.mouseDown();
- List<?> labelNodes = page.getByXPath("//*[@id = 'form:input_controls:label']/text()");
- assertEquals(1, labelNodes.size());
- DomText text = (DomText) labelNodes.get(0);
+ DomText text = page.getFirstByXPath("//*[@id = 'form:input_controls:label']/text()");
assertEquals("Test String", text.getTextContent());
- List<?> nodes = page.getByXPath("//*[@id = 'form:input_controls']");
- assertEquals(1, nodes.size());
- HtmlElement span = (HtmlElement) nodes.get(0);
+ HtmlElement span = page.getFirstByXPath("//*[@id = 'form:input_controls']");
assertEquals("rf-ii-d-s", span.getAttribute(HTML.CLASS_ATTRIBUTE));
edit(page, "input_controls", "Another Test String");
- List<?> okNodes = page.getByXPath("//*[@id = 'form:input_controls:okbtn']");
- assertEquals(1, okNodes.size());
- HtmlElement ok = (HtmlElement) okNodes.get(0);
-
+ HtmlElement ok = page.getFirstByXPath("//*[@id = 'form:input_controls:okbtn']");
ok.mouseDown();
- labelNodes = page.getByXPath("//*[@id = 'form:input_controls:label']/text()");
- assertEquals(1, labelNodes.size());
- text = (DomText) labelNodes.get(0);
+ text = page.getFirstByXPath("//*[@id = 'form:input_controls:label']/text()");
assertEquals("Another Test String", text.getTextContent());
- nodes = page.getByXPath("//*[@id = 'form:input_controls']");
- assertEquals(1, nodes.size());
- span = (HtmlElement) nodes.get(0);
+ span = page.getFirstByXPath("//*[@id = 'form:input_controls']");
assertEquals("rf-ii-d-s rf-ii-c-s", span.getAttribute(HTML.CLASS_ATTRIBUTE));
edit(page, "input_controls", "Test String");
blur(page);
- labelNodes = page.getByXPath("//*[@id = 'form:input_controls:label']/text()");
- assertEquals(1, labelNodes.size());
- text = (DomText) labelNodes.get(0);
+ text = page.getFirstByXPath("//*[@id = 'form:input_controls:label']/text()");
assertEquals("Test String", text.getTextContent());
}
Added: trunk/ui/input/ui/src/test/resources/org/richfaces/renderkit/inplaceInputTest.xhtml
===================================================================
--- trunk/ui/input/ui/src/test/resources/org/richfaces/renderkit/inplaceInputTest.xhtml (rev 0)
+++ trunk/ui/input/ui/src/test/resources/org/richfaces/renderkit/inplaceInputTest.xhtml 2010-08-30 14:26:50 UTC (rev 19019)
@@ -0,0 +1,26 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:in="http://richfaces.org/input">
+<f:view contentType="text/html" />
+
+<h:head>
+ <title>Richfaces InplaceInput</title>
+</h:head>
+
+<h:body>
+ <h:form id="form">
+ <in:inplaceInput id="input_default" value="#{dataBean.value}"/>
+
+ <in:inplaceInput id="input_controls" showControls="true" value="#{dataBean.value}"/>
+
+ <in:inplaceInput id="input_edit" state="edit" showControls="true" value="#{dataBean.value}"/>
+
+ <h:panelGroup id="panel">
+ <!-- click here for blur -->
+ </h:panelGroup>
+ </h:form>
+</h:body>
+</html>
Deleted: trunk/ui/input/ui/src/test/resources/org/richfaces/renderkit/rendererTest.xhtml
===================================================================
--- trunk/ui/input/ui/src/test/resources/org/richfaces/renderkit/rendererTest.xhtml 2010-08-30 14:23:21 UTC (rev 19018)
+++ trunk/ui/input/ui/src/test/resources/org/richfaces/renderkit/rendererTest.xhtml 2010-08-30 14:26:50 UTC (rev 19019)
@@ -1,26 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:h="http://java.sun.com/jsf/html"
- xmlns:f="http://java.sun.com/jsf/core"
- xmlns:ui="http://java.sun.com/jsf/facelets"
- xmlns:in="http://richfaces.org/input">
-<f:view contentType="text/html" />
-
-<h:head>
- <title>Richfaces InplaceInput</title>
-</h:head>
-
-<h:body>
- <h:form id="form">
- <in:inplaceInput id="input_default" value="#{dataBean.value}"/>
-
- <in:inplaceInput id="input_controls" showControls="true" value="#{dataBean.value}"/>
-
- <in:inplaceInput id="input_edit" state="edit" showControls="true" value="#{dataBean.value}"/>
-
- <h:panelGroup id="panel">
- <!-- click here for blur -->
- </h:panelGroup>
- </h:form>
-</h:body>
-</html>
14 years, 3 months
JBoss Rich Faces SVN: r19018 - trunk/core/impl/src/main/java/org/richfaces/component.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2010-08-30 10:23:21 -0400 (Mon, 30 Aug 2010)
New Revision: 19018
Modified:
trunk/core/impl/src/main/java/org/richfaces/component/UISequence.java
Log:
https://jira.jboss.org/browse/RF-9144
Modified: trunk/core/impl/src/main/java/org/richfaces/component/UISequence.java
===================================================================
--- trunk/core/impl/src/main/java/org/richfaces/component/UISequence.java 2010-08-30 14:15:02 UTC (rev 19017)
+++ trunk/core/impl/src/main/java/org/richfaces/component/UISequence.java 2010-08-30 14:23:21 UTC (rev 19018)
@@ -277,7 +277,7 @@
int rowIndex = getRowIndex();
int rows = getRows();
- if (rows > 0) {
+ if (rows > 1) {
return rowIndex % rows;
}
14 years, 3 months
JBoss Rich Faces SVN: r19017 - in trunk/ui/iteration/ui/src/test: resources/org/richfaces/renderkit and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2010-08-30 10:15:02 -0400 (Mon, 30 Aug 2010)
New Revision: 19017
Added:
trunk/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataScrollerBean.java
trunk/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataScrollerRenderTest.java
trunk/ui/iteration/ui/src/test/resources/org/richfaces/renderkit/dataTableTest.xhtml
Modified:
trunk/ui/iteration/ui/src/test/resources/org/richfaces/renderkit/faces-config.xml
Log:
add datacroller test
Added: trunk/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataScrollerBean.java
===================================================================
--- trunk/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataScrollerBean.java (rev 0)
+++ trunk/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataScrollerBean.java 2010-08-30 14:15:02 UTC (rev 19017)
@@ -0,0 +1,38 @@
+package org.richfaces.renderkit;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class DataScrollerBean {
+
+ private List<String> content;
+
+ private int pageNumber = 1;
+
+
+ public DataScrollerBean() {
+ content = new ArrayList<String>();
+ content.add("1 page content");
+ content.add("2 page content");
+ content.add("3 page content");
+ content.add("4 page content");
+ content.add("5 page content");
+ content.add("6 page content");
+ }
+
+ public List<String> getContent() {
+ return content;
+ }
+
+ public void setContent(List<String> content) {
+ this.content = content;
+ }
+
+ public int getPageNumber() {
+ return pageNumber;
+ }
+
+ public void setPageNumber(int pageNumber) {
+ this.pageNumber = pageNumber;
+ }
+}
Added: trunk/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataScrollerRenderTest.java
===================================================================
--- trunk/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataScrollerRenderTest.java (rev 0)
+++ trunk/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataScrollerRenderTest.java 2010-08-30 14:15:02 UTC (rev 19017)
@@ -0,0 +1,440 @@
+package org.richfaces.renderkit;
+
+import static org.junit.Assert.assertEquals;
+
+import java.io.File;
+import java.util.List;
+
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
+import org.jboss.test.faces.htmlunit.HtmlUnitEnvironment;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.gargoylesoftware.htmlunit.html.DomNode;
+import com.gargoylesoftware.htmlunit.html.HtmlElement;
+import com.gargoylesoftware.htmlunit.html.HtmlPage;
+
+
+
+/**
+ * @author Anton Belevich
+ *
+ */
+public class DataScrollerRenderTest {
+
+ private HtmlUnitEnvironment environment;
+
+ @Before
+ public void setUp() {
+ environment = new HtmlUnitEnvironment();
+ environment.withWebRoot(new File("src/test/resources"));
+ environment.withResource("/WEB-INF/faces-config.xml", "org/richfaces/renderkit/faces-config.xml");
+ environment.withResource("/test.xhtml", "org/richfaces/renderkit/dataTableTest.xhtml");
+ environment.start();
+ }
+
+ @Test
+ public void testEncoding() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+
+ String scrollerId = "scroller1";
+ //first scroll
+ List<?> nodes = page.getByXPath("//*[@id = 'form:scroller1']");
+
+ assertEquals(1, nodes.size());
+ HtmlElement span = (HtmlElement) nodes.get(0);
+ assertEquals("span", span.getNodeName());
+ assertEquals("rf-ds", span.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // first/fastRewind buttons with arrows
+ HtmlElement first = getFirstButton(page, scrollerId);
+ assertEquals("span", first.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l rf-ds-dis", first.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ HtmlElement fastRewind = getFastRewindButton(page, scrollerId);
+ assertEquals("span", fastRewind.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l rf-ds-dis", fastRewind.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // currently selected digital button
+ HtmlElement dc = getDigitalButton(page, scrollerId, 1);
+ assertEquals("span", dc.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", dc.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // digital buttons
+ HtmlElement d2 = getDigitalButton(page, scrollerId, 2);
+ assertEquals("a", d2.getNodeName());
+ assertEquals("rf-ds-dtl", d2.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+ assertEquals("javascript:void(0);", d2.getAttribute(HTML.HREF_ATTR));
+
+ HtmlElement d3 = getDigitalButton(page, scrollerId, 3);
+ assertEquals("a", d3.getNodeName());
+ assertEquals("rf-ds-dtl", d3.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+ assertEquals("javascript:void(0);", d3.getAttribute(HTML.HREF_ATTR));
+
+ HtmlElement d4 = getDigitalButton(page, scrollerId, 4);
+ assertEquals("a", d4.getNodeName());
+ assertEquals("rf-ds-dtl", d4.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+ assertEquals("javascript:void(0);", d4.getAttribute(HTML.HREF_ATTR));
+
+ HtmlElement d5 = getDigitalButton(page, scrollerId, 5);
+ assertEquals("a", d5.getNodeName());
+ assertEquals("rf-ds-dtl", d5.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+ assertEquals("javascript:void(0);", d5.getAttribute(HTML.HREF_ATTR));
+
+ HtmlElement d6 = getDigitalButton(page, scrollerId, 6);
+ assertEquals("a", d6.getNodeName());
+ assertEquals("rf-ds-dtl", d6.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+ assertEquals("javascript:void(0);", d6.getAttribute(HTML.HREF_ATTR));
+
+ // last/fastForward buttons with arrows
+ HtmlElement fastForward = getFastForwardButton(page, scrollerId);
+ assertEquals("a", fastForward.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r", fastForward.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+ assertEquals("javascript:void(0);", fastForward.getAttribute(HTML.HREF_ATTR));
+
+ HtmlElement last = getLastButton(page, scrollerId);
+ assertEquals("a", last.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r", last.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+ assertEquals("javascript:void(0);", last.getAttribute(HTML.HREF_ATTR));
+ }
+
+ @Test
+ public void testOutDataScrollerFirstLastButtons() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+ String firstScrollerId = "scroller1";
+
+ //dataScroller inside dataTable 'footer' facet
+ String secondScrollerId = "richTable:scroller2";
+
+ HtmlElement last = getLastButton(page, firstScrollerId);
+ last.click();
+ checkLastPageButtons(page, firstScrollerId, secondScrollerId);
+
+ HtmlElement first = getFirstButton(page, firstScrollerId);
+ first.click();
+ checkFirstPageButtons(page, firstScrollerId, secondScrollerId);
+ }
+
+ @Test
+ public void testInnerDataScrollerFirstLastButtons() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+ String firstScrollerId = "scroller1";
+
+ //dataScroller inside dataTable 'footer' facet
+ String secondScrollerId = "richTable:scroller2";
+
+ HtmlElement last = getLastButton(page, secondScrollerId);
+ last.click();
+ checkLastPageButtons(page, firstScrollerId, secondScrollerId);
+
+ HtmlElement first = getFirstButton(page, secondScrollerId);
+ first.click();
+ checkFirstPageButtons(page, firstScrollerId, secondScrollerId);
+ }
+
+ @Test
+ public void testOutDataScrollerFastButtons() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+ String firstScrollerId = "scroller1";
+
+ //dataScroller inside dataTable 'footer' facet
+ String secondScrollerId = "richTable:scroller2";
+
+ for(int i = 2; i <= 6; i++) {
+ HtmlElement ff = getFastForwardButton(page, firstScrollerId);
+
+ ff.click();
+
+ HtmlElement currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+ assertEquals("span", currentDigital1.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital1.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // if scroller inside dataTable has switched
+ HtmlElement currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ assertEquals("span", currentDigital2.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital2.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // check if page has switched
+ assertEquals(i + " page content", getCurrentPageContent(page, i));
+ }
+
+ checkLastPageButtons(page, firstScrollerId, secondScrollerId);
+
+ //scroll back
+ for(int i = 5; i >= 1; i--) {
+ HtmlElement fr = getFastRewindButton(page, firstScrollerId);
+ fr.click();
+ HtmlElement currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+
+ assertEquals("span", currentDigital1.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital1.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // if scroller inside dataTable has switched
+ HtmlElement currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ assertEquals("span", currentDigital2.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital2.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // check if page has switched
+ assertEquals(i + " page content", getCurrentPageContent(page, i));
+ }
+
+ checkFirstPageButtons(page, firstScrollerId, secondScrollerId);
+ }
+
+ @Test
+ public void testInnerDataScrollerFastButtons() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+ String firstScrollerId = "scroller1";
+
+ //dataScroller inside dataTable 'footer' facet
+ String secondScrollerId = "richTable:scroller2";
+
+ for(int i = 2; i <= 6; i++) {
+ HtmlElement ff = getFastForwardButton(page, secondScrollerId);
+ ff.click();
+ HtmlElement currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ assertEquals("span", currentDigital2.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital2.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // if scroller outside dataTable has switched
+ HtmlElement currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+ assertEquals("span", currentDigital1.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital1.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // check if page has switched
+ assertEquals(i + " page content", getCurrentPageContent(page, i));
+ }
+
+ checkLastPageButtons(page, firstScrollerId, secondScrollerId);
+
+ //scroll back
+ for(int i = 5; i >= 1; i--) {
+ HtmlElement fr = getFastRewindButton(page, secondScrollerId);
+ fr.click();
+
+ HtmlElement currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ assertEquals("span", currentDigital2.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital2.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // if scroller inside dataTable has switched
+ HtmlElement currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+ assertEquals("span", currentDigital1.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital1.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // check if page has switched
+ assertEquals(i + " page content", getCurrentPageContent(page, i));
+ }
+
+ checkFirstPageButtons(page, firstScrollerId, secondScrollerId);
+ }
+
+ @Test
+ public void testOutDataScrollerDigitalButtons() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+ String firstScrollerId = "scroller1";
+
+ //dataScroller inside dataTable 'footer' facet
+ String secondScrollerId = "richTable:scroller2";
+
+ for(int i = 2; i <= 6; i++) {
+ HtmlElement currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+ currentDigital1.click();
+
+ currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+ assertEquals("span", currentDigital1.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital1.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // if scroller inside dataTable has switched
+ HtmlElement currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ assertEquals("span", currentDigital2.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital2.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // check if page has switched
+ assertEquals(i + " page content", getCurrentPageContent(page, i));
+ }
+
+ checkLastPageButtons(page, firstScrollerId, secondScrollerId);
+
+ //scroll back
+ for(int i = 5; i >= 1; i--) {
+ HtmlElement currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+ currentDigital1.click();
+
+ currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+ assertEquals("span", currentDigital1.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital1.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // if scroller inside dataTable has switched
+ HtmlElement currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ assertEquals("span", currentDigital2.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital2.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // check if page has switched
+ assertEquals(i + " page content", getCurrentPageContent(page, i));
+ }
+
+ checkFirstPageButtons(page, firstScrollerId, secondScrollerId);
+ }
+
+ @Test
+ public void testInnerDataScrollerDigitalButtons() throws Exception {
+ HtmlPage page = environment.getPage("/test.jsf");
+ String firstScrollerId = "scroller1";
+
+ //dataScroller inside dataTable 'footer' facet
+ String secondScrollerId = "richTable:scroller2";
+
+ for(int i = 2; i <= 6; i++) {
+ HtmlElement currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ currentDigital2.click();
+
+ currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ assertEquals("span", currentDigital2.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital2.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // if scroller outside dataTable has switched
+ HtmlElement currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+ assertEquals("span", currentDigital1.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital1.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // check if page has switched
+ assertEquals(i + " page content", getCurrentPageContent(page, i));
+ }
+
+ checkLastPageButtons(page, firstScrollerId, secondScrollerId);
+
+ //scroll back
+ for(int i = 5; i >= 1; i--) {
+ HtmlElement currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ currentDigital2.click();
+
+ currentDigital2 = getDigitalButton(page, secondScrollerId, i);
+ assertEquals("span", currentDigital2.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital2.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // if scroller inside dataTable has switched
+ HtmlElement currentDigital1 = getDigitalButton(page, firstScrollerId, i);
+ assertEquals("span", currentDigital1.getNodeName());
+ assertEquals("rf-ds-dtl rf-ds-cur", currentDigital1.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ // check if page has switched
+ assertEquals(i + " page content", getCurrentPageContent(page, i));
+ }
+
+ checkFirstPageButtons(page, firstScrollerId, secondScrollerId);
+ }
+
+ @After
+ public void tearDown() {
+ environment.release();
+ environment = null;
+ }
+
+ private void checkFirstPageButtons(HtmlPage page, String firstScrollerId, String secondScrollerId) throws Exception {
+ HtmlElement fastForward = getFastForwardButton(page, firstScrollerId);
+ HtmlElement last = getLastButton(page, firstScrollerId);
+
+ assertEquals("a", fastForward.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r", fastForward.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ assertEquals("a", last.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r", last.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ fastForward = getFastForwardButton(page, secondScrollerId);
+ last = getFastForwardButton(page, secondScrollerId);
+
+ assertEquals("a", fastForward.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r", fastForward.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ assertEquals("a", last.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r", last.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ //check if left buttons is disabled
+ HtmlElement fastRewind = getFastRewindButton(page, firstScrollerId);
+ HtmlElement first = getFirstButton(page, firstScrollerId);
+
+ assertEquals("span", fastRewind.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l rf-ds-dis", fastRewind.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ assertEquals("span", first.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l rf-ds-dis", first.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ fastRewind = getFastRewindButton(page, secondScrollerId);
+ first = getFirstButton(page, secondScrollerId);
+
+ assertEquals("span", fastRewind.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l rf-ds-dis", fastRewind.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ assertEquals("span", first.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l rf-ds-dis", first.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+ }
+
+ private void checkLastPageButtons(HtmlPage page, String firstScrollerId, String secondScrollerId) throws Exception {
+ //check if right buttons is disabled
+ HtmlElement fastForward = getFastForwardButton(page, firstScrollerId);
+ HtmlElement last = getLastButton(page, firstScrollerId);
+
+ assertEquals("span", fastForward.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r rf-ds-dis", fastForward.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ assertEquals("span", last.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r rf-ds-dis", last.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ fastForward = getFastForwardButton(page, secondScrollerId);
+ last = getFastForwardButton(page, secondScrollerId);
+
+ assertEquals("span", fastForward.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r rf-ds-dis", fastForward.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ assertEquals("span", last.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-r rf-ds-dis", last.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ //check if left buttons is enabled
+ HtmlElement fastRewind = getFastRewindButton(page, firstScrollerId);
+ HtmlElement first = getFirstButton(page, firstScrollerId);
+
+ assertEquals("a", fastRewind.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l", fastRewind.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ assertEquals("a", first.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l", first.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ fastRewind = getFastRewindButton(page, secondScrollerId);
+ first = getFirstButton(page, secondScrollerId);
+
+ assertEquals("a", fastRewind.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l", fastRewind.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+
+ assertEquals("a", first.getNodeName());
+ assertEquals("rf-ds-btn rf-ds-l", first.getAttribute(HTML.CLASS_ATTRIBUTE).trim());
+ }
+
+ private String getCurrentPageContent(HtmlPage page, int i) throws Exception {
+ HtmlElement content = page.getFirstByXPath("//*[@id = 'form:richTable:" + (--i) + ":pageContent']");
+ DomNode text = content.getFirstChild();
+ assertEquals(DomNode.TEXT_NODE, text.getNodeType());
+ return text.getNodeValue();
+ }
+
+ private HtmlElement getFastRewindButton(HtmlPage page, String scrollerId) {
+ return page.getFirstByXPath("//*[@id = 'form:" + scrollerId +"_ds_fr']");
+ }
+
+ private HtmlElement getFirstButton(HtmlPage page, String scrollerId) {
+ return page.getFirstByXPath("//*[@id = 'form:" + scrollerId +"_ds_f']");
+ }
+
+ private HtmlElement getFastForwardButton(HtmlPage page, String scrollerId) {
+ return page.getFirstByXPath("//*[@id = 'form:" + scrollerId +"_ds_ff']");
+ }
+
+ private HtmlElement getLastButton(HtmlPage page, String scrollerId) {
+ return page.getFirstByXPath("//*[@id = 'form:" + scrollerId +"_ds_l']");
+ }
+
+ private HtmlElement getDigitalButton(HtmlPage page, String scrollerId, int i) {
+ return page.getFirstByXPath("//*[@id = 'form:" + scrollerId + "_ds_" + i +"']");
+ }
+
+}
Added: trunk/ui/iteration/ui/src/test/resources/org/richfaces/renderkit/dataTableTest.xhtml
===================================================================
--- trunk/ui/iteration/ui/src/test/resources/org/richfaces/renderkit/dataTableTest.xhtml (rev 0)
+++ trunk/ui/iteration/ui/src/test/resources/org/richfaces/renderkit/dataTableTest.xhtml 2010-08-30 14:15:02 UTC (rev 19017)
@@ -0,0 +1,29 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:it="http://richfaces.org/iteration">
+<f:view contentType="text/html" />
+
+<h:head>
+ <title>Richfaces List</title>
+</h:head>
+
+<h:body>
+ <h:form id="form">
+
+ <it:dataScroller id="scroller1" for="richTable" page="#{dataScrollerBean.pageNumber}" maxPages="6"></it:dataScroller>
+ <it:dataTable id="richTable" rowKeyVar="rowKey" var="content" value="#{dataScrollerBean.content}" rows="1">
+ <it:column>
+ <h:panelGroup id="pageContent">
+ <h:outputText value="#{content}"/>
+ </h:panelGroup>
+ </it:column>
+ <f:facet name="footer">
+ <it:dataScroller id="scroller2" for="richTable" page="#{dataScrollerBean.pageNumber}" maxPages="6"></it:dataScroller>
+ </f:facet>
+ </it:dataTable>
+ </h:form>
+</h:body>
+</html>
Modified: trunk/ui/iteration/ui/src/test/resources/org/richfaces/renderkit/faces-config.xml
===================================================================
--- trunk/ui/iteration/ui/src/test/resources/org/richfaces/renderkit/faces-config.xml 2010-08-30 14:13:52 UTC (rev 19016)
+++ trunk/ui/iteration/ui/src/test/resources/org/richfaces/renderkit/faces-config.xml 2010-08-30 14:15:02 UTC (rev 19017)
@@ -10,5 +10,11 @@
<managed-bean-class>org.richfaces.renderkit.DataBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
-
+
+ <managed-bean>
+ <managed-bean-name>dataScrollerBean</managed-bean-name>
+ <managed-bean-class>org.richfaces.renderkit.DataScrollerBean</managed-bean-class>
+ <managed-bean-scope>session</managed-bean-scope>
+ </managed-bean>
+
</faces-config>
\ No newline at end of file
14 years, 3 months
JBoss Rich Faces SVN: r19016 - trunk/ui/iteration/ui/src/test/java/org/richfaces/component.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2010-08-30 10:13:52 -0400 (Mon, 30 Aug 2010)
New Revision: 19016
Added:
trunk/ui/iteration/ui/src/test/java/org/richfaces/component/UIDataTableTest.java
Log:
rename and fix UIDataTableBaseTest
Added: trunk/ui/iteration/ui/src/test/java/org/richfaces/component/UIDataTableTest.java
===================================================================
--- trunk/ui/iteration/ui/src/test/java/org/richfaces/component/UIDataTableTest.java (rev 0)
+++ trunk/ui/iteration/ui/src/test/java/org/richfaces/component/UIDataTableTest.java 2010-08-30 14:13:52 UTC (rev 19016)
@@ -0,0 +1,274 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright ${year}, Red Hat, Inc. and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * 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;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+import javax.el.ELContext;
+import javax.el.ExpressionFactory;
+import javax.faces.component.UIComponent;
+import javax.faces.component.UIOutput;
+import javax.faces.context.FacesContext;
+
+import org.ajax4jsf.model.DataVisitor;
+import org.ajax4jsf.model.ExtendedDataModel;
+import org.ajax4jsf.model.Range;
+import org.jboss.test.faces.AbstractFacesTest;
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.richfaces.model.Arrangeable;
+import org.richfaces.model.ArrangeableState;
+import org.richfaces.model.FilterField;
+import org.richfaces.model.SortField;
+import org.richfaces.model.SortMode;
+
+/**
+ * @author Konstantin Mishin
+ *
+ */
+public class UIDataTableTest extends AbstractFacesTest {
+
+ private class MockArrangeableModel extends ExtendedDataModel<Object> implements Arrangeable {
+
+ private ArrangeableState state;
+ @Override
+ public Object getRowKey() {
+ return null;
+ }
+
+ @Override
+ public void setRowKey(Object key) {
+ }
+
+ @Override
+ public void walk(FacesContext context, DataVisitor visitor, Range range, Object argument) {
+ }
+
+ @Override
+ public int getRowCount() {
+ return 0;
+ }
+
+ @Override
+ public Object getRowData() {
+ return null;
+ }
+
+ @Override
+ public int getRowIndex() {
+ return 0;
+ }
+
+ @Override
+ public Object getWrappedData() {
+ return null;
+ }
+
+ @Override
+ public boolean isRowAvailable() {
+ return false;
+ }
+
+ @Override
+ public void setRowIndex(int rowIndex) {
+ }
+
+ @Override
+ public void setWrappedData(Object data) {
+ }
+
+ public void arrange(FacesContext context, ArrangeableState state) {
+ this.state = state;
+ }
+
+ public ArrangeableState getState() {
+ return state;
+ }
+
+ }
+ private UIDataTable table = null;
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ setupFacesRequest();
+ table = new UIDataTable();
+ }
+
+ /**
+ * @throws java.lang.Exception
+ */
+ @After
+ public void tearDown() throws Exception {
+ table = null;
+ super.tearDown();
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#getRendersChildren()}.
+ */
+ @Test
+ public void testGetRendersChildren() {
+ Assert.assertTrue(table.getRendersChildren());
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#dataChildren()}.
+ */
+ @Test
+ public void testDataChildren() {
+ Assert.assertTrue(table.dataChildren() instanceof DataTableDataIterator);
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#fixedChildren()}.
+ */
+ @Test
+ public void testFixedChildren() {
+ Assert.assertTrue(table.fixedChildren() instanceof DataTableFixedChildrenIterator);
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#createExtendedDataModel()}.
+ */
+ @Test
+ public void testCreateExtendedDataModel() {
+ Assert.assertFalse(table.createExtendedDataModel() instanceof Arrangeable);
+ List<String> sortPriority = Arrays.asList("id2", "id0", "id1");
+ List<UIComponent> children = table.getChildren();
+ ExpressionFactory expressionFactory = facesContext.getApplication().getExpressionFactory();
+ ELContext elContext = facesContext.getELContext();
+ UIColumn column = new UIColumn();
+ column.setRendered(false);
+ children.add(column);
+ for (int i = 0; i < sortPriority.size(); i++) {
+ UIColumn child = new UIColumn();
+ child.setId("id" + i);
+ child.setValueExpression("filterExpression", expressionFactory
+ .createValueExpression(elContext, "#{'id" + i + "'}", Object.class));
+ child.setValueExpression("sortBy", expressionFactory
+ .createValueExpression(elContext, "#{'id" + i + "'}", Object.class));
+ child.setSortOrder(SortOrder.ascending);
+ children.add(child);
+ }
+ Assert.assertTrue(table.createExtendedDataModel() instanceof Arrangeable);
+ MockArrangeableModel model = new MockArrangeableModel();
+ table.setValue(model);
+ table.setSortPriority(sortPriority);
+ Assert.assertSame(model, table.createExtendedDataModel());
+ ArrangeableState state = model.getState();
+ List<FilterField> filterFields = state.getFilterFields();
+ for (int i = 0; i < sortPriority.size(); i++) {
+ Assert.assertEquals("id" + i , filterFields.get(i).getFilterExpression().getValue(elContext));
+ }
+ List<SortField> sortFields = state.getSortFields();
+ for (int i = 0; i < sortPriority.size(); i++) {
+ Assert.assertEquals(sortPriority.get(i), sortFields.get(i).getSortBy().getValue(elContext));
+ }
+ Assert.assertEquals(facesContext.getViewRoot().getLocale(), state.getLocale());
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#columns()}.
+ */
+ @Test
+ public void testColumns() {
+ Assert.assertTrue(table.columns() instanceof DataTableColumnsIterator);
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#getHeader()}.
+ */
+ @Test
+ public void testGetHeader() {
+ UIOutput component = new UIOutput();
+ table.getFacets().put("header", component);
+ Assert.assertSame(component, table.getHeader());
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#getFooter()}.
+ */
+ @Test
+ public void testGetFooter() {
+ UIOutput component = new UIOutput();
+ table.getFacets().put("footer", component);
+ Assert.assertSame(component, table.getFooter());
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#getFilterVar()} and
+ * {@link org.richfaces.component.UIDataTableBase#setFilterVar(java.lang.String)}.
+ */
+ @Test
+ public void testFilterVar() {
+ String string = "fv";
+ table.setFilterVar(string);
+ Assert.assertEquals(string, table.getFilterVar());
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#getSortPriority()} and
+ * {@link org.richfaces.component.UIDataTableBase#setSortPriority(java.util.Collection)}.
+ */
+ @Test
+ public void testSortPriority() {
+ table.setSortPriority(Collections.EMPTY_LIST);
+ Assert.assertEquals(Collections.EMPTY_LIST, table.getSortPriority());
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#getSortMode()} and
+ * {@link org.richfaces.component.UIDataTableBase#setSortMode(org.richfaces.model.SortMode)}.
+ */
+ @Test
+ public void testSortMode() {
+ table.setSortMode(SortMode.multi);
+ Assert.assertEquals(SortMode.multi, table.getSortMode());
+ }
+
+ /**
+ * Test method for {@link org.richfaces.component.UIDataTableBase#isColumnFacetPresent(java.lang.String)}.
+ */
+ @Test
+ public void testIsColumnFacetPresent() {
+ String facetName = "header";
+ Assert.assertFalse(table.isColumnFacetPresent(facetName));
+ UIColumn child = new UIColumn();
+ List<UIComponent> children = table.getChildren();
+ children.add(new UIColumn());
+ children.add(child);
+ Assert.assertFalse(table.isColumnFacetPresent(facetName));
+ child.getFacets().put(facetName, new UIOutput());
+ Assert.assertTrue(table.isColumnFacetPresent(facetName));
+ child.setRendered(false);
+ Assert.assertFalse(table.isColumnFacetPresent(facetName));
+ }
+}
14 years, 3 months
JBoss Rich Faces SVN: r19015 - trunk/ui/iteration/ui/src/test/java/org/richfaces/renderkit.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2010-08-30 10:10:04 -0400 (Mon, 30 Aug 2010)
New Revision: 19015
Modified:
trunk/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataGridRendererTest.java
Log:
remove UIDataGrid import
Modified: trunk/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataGridRendererTest.java
===================================================================
--- trunk/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataGridRendererTest.java 2010-08-30 14:06:14 UTC (rev 19014)
+++ trunk/ui/iteration/ui/src/test/java/org/richfaces/renderkit/DataGridRendererTest.java 2010-08-30 14:10:04 UTC (rev 19015)
@@ -15,7 +15,6 @@
import org.junit.Before;
import org.junit.Test;
import org.richfaces.component.AbstractDataGrid;
-import org.richfaces.component.UIDataGrid;
import com.gargoylesoftware.htmlunit.html.HtmlElement;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
14 years, 3 months
JBoss Rich Faces SVN: r19014 - trunk/ui/iteration/ui/src/main/templates.
by richfaces-svn-commits@lists.jboss.org
Author: abelevich
Date: 2010-08-30 10:06:14 -0400 (Mon, 30 Aug 2010)
New Revision: 19014
Modified:
trunk/ui/iteration/ui/src/main/templates/datascroller.template.xml
Log:
fix styles
Modified: trunk/ui/iteration/ui/src/main/templates/datascroller.template.xml
===================================================================
--- trunk/ui/iteration/ui/src/main/templates/datascroller.template.xml 2010-08-30 13:50:49 UTC (rev 19013)
+++ trunk/ui/iteration/ui/src/main/templates/datascroller.template.xml 2010-08-30 14:06:14 UTC (rev 19014)
@@ -53,7 +53,7 @@
<c:if test="#{controlsState.fastForwardRendered}">
<c:choose>
<c:when test="#{controlsState.fastForwardEnabled}">
- <a id="#{clientId}_ds_ff" class="rf-ds-btn rf-ds-r" href="javascript:void(0)">
+ <a id="#{clientId}_ds_ff" class="rf-ds-btn rf-ds-r" href="javascript:void(0);">
»
</a>
</c:when>
@@ -68,7 +68,7 @@
<c:if test="#{controlsState.lastRendered}">
<c:choose>
<c:when test="#{controlsState.lastEnabled}">
- <a id="#{clientId}_ds_l" class="rf-ds-btn rf-ds-r" href="javascript:void(0)">
+ <a id="#{clientId}_ds_l" class="rf-ds-btn rf-ds-r" href="javascript:void(0);">
»»
</a>
</c:when>
14 years, 3 months