JBoss Rich Faces SVN: r15874 - in root/ui-sandbox/trunk/components/tables/ui/src/main: resources/META-INF/resources and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: konstantin.mishin
Date: 2009-11-12 13:12:28 -0500 (Thu, 12 Nov 2009)
New Revision: 15874
Added:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java
root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/resources/extendedDataTable.css
Removed:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRendererBase.java
Log:
RF-7865
Copied: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java (from rev 15862, root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRendererBase.java)
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java (rev 0)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRenderer.java 2009-11-12 18:12:28 UTC (rev 15874)
@@ -0,0 +1,62 @@
+/*
+ * 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.renderkit;
+
+import java.io.IOException;
+
+import javax.faces.component.UIComponent;
+import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
+
+import org.ajax4jsf.renderkit.RendererBase;
+import org.ajax4jsf.renderkit.RendererUtils.HTML;
+
+public class ExtendedDataTableRenderer extends RendererBase {
+
+ @Override
+ protected Class<? extends UIComponent> getComponentClass() {
+ return UIComponent.class;
+ }
+
+ @Override
+ protected void doEncodeBegin(ResponseWriter writer, FacesContext context,
+ UIComponent component) throws IOException {
+ writer.startElement(HTML.DIV_ELEM, component);
+ writer.writeAttribute(HTML.ID_ATTRIBUTE, component.getClientId(context), null);
+ writer.writeAttribute(HTML.CLASS_ATTRIBUTE, "rich-extable " + component.getAttributes().get("styleClass"), null);
+ getUtils().writeAttribute(writer, HTML.STYLE_ATTRIBUTE, component.getAttributes().get("style"));
+
+ }
+
+ @Override
+ protected void doEncodeChildren(ResponseWriter writer,
+ FacesContext context, UIComponent component) throws IOException {
+ // TODO Auto-generated method stub
+ super.doEncodeChildren(writer, context, component);
+ }
+
+ @Override
+ protected void doEncodeEnd(ResponseWriter writer, FacesContext context,
+ UIComponent component) throws IOException {
+ context.getResponseWriter().endElement(HTML.DIV_ELEM);
+ }
+}
Deleted: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRendererBase.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRendererBase.java 2009-11-12 18:11:39 UTC (rev 15873)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/renderkit/ExtendedDataTableRendererBase.java 2009-11-12 18:12:28 UTC (rev 15874)
@@ -1,6 +0,0 @@
-package org.richfaces.renderkit;
-
-import org.ajax4jsf.renderkit.RendererBase;
-
-public abstract class ExtendedDataTableRendererBase extends RendererBase {
-}
Added: root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/resources/extendedDataTable.css
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/resources/extendedDataTable.css (rev 0)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/resources/extendedDataTable.css 2009-11-12 18:12:28 UTC (rev 15874)
@@ -0,0 +1,60 @@
+/*
+ * 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.
+ */
+.rich-extable{
+ background-color: #FFFFFF;
+ border: 1px solid #C4C0C9;
+}
+
+.rich-extable-header {
+ background-color : #D4CFC7;
+}
+
+.rich-extable-body{
+ overflow-x: hidden;
+ overflow-y: scroll;
+ width: 100%;
+ height: 0px;
+}
+
+.rich-extable-footer {
+ background-color : #CCCCCC;
+}
+
+/*.rich-extable-footer table tbody tr{
+ vertical-align: top;
+}*/
+
+.rich-extable-part{
+ overflow: hidden;
+}
+
+.rich-extable-footer-part{
+ overflow-x: auto;
+ overflow-y: visible;
+}
+
+.rich-extable-cell, .rich-extable-header-cell{
+ height: 20px;
+ overflow: hidden;
+ border-bottom: 1px solid #C4C0C9;
+ border-right: 1px solid #C4C0C9;
+}
\ No newline at end of file
16 years, 8 months
JBoss Rich Faces SVN: r15873 - in root/ui-sandbox/trunk/components/tables/ui/src/main: resources/META-INF and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: konstantin.mishin
Date: 2009-11-12 13:11:39 -0500 (Thu, 12 Nov 2009)
New Revision: 15873
Modified:
root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlExtendedDataTable.java
root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/faces-config.xml
Log:
RF-7864
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlExtendedDataTable.java
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlExtendedDataTable.java 2009-11-12 17:34:24 UTC (rev 15872)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/java/org/richfaces/component/html/HtmlExtendedDataTable.java 2009-11-12 18:11:39 UTC (rev 15873)
@@ -1,3 +1,24 @@
+/*
+ * 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.html;
import org.richfaces.component.UIExtendedDataTable;
@@ -6,8 +27,42 @@
public static final String COMPONENT_TYPE = "org.richfaces.ExtendedDataTable";
+ private static enum PropertyKeys {style, styleClass}
+
public HtmlExtendedDataTable() {
setRendererType("org.richfaces.ExtendedDataTableRenderer");
}
+ public String getStyle() {
+ return (String) getStateHelper().eval(PropertyKeys.style, "");
+ }
+
+ public void setStyle(String style) {
+ getStateHelper().put(PropertyKeys.style, style);
+ }
+
+ public String getStyleClass() {
+ return (String) getStateHelper().eval(PropertyKeys.styleClass, "");
+ }
+
+ public void setStyleClass(String styleClass) {
+ getStateHelper().put(PropertyKeys.styleClass, styleClass);
+ }
+
+// public String getWidth() {
+// return (String) getStateHelper().eval(PropertyKeys.width, "");
+// }
+//
+// public void setWidth(String width) {
+// getStateHelper().put(PropertyKeys.width, width);
+// }
+//
+// public String getHeight() {
+// return (String) getStateHelper().eval(PropertyKeys.height, "");
+// }
+//
+// public void setHeight(String height) {
+// getStateHelper().put(PropertyKeys.height, height);
+// }
+
}
Modified: root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/faces-config.xml
===================================================================
--- root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/faces-config.xml 2009-11-12 17:34:24 UTC (rev 15872)
+++ root/ui-sandbox/trunk/components/tables/ui/src/main/resources/META-INF/faces-config.xml 2009-11-12 18:11:39 UTC (rev 15873)
@@ -1,3 +1,27 @@
+<!--
+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.
+-->
<?xml version='1.0' encoding='UTF-8'?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
@@ -33,9 +57,9 @@
<renderer-class>org.richfaces.renderkit.DataTableRenderer</renderer-class>
</renderer>
<renderer>
- <component-family>org.richfaces.ExtendedDataTable</component-family>
+ <component-family>org.richfaces.Data</component-family>
<renderer-type>org.richfaces.ExtendedDataTableRenderer</renderer-type>
- <renderer-class>org.richfaces.renderkit.html.ExtendedDataTableRenderer</renderer-class>
+ <renderer-class>org.richfaces.renderkit.ExtendedDataTableRenderer</renderer-class>
</renderer>
</render-kit>
</faces-config>
\ No newline at end of file
16 years, 8 months
JBoss Rich Faces SVN: r15872 - in branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test: java/org/jboss/richfaces/integrationTest/dragSupport and 17 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: ppitonak(a)redhat.com
Date: 2009-11-12 12:34:24 -0500 (Thu, 12 Nov 2009)
New Revision: 15872
Modified:
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/AbstractSeleniumRichfacesTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dragSupport/DragSupportTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/log/LogTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/outputPanel/OutputPanelTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/push/PushTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/status/StatusTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dragSupport/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/graphValidator/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/include/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/jsFunction/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/keepAlive/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/log/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/mediaOutput/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/outputPanel/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/outputPanel/messages.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/poll/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/push/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/queue/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/script/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/status/locators.properties
Log:
* XPath locators replaced by jQuery locators
* StatusTestCase refactored so now at least two methods should pass always.
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/AbstractSeleniumRichfacesTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/AbstractSeleniumRichfacesTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/AbstractSeleniumRichfacesTestCase.java 2009-11-12 17:34:24 UTC (rev 15872)
@@ -73,7 +73,7 @@
/**
* predefined waitings to use in inheritors
*/
- protected Waiting waitModelUpdate = Wait.interval(100).timeout(60000);
+ protected Waiting waitModelUpdate = Wait.interval(100).timeout(30000);
protected Waiting waitGuiInteraction = Wait.interval(100).timeout(500);
/**
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dragSupport/DragSupportTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dragSupport/DragSupportTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dragSupport/DragSupportTestCase.java 2009-11-12 17:34:24 UTC (rev 15872)
@@ -108,8 +108,8 @@
private void accepting(int phase) {
String itemText = format(MSG_CHOICES_FRAMEWORKS, 1);
- String item = format(LOC_DIV_DRAGGED_ITEM_PREFORMATTED, itemText);
- String target = format(LOC_CHOICES_OF_DIV_TARGETS, 1);
+ String item = format(LOC_DIV_DRAGGED_ITEM_PREFORMATTED, 1);
+ String target = format(LOC_CHOICES_OF_DIV_TARGETS, 0);
if (phase == 0) {
assertTrue(selenium.isElementPresent(LOC_DIV_DRAG_INDICATOR),
@@ -119,7 +119,7 @@
}
Drag drag = new Drag(selenium, item, target);
-
+
drag.move();
if (phase == 0) {
@@ -137,7 +137,7 @@
assertTrue(Pattern.matches(MSG_REGEXP_IMGSRC_OF_MOVING, actual), format(
"The image source of indicator '{0}' doesn't match '{1}", actual, MSG_REGEXP_IMGSRC_OF_MOVING));
}
-
+
drag.enter();
if (phase == 1) {
@@ -157,14 +157,13 @@
}
String firstInsertedItem = format(LOC_DIV_FIRST_INSERTED_ITEM_RELATIVE, target);
-
if (phase == 2) {
assertFalse(selenium.isElementPresent(firstInsertedItem),
"There was one item inserted to target, but there was expected no item");
}
drag.drop();
-
+
if (phase == 2) {
Wait.failWith("Drag indicator never disappeared when item dropped").until(new Condition() {
public boolean isTrue() {
@@ -174,8 +173,7 @@
assertTrue(selenium.isElementPresent(firstInsertedItem),
"There was no item inserted in target after drop of accepting item");
- assertFalse(selenium.isElementPresent(item),
- "The dragged item was still in framework list after drop to accepting target");
+ assertFalse(selenium.getText(item).equals(itemText), "The dragged item was still in framework list after drop to accepting target");
String actual = selenium.getText(firstInsertedItem);
assertEquals(itemText, actual,
@@ -184,9 +182,8 @@
}
private void rejecting(int phase) {
- String itemText = format(MSG_CHOICES_FRAMEWORKS, 1);
- String item = format(LOC_DIV_DRAGGED_ITEM_PREFORMATTED, itemText);
- String target = format(LOC_CHOICES_OF_DIV_TARGETS, 2);
+ String item = format(LOC_DIV_DRAGGED_ITEM_PREFORMATTED, 1);
+ String target = format(LOC_CHOICES_OF_DIV_TARGETS, 1);
Drag drag = new Drag(selenium, item, target);
drag.move();
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/log/LogTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/log/LogTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/log/LogTestCase.java 2009-11-12 17:34:24 UTC (rev 15872)
@@ -81,14 +81,14 @@
}
private void fillLog() {
- final long startCount = selenium.getXpathCount(LOC_DIV_LOG_CONSOLE_ENTRY).longValue();
+ final int startCount = getJQueryCount(LOC_DIV_LOG_CONSOLE_ENTRY);
selenium.type(LOC_INPUT_TEXT, MSG_INPUT_SAMPLE);
selenium.fireEvent(LOC_INPUT_TEXT, Event.KEYUP);
Wait.failWith("Count of log entries never increase").until(new Condition() {
public boolean isTrue() {
- return selenium.getXpathCount(LOC_DIV_LOG_CONSOLE_ENTRY).longValue() > startCount;
+ return getJQueryCount(LOC_DIV_LOG_CONSOLE_ENTRY) > startCount;
}
});
@@ -112,10 +112,10 @@
private void waitForLogStabilize() {
Wait.failWith("Log stabilized in entry count in given time").interval(3000).timeout(9000).until(
new Condition() {
- long count = -1;
+ int count = -1;
public boolean isTrue() {
- long actual = selenium.getXpathCount(LOC_DIV_LOG_CONSOLE_ENTRY).longValue();
+ int actual = getJQueryCount(LOC_DIV_LOG_CONSOLE_ENTRY);
if (actual == count) {
return true;
}
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/outputPanel/OutputPanelTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/outputPanel/OutputPanelTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/outputPanel/OutputPanelTestCase.java 2009-11-12 17:34:24 UTC (rev 15872)
@@ -35,79 +35,80 @@
*/
public class OutputPanelTestCase extends AbstractSeleniumRichfacesTestCase {
- private String LOC_FIELDSET_HEADER = getLoc("FIELDSET_HEADER");
- private String LOC_INPUT_WRONG = getLoc("INPUT_WRONG");
- private String LOC_INPUT_CORRECT = getLoc("INPUT_CORRECT");
- private String LOC_OUTPUT_MESSAGE = getLoc("OUTPUT_MESSAGE");
+ private String LOC_FIELDSET_HEADER = getLoc("FIELDSET_HEADER");
+ private String LOC_INPUT_WRONG = getLoc("INPUT_WRONG");
+ private String LOC_INPUT_CORRECT = getLoc("INPUT_CORRECT");
+ private String LOC_OUTPUT_MESSAGE = getLoc("OUTPUT_MESSAGE");
+ private String LOC_OUTPUT_ERROR = getLoc("OUTPUT_ERROR");
- private String MSG_INPUT_CORRECT = getMsg("INPUT_CORRECT");
- private String MSG_INPUT_WRONG = getMsg("INPUT_WRONG");
- private String MSG_OUTPUT_VALIDATOR_ERROR = getMsg("OUTPUT_VALIDATOR_ERROR");
+ private String MSG_INPUT_CORRECT = getMsg("INPUT_CORRECT");
+ private String MSG_INPUT_WRONG = getMsg("INPUT_WRONG");
+
+ /**
+ * Add correct text into wrong input, checks that no text and no error
+ * message appear.
+ */
+ @Test
+ public void testCorrectTextIntoWrongInput() {
+ enterTextAndCheckOutputAndErrorMessage(LOC_INPUT_WRONG,
+ MSG_INPUT_CORRECT, false, false);
+ }
+
+ /**
+ * Enter wrong text into wrong input, checks that no text and no error
+ * message appear.
+ */
+ @Test
+ public void testWrongTextIntoWrongInput() {
+ enterTextAndCheckOutputAndErrorMessage(LOC_INPUT_WRONG, MSG_INPUT_WRONG,
+ false, false);
+ }
+
+ /**
+ * Enter correct text into correct input, checks that text but no error
+ * message appear.
+ */
+ @Test
+ public void testCorrectTextIntoSuccessInput() {
+ enterTextAndCheckOutputAndErrorMessage(LOC_INPUT_CORRECT,
+ MSG_INPUT_CORRECT, true, false);
+ }
- /**
- * Add correct text into wrong input, checks that no text and no error
- * message appear.
- */
- @Test
- public void testCorrectTextIntoWrongInput() {
- enterTextAndCheckOutputAndErrorMessage(LOC_INPUT_WRONG, MSG_INPUT_CORRECT, false, false);
- }
+ /**
+ * Enter wrong text into correct input, checks that no text but only error
+ * message appear.
+ */
+ @Test
+ public void testWrongTextIntoSuccessInput() {
+ enterTextAndCheckOutputAndErrorMessage(LOC_INPUT_CORRECT, MSG_INPUT_WRONG, false, true);
+ }
- /**
- * Enter wrong text into wrong input, checks that no text and no error
- * message appear.
- */
- @Test
- public void testWrongTextIntoWrongInput() {
- enterTextAndCheckOutputAndErrorMessage(LOC_INPUT_WRONG, MSG_INPUT_WRONG, false, false);
- }
+ private void enterTextAndCheckOutputAndErrorMessage(String locInput, final String msgText,
+ final boolean textShouldAppear, final boolean errorMessageShouldAppear) {
+ selenium.type(locInput, msgText);
+ selenium.fireEvent(locInput, Event.KEYUP);
- /**
- * Enter correct text into correct input, checks that text but no error
- * message appear.
- */
- @Test
- public void testCorrectTextIntoSuccessInput() {
- enterTextAndCheckOutputAndErrorMessage(LOC_INPUT_CORRECT, MSG_INPUT_CORRECT, true, false);
- }
+ waitModelUpdate.dontFail().until(new Condition() {
+ public boolean isTrue() {
+ if (errorMessageShouldAppear || textShouldAppear) {
+ return getJQueryCount(format(LOC_OUTPUT_MESSAGE, msgText)) > 0
+ || getJQueryCount(LOC_OUTPUT_ERROR) > 0;
+ }
+ return false;
+ }
+ });
- /**
- * Enter wrong text into correct input, checks that no text but only error
- * message appear.
- */
- @Test
- public void testWrongTextIntoSuccessInput() {
- enterTextAndCheckOutputAndErrorMessage(LOC_INPUT_CORRECT, MSG_INPUT_WRONG, false, true);
- }
+ assertEquals(getJQueryCount(format(LOC_OUTPUT_MESSAGE, msgText)), textShouldAppear ? 1 : 0,
+ textShouldAppear ? "Text output should appear" : "No text output should appear");
+ assertEquals(getJQueryCount(LOC_OUTPUT_ERROR), errorMessageShouldAppear ? 1 : 0,
+ errorMessageShouldAppear ? "Error message should appear" : "No error message should appear");
+ }
- private void enterTextAndCheckOutputAndErrorMessage(String locInput, final String msgText,
- final boolean textShouldAppear, final boolean errorMessageShouldAppear) {
- selenium.type(locInput, msgText);
- selenium.fireEvent(locInput, Event.KEYUP);
+ @SuppressWarnings("unused")
+ @BeforeMethod
+ private void loadPage() {
+ openComponent("Output Panel");
- waitModelUpdate.dontFail().until(new Condition() {
- public boolean isTrue() {
- if (errorMessageShouldAppear || textShouldAppear) {
- return selenium.getXpathCount(format(LOC_OUTPUT_MESSAGE, msgText)).intValue() > 0
- || selenium.getXpathCount(format(LOC_OUTPUT_MESSAGE, MSG_OUTPUT_VALIDATOR_ERROR))
- .intValue() > 0;
- }
- return false;
- }
- });
-
- assertEquals(selenium.getXpathCount(format(LOC_OUTPUT_MESSAGE, msgText)), textShouldAppear ? 1 : 0,
- textShouldAppear ? "Text output should appear" : "No text output should appear");
- assertEquals(selenium.getXpathCount(format(LOC_OUTPUT_MESSAGE, MSG_OUTPUT_VALIDATOR_ERROR)),
- errorMessageShouldAppear ? 1 : 0, errorMessageShouldAppear ? "Error message should appear"
- : "No error message should appear");
- }
-
- @SuppressWarnings("unused")
- @BeforeMethod
- private void loadPage() {
- openComponent("Output Panel");
-
- scrollIntoView(LOC_FIELDSET_HEADER, true);
- }
+ scrollIntoView(LOC_FIELDSET_HEADER, true);
+ }
}
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/push/PushTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/push/PushTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/push/PushTestCase.java 2009-11-12 17:34:24 UTC (rev 15872)
@@ -46,7 +46,7 @@
@Test
public void testPushingProgress() {
setPushingStatus(true);
-
+
checkPushingProgress();
}
@@ -67,28 +67,32 @@
@Test
public void testPushingStopAndStart() {
setPushingStatus(false);
-
+
checkPushingStopped();
setPushingStatus(true);
-
+
checkPushingProgress();
setPushingStatus(false);
-
+
checkPushingStopped();
setPushingStatus(true);
-
+
checkPushingProgress();
}
private void checkPushingProgress() {
- assertTrue(isPushingActive(), "Pushing was inactive but should be active");
-
+ Wait.failWith("Pushing was inactive but should be active").interval(200).timeout(10000).until(new Condition() {
+ public boolean isTrue() {
+ return isPushingActive();
+ }
+ });
+
final String oldOutput = selenium.getText(LOC_OUTPUT_TEXT);
- Wait.failWith("When waiting for text change, it never happen").interval(2500).timeout(20000).until(
+ Wait.failWith("When waiting for text change, it never happen").interval(1000).timeout(20000).until(
new Condition() {
public boolean isTrue() {
String actualOutput = selenium.getText(LOC_OUTPUT_TEXT);
@@ -107,13 +111,17 @@
}
private void checkPushingStopped() {
- assertFalse(isPushingActive(), "Pushing was active but expected to be inactive");
-
+ Wait.failWith("Pushing was active but should be inactive").interval(200).timeout(10000).until(new Condition() {
+ public boolean isTrue() {
+ return !isPushingActive();
+ }
+ });
+
String expected = MSG_OUTPUT_PUSH_INACTIVE;
for (int i = 0; i < 7; i++) {
if (i > 0)
- waitFor(2500);
+ waitFor(1000);
String actual = selenium.getText(LOC_OUTPUT_TEXT);
assertEquals(actual, expected);
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/status/StatusTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/status/StatusTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/status/StatusTestCase.java 2009-11-12 17:34:24 UTC (rev 15872)
@@ -47,7 +47,7 @@
private final String MSG_STYLE_DISPLAY = getMsg("STYLE_DISPLAY");
private final String MSG_PATTERN_NAME_JOB = getMsg("PATTERN_NAME_JOB");
-
+
/**
* <p>
* This test requests update by pressing button, waiting for processing
@@ -63,7 +63,7 @@
// https://jira.jboss.org/jira/browse/JBQA-2606
@Test
public void testTextStatus() {
- doStatusTesting(1);
+ doStatusTesting(0);
}
/**
@@ -79,7 +79,7 @@
// https://jira.jboss.org/jira/browse/JBQA-2606
@Test
public void testImageStatus() {
- doStatusTesting(2);
+ doStatusTesting(1);
}
/**
@@ -97,30 +97,30 @@
final String locOutputStatusMessage = format(LOC_OUTPUT_STATUS_MESSAGE_PREFORMATTED, testNumber);
final String locButtonRequest = format(LOC_BUTTON_REQUEST_PREFORMATTED, testNumber);
- // get a initial style of status field
- final String initialStyle = getStyle(locOutputStatusMessage, MSG_STYLE_DISPLAY);
-
+ assertFalse(isDisplayed(locOutputStatusMessage), "Status message should not be visible at start.");
+
+ // prepare both needed conditions for waiting so that it will be faster
+ Condition styleCondition = new Condition() {
+ public boolean isTrue() {
+ return isDisplayed(locOutputStatusMessage);
+ }
+ };
+
+ Condition styleConditionNot = new Condition() {
+ public boolean isTrue() {
+ return !isDisplayed(locOutputStatusMessage);
+ }
+ };
+
selenium.click(locButtonRequest);
-
+
// wait for style is changed to "processing" state indicates that
// request is in progress
- waitModelUpdate.interval(10).failWith("Test timeouted when waiting for request moves to processing state.")
- .until(new Condition() {
- public boolean isTrue() {
- String actualStyle = getStyle(locOutputStatusMessage, MSG_STYLE_DISPLAY);
- return !initialStyle.equals(actualStyle);
- }
- });
+ waitModelUpdate.interval(0).failWith("Test timeouted when waiting for request moves to processing state.").until(styleCondition);
// wait for style is changed back to initial state after request is
// complete
- waitModelUpdate.interval(10).failWith("Timeout when waiting for request moves to complete state.").until(
- new Condition() {
- public boolean isTrue() {
- String actual = getStyle(locOutputStatusMessage, MSG_STYLE_DISPLAY);
- return initialStyle.equals(actual);
- }
- });
+ waitModelUpdate.interval(0).failWith("Timeout when waiting for request moves to complete state.").until(styleConditionNot);
}
/**
@@ -137,10 +137,10 @@
// https://jira.jboss.org/jira/browse/JBQA-2606
@Test
public void testInputsStatus() {
- scrollIntoView(format(LOC_FIELDSET_PAGE_PART_PREFORMATTED, 3), true);
+ scrollIntoView(format(LOC_FIELDSET_PAGE_PART_PREFORMATTED, 2), true);
// PAGE CONTROLS
- final String locOutputStatusMessage = format(LOC_OUTPUT_STATUS_MESSAGE_PREFORMATTED, 3);
+ final String locOutputStatusMessage = format(LOC_OUTPUT_STATUS_MESSAGE_PREFORMATTED, 2);
// init buffers for typed text for each input
StringBuilder textName = new StringBuilder();
@@ -148,12 +148,24 @@
// init pattern for getting name and job from output
Pattern patternNameJob = Pattern.compile(MSG_PATTERN_NAME_JOB);
-
- // get a initial value of status message's style
- final String initialStyle = getStyle(locOutputStatusMessage, MSG_STYLE_DISPLAY);
-
+
+ assertFalse(isDisplayed(locOutputStatusMessage), "Status message should not be visible at start.");
+
+ // prepare both needed conditions for waiting so that it will be faster
+ Condition styleCondition = new Condition() {
+ public boolean isTrue() {
+ return isDisplayed(locOutputStatusMessage);
+ }
+ };
+
+ Condition styleConditionNot = new Condition() {
+ public boolean isTrue() {
+ return !isDisplayed(locOutputStatusMessage);
+ }
+ };
+
// cycle over 30 chars and alternating between two inputs
- for (int counter = 1; counter <= 30; counter++) {
+ for (int counter = 1; counter <= 15; counter++) {
// select input and it's buffered text by state of counter
final String selectedInput = (counter % 3 == 0) ? LOC_INPUT_NAME : LOC_INPUT_JOB;
final StringBuilder selectedText = (counter % 3 == 0) ? textName : textJob;
@@ -163,13 +175,15 @@
selenium.type(selectedInput, selectedText.toString());
selenium.fireEvent(selectedInput, Event.KEYUP);
+
+ // wait for style is changed to "processing" state indicates that
+ // request is in progress
+ waitModelUpdate.interval(0).failWith("Test timeouted when waiting for request moves to processing state.").until(styleCondition);
- // wait for display-style changes to value different than initial
- waitForDisplayChanges(locOutputStatusMessage, initialStyle, false);
-
- // wait for display-style changes to initial value
- waitForDisplayChanges(locOutputStatusMessage, initialStyle, true);
-
+ // wait for style is changed back to initial state after request is
+ // complete
+ waitModelUpdate.interval(0).failWith("Timeout when waiting for request moves to complete state.").until(styleConditionNot);
+
String outputText = selenium.getText(LOC_OUTPUT_TEXT);
// matches output to pattern declared above?
@@ -202,7 +216,7 @@
*/
private void waitForDisplayChanges(final String locator, final String initialStyle,
final boolean shouldEqualOldValue) {
- waitModelUpdate.interval(10).until(new Condition() {
+ waitModelUpdate.interval(0).until(new Condition() {
public boolean isTrue() {
String actualStyle = getStyle(locator, MSG_STYLE_DISPLAY);
return !shouldEqualOldValue ^ initialStyle.equals(actualStyle);
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dragSupport/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dragSupport/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dragSupport/locators.properties 2009-11-12 17:34:24 UTC (rev 15872)
@@ -1,7 +1,7 @@
-FIELDSET_HEADER=//legend[text()\='Drag-n-Drop example']
-CHOICES_OF_DIV_TARGETS=//div[text()\='{0,choice,1\#PHP Frameworks|2\#.NET Frameworks|3\#ColdFusion Frameworks}']/../../div
-DIV_DRAGGED_ITEM_PREFORMATTED=//table[contains(@id,'src')]//div[text()\='{0}']
-DIV_DRAG_INDICATOR=//*[@id\='indicator']
-CLASS_DRAG_INDICATOR=//*[@id\='indicator']/@class
-IMGSRC_DRAG_INDICATOR=//*[@id\='indicator']//td[1]/img/@src
-DIV_FIRST_INSERTED_ITEM_RELATIVE={0}/*[2]/*[2]/*/*/*[1]
+FIELDSET_HEADER=jquery=legend:textEquals(Drag-n-Drop example)
+CHOICES_OF_DIV_TARGETS=jquery=div.dropTargetPanel:eq({0})
+DIV_DRAGGED_ITEM_PREFORMATTED=jquery=table[id$=src] div:nth-child({0})
+DIV_DRAG_INDICATOR=jquery=div#indicator
+CLASS_DRAG_INDICATOR=jquery=div#indicator@class
+IMGSRC_DRAG_INDICATOR=jquery=div#indicator img@src
+DIV_FIRST_INSERTED_ITEM_RELATIVE={0} td:eq(0)
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/graphValidator/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/graphValidator/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/graphValidator/locators.properties 2009-11-12 17:34:24 UTC (rev 15872)
@@ -1,11 +1,11 @@
-FIELDSET_HEADER_USEF_INFO=//fieldset[1]//legend[text()\='Title']
-BUTTON_SUBMIT_USER_INFO=//input[@type\='button' and @value\='Store changes']
+FIELDSET_HEADER_USEF_INFO=jquery=fieldset:eq(0) > legend
+BUTTON_SUBMIT_USER_INFO=jquery=input[value=Store changes]
INPUT_NAME=graphValidatorForm\:name
INPUT_AGE=graphValidatorForm\:age
INPUT_EMAIL=graphValidatorForm\:email
-VALIDATION_MESSAGE_RELATIVE=//input[@id\='{0}']/../../td[3]/*[1][@class\='rich-message']
-LOC_FIELDSET_HEADER_ACTIVITIES=//fieldset[2]//legend[text()\='Title']
-BUTTON_SUBMIT_ACTIVITIES=//input[@type\='button' and @value\='Store my details']
-OUTPUT_VALIDATION_MESSAGE=//form[@name\="graphValidatorForm2"]//*[@class\="rich-messages-label"]
-CLASS_VALIDATION_MESSAGE=//form[@name\="graphValidatorForm2"]/*[@class\="rich-messages"]/*/@class
-INPUT_ACTIVITY_HOURS_PREFORMATTED=//form[@id\='graphValidatorForm2']/table/tbody/tr[{0}]//input[@type\='text']
+VALIDATION_MESSAGE_RELATIVE=jquery=fieldset tr:has(input[id={0}]) span[class=rich-message]
+LOC_FIELDSET_HEADER_ACTIVITIES=jquery=fieldset:eq(1) > legend
+BUTTON_SUBMIT_ACTIVITIES=jquery=input[value=Store my details]
+OUTPUT_VALIDATION_MESSAGE=jquery=form#graphValidatorForm2 span.rich-messages-label
+CLASS_VALIDATION_MESSAGE=jquery=form#graphValidatorForm2 dt@class
+INPUT_ACTIVITY_HOURS_PREFORMATTED=jquery=form#graphValidatorForm2 > table > tbody > tr:nth-child({0}) input.rich-spinner-input
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/include/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/include/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/include/locators.properties 2009-11-12 17:34:24 UTC (rev 15872)
@@ -1,11 +1,11 @@
-FIELDSET_HEADER=//legend[text()\='Include example']
-BUTTON_PREVIOUS=//*[@type\='button' and @value\='<<Previous']
-BUTTON_NEXT=//*[@type\='button' and @value\='Next >>']
-INPUT_FIRSTNAME=//*[text()\='First Name\:']/../*[2]/*[@type\='text']
-INPUT_LASTNAME=//*[text()\='Last Name\:']/../*[2]/*[@type\='text']
-INPUT_COMPANY=//*[text()\='Company\:']/../*[2]/*[@type\='text']
-INPUT_NOTES=//*[contains(@id, 'notes')]
-OUTPUT_FIRSTNAME=//*[text()\='First Name\:']/../*[2]
-OUTPUT_LASTNAME=//*[text()\='Last Name\:']/../*[2]
-OUTPUT_COMPANY=//*[text()\='Company\:']/../*[2]
-OUTPUT_NOTES=//*[text()\='Notes\:']/../*[2]
+FIELDSET_HEADER=jquery=legend:textEquals(Include example)
+BUTTON_PREVIOUS=jquery=input[value=<<Previous]
+BUTTON_NEXT=jquery=input[value=Next >>]
+INPUT_FIRSTNAME=jquery=tr[class=s1row]:eq(0) input
+INPUT_LASTNAME=jquery=tr[class=s1row]:eq(1) input
+INPUT_COMPANY=jquery=tr[class=s1row]:eq(2) input
+INPUT_NOTES=jquery=textarea[id$=notes]
+OUTPUT_FIRSTNAME=jquery=fieldset form tr:eq(0) td:eq(1)
+OUTPUT_LASTNAME=jquery=fieldset form tr:eq(1) td:eq(1)
+OUTPUT_COMPANY=jquery=fieldset form tr:eq(2) td:eq(1)
+OUTPUT_NOTES=jquery=fieldset form tr:eq(3) td:eq(1)
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/jsFunction/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/jsFunction/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/jsFunction/locators.properties 2009-11-12 17:34:24 UTC (rev 15872)
@@ -1,2 +1,2 @@
-SPAN_HOVER_ACTIVATED=//fieldset[1]/div[1]/table[1]//span[text()\='{0}']
-OUTPUT_NAME=//*[@id\='showname']
+SPAN_HOVER_ACTIVATED=jquery=fieldset span:textEquals({0})
+OUTPUT_NAME=jquery=span#showname
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/keepAlive/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/keepAlive/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/keepAlive/locators.properties 2009-11-12 17:34:24 UTC (rev 15872)
@@ -1,8 +1,8 @@
-INPUT_INCORRECT1=//fieldset/div/table/tbody/tr[2]/td[1]/form/input[@type\='text'][1]
-INPUT_INCORRECT2=//fieldset/div/table/tbody/tr[2]/td[1]/form/input[@type\='text'][2]
-BUTTON_INCORRECT=//fieldset/div/table/tbody/tr[2]/td[1]/form/*[@type\='button']
-OUTPUT_INCORRECT=//fieldset/div/table/tbody/tr[2]/td[1]/form/*[contains(@id, 'sum')]
-INPUT_CORRECT1=//fieldset/div/table/tbody/tr[2]/td[2]/form/input[@type\='text'][1]
-INPUT_CORRECT2=//fieldset/div/table/tbody/tr[2]/td[2]/form/input[@type\='text'][2]
-BUTTON_CORRECT=//fieldset/div/table/tbody/tr[2]/td[2]/form/*[@type\='button']
-OUTPUT_CORRECT=//fieldset/div/table/tbody/tr[2]/td[2]/form/*[contains(@id, 'sum')]
+INPUT_INCORRECT1=jquery=fieldset form:eq(0) input[type=text]:eq(0)
+INPUT_INCORRECT2=jquery=fieldset form:eq(0) input[type=text]:eq(1)
+BUTTON_INCORRECT=jquery=fieldset form:eq(0) input[type=button]
+OUTPUT_INCORRECT=jquery=fieldset form:eq(0) span[id*=sum]
+INPUT_CORRECT1=jquery=fieldset form:eq(1) input[type=text]:eq(0)
+INPUT_CORRECT2=jquery=fieldset form:eq(1) input[type=text]:eq(1)
+BUTTON_CORRECT=jquery=fieldset form:eq(1) input[type=button]
+OUTPUT_CORRECT=jquery=fieldset form:eq(1) span[id*=sum]
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/log/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/log/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/log/locators.properties 2009-11-12 17:34:24 UTC (rev 15872)
@@ -1,5 +1,5 @@
-FIELDSET_HEADER=//legend[text()\='Log demo']
-INPUT_TEXT=//input[@type\='text']
-BUTTON_CLEAR=//button[text()\='Clear']
-OUTPUT_LOG_CONSOLE //div[@id\='logConsole']
-DIV_LOG_CONSOLE_ENTRY=//div[@id\='logConsole']/div
+FIELDSET_HEADER=jquery=legend:textEquals(Log demo)
+INPUT_TEXT=jquery=input[type=text]
+BUTTON_CLEAR=jquery=button:textEquals(Clear)
+OUTPUT_LOG_CONSOLE=jquery=div#logConsole
+DIV_LOG_CONSOLE_ENTRY=jquery=div#logConsole > div
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/mediaOutput/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/mediaOutput/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/mediaOutput/locators.properties 2009-11-12 17:34:24 UTC (rev 15872)
@@ -1,3 +1,3 @@
-FIELDSET_HEADER=//legend[text()\='MediaOutput example']
-ATTRIBUTE_FLASH_HREF=//a[@id\='swfLink']/@href
-ATTRIBUTE_IMAGE_SRC=//p[text()\='Dynamically generated JPEG file\:']/../img/@src
+FIELDSET_HEADER=jquery=legend:textEquals(MediaOutput example)
+ATTRIBUTE_FLASH_HREF=jquery=a#swfLink@href
+ATTRIBUTE_IMAGE_SRC=jquery=div.sample-container > img@src
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/outputPanel/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/outputPanel/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/outputPanel/locators.properties 2009-11-12 17:34:24 UTC (rev 15872)
@@ -1,4 +1,5 @@
-FIELDSET_HEADER=//legend[text()\='OutputPanel example']
-INPUT_WRONG=//input[@type\='text' and contains(@id,'text1')]
-INPUT_CORRECT=//input[@type\='text' and contains(@id,'text2')]
-OUTPUT_MESSAGE=//*[contains(text(),'{0}')]
+FIELDSET_HEADER=jquery=legend:textEquals(OutputPanel example)
+INPUT_WRONG=jquery=input[id$=text1]
+INPUT_CORRECT=jquery=input[id$=text2]
+OUTPUT_MESSAGE=jquery=span:textEndsWith({0})
+OUTPUT_ERROR=jquery=fieldset tr span > span
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/outputPanel/messages.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/outputPanel/messages.properties 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/outputPanel/messages.properties 2009-11-12 17:34:24 UTC (rev 15872)
@@ -1,3 +1,2 @@
INPUT_CORRECT=1234567890
INPUT_WRONG=12345678901
-OUTPUT_VALIDATOR_ERROR=Validation Error
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/poll/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/poll/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/poll/locators.properties 2009-11-12 17:34:24 UTC (rev 15872)
@@ -1,3 +1,3 @@
-OUTPUT_POLL_STATUS=//*[starts-with(text(), 'Polling')]
-BUTTON_POLL_CONTROL=//*[@type\='button' and contains(@id, 'control')]
-OUTPUT_SERVER_DATE=//*[starts-with(text(), 'Server Date\:')]
+OUTPUT_POLL_STATUS=jquery=table[id$=grid] table td:eq(0)
+BUTTON_POLL_CONTROL=jquery=input[type=button]
+OUTPUT_SERVER_DATE=jquery=span[id$=serverDate]
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/push/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/push/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/push/locators.properties 2009-11-12 17:34:24 UTC (rev 15872)
@@ -1,2 +1,2 @@
-BUTTON_POLL_CONTROL=//*[@type\='button' and (@value\='Start' or @value\='Stop')]
-OUTPUT_TEXT=//*[text()\='Press Start to run push example' or starts-with(text(), 'Generated UUID\:')]
+BUTTON_POLL_CONTROL=jquery=input[type=button]
+OUTPUT_TEXT=jquery=table[id$=out] td:eq(0)
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/queue/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/queue/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/queue/locators.properties 2009-11-12 17:34:24 UTC (rev 15872)
@@ -1,12 +1,13 @@
-BUTTON_IMAGE_PREFORMATTED=//*[@id\='_{0}']
-OUTPUT_QUEUE_ITEM=//*[@id\='tr1']//*[starts-with(text(),'_{0}')]
-FIELDSET_HEADER=//legend[text()\='Queue demo']
-INPUT_TYPED_TEXT=//*[text()\='Type here\:']/../*/*[@type\='text']
-OUTPUT_TYPED_TEXT=//*[text()\='Repeated text\:']/../*/*
-OUTPUT_EVENTS_COUNT=//*[text()\='Events count\:']/../*/*
-OUTPUT_REQUESTS_COUNT=//*[text()\='Requests count\:']/../*/*
-OUTPUT_DOM_UPDATES_COUNT=//*[text()\='DOM updates count\:']/../*/*
-INPUT_REQUEST_DELAY=//*[text()\='Request delay\:']/../*/*[@type\='text']
-CHECKBOX_IGNORE_DUP_RESPONSES=//*[text()\='Ignore Duplicated Responces']/../*/*[@type\='checkbox']
-CHECKBOX_DISABLE_QUEUE=//*[text()\='Disable Queue']/../*/*[@type\='checkbox']
-BUTTON_APPLY_SETTINGS=//*[@type\='submit' and @value\='Apply']
+BUTTON_IMAGE_PREFORMATTED=jquery=input#_{0}
+OUTPUT_QUEUE_ITEM=jquery=#tr1 td:textStartsWith(_{0})
+
+FIELDSET_HEADER=jquery=legend:textEquals(Queue demo)
+INPUT_TYPED_TEXT=jquery=input[id=form:myinput]
+OUTPUT_TYPED_TEXT=jquery=span[id=form:outtext]
+OUTPUT_EVENTS_COUNT=jquery=span[id=form:events]
+OUTPUT_REQUESTS_COUNT=jquery=span[id=form:requests]
+OUTPUT_DOM_UPDATES_COUNT=jquery=span[id=form:updates]
+INPUT_REQUEST_DELAY=jquery=input[id=form:delay]
+CHECKBOX_IGNORE_DUP_RESPONSES=jquery=input[type=checkbox]:eq(0)
+CHECKBOX_DISABLE_QUEUE=jquery=input[type=checkbox]:eq(1)
+BUTTON_APPLY_SETTINGS=jquery=input[value=Apply]
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/script/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/script/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/script/locators.properties 2009-11-12 17:34:24 UTC (rev 15872)
@@ -1,9 +1,9 @@
-FIELDSET_HEADER=//legend[text()\='Script demo']
-BUTTON_HIDE=//*[@type\='submit' and @value\='Hide']
-BUTTON_SHOW=//*[@type\='submit' and @value\='Show']
-BUTTON_SUBMIT=//*[@type\='submit' and @value\='Submit']
-INPUT_NAME=//span[text()\='Name\:']/../../td[2]/input[@type\='text']
-INPUT_JOB=//span[text()\='Job\:']/../../td[2]/input[@type\='text']
-OUTPUT_NAME=//*[@id\='out']//*[starts-with(text(), 'Name\:')]
-OUTPUT_JOB=//*[@id\='out']//*[starts-with(text(), 'Job\:')]
-PANEL_HIDABLE=//div[@id\='mypanel']
+FIELDSET_HEADER=jquery=legend:textEquals(Script demo)
+BUTTON_HIDE=jquery=input[value=Hide]
+BUTTON_SHOW=jquery=input[value=Show]
+BUTTON_SUBMIT=jquery=input[value=Submit]
+INPUT_NAME=jquery=input.rsInput:eq(0)
+INPUT_JOB=jquery=input.rsInput:eq(1)
+OUTPUT_NAME=jquery=#out td:eq(3)
+OUTPUT_JOB=jquery=#out td:eq(4)
+PANEL_HIDABLE=jquery=div#mypanel
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/status/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/status/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/status/locators.properties 2009-11-12 17:34:24 UTC (rev 15872)
@@ -1,6 +1,6 @@
-FIELDSET_PAGE_PART_PREFORMATTED=//fieldset[{0}]
-OUTPUT_STATUS_MESSAGE_PREFORMATTED=//fieldset[{0}]//*[contains(@id, 'status.start')]
-BUTTON_REQUEST_PREFORMATTED=//fieldset[{0}]/div//input[@type\='button']
-INPUT_NAME=//fieldset[3]//*[@type\='text' and contains(@id, 'name')]
-INPUT_JOB=//fieldset[3]//*[@type\='text' and contains(@id, 'job')]
-OUTPUT_TEXT=//*[contains(@id,'out') and starts-with(text(),'Name\:')]
\ No newline at end of file
+FIELDSET_PAGE_PART_PREFORMATTED=jquery=fieldset:eq({0})
+OUTPUT_STATUS_MESSAGE_PREFORMATTED=jquery=fieldset:eq({0}) span[id$=status.start]
+BUTTON_REQUEST_PREFORMATTED=jquery=fieldset:eq({0}) input[type=button]
+INPUT_NAME=jquery=input[id$=name]
+INPUT_JOB=jquery=input[id$=job]
+OUTPUT_TEXT=jquery=span[id$=out]
\ No newline at end of file
16 years, 8 months
JBoss Rich Faces SVN: r15871 - in branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test: java/org/jboss/richfaces/integrationTest/columns and 26 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: ppitonak(a)redhat.com
Date: 2009-11-12 07:07:03 -0500 (Thu, 12 Nov 2009)
New Revision: 15871
Modified:
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/AbstractDataIterationTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/columns/ColumnsTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dataFilterSlider/DataFilterSliderTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dataGrid/DataGridTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dataScroller/DataScrollerTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dataTable/ModifiableDataModelTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/editor/AdvancedEditorTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/AbstractExtendedDataTableTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/DraggingTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/FilteringTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/GroupingTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/SelectingTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/SortingTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/repeat/RepeatTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/tableFiltering/TableFilteringTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/tableSorting/TableSortingTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/tree/TreeTestCase.java
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/ajaxValidator/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/beanValidator/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/columns/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/commandButton/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/commandLink/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/data-iteration--locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataFilterSlider/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataGrid/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataList/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataScroller/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataTable/locators-DataTableTestCase.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataTable/locators-EditTableWithModalPanelTestCase.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataTable/locators-ExtendedDataModelTestCase.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataTable/locators-ModifiableDataModelTestCase.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators-DraggingTestCase.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators-GroupingTestCase.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators-SelectingTestCase.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators-SortingTestCase.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/repeat/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/tableFiltering/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/tableSorting/locators.properties
branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/tree/messages.properties
Log:
* XPath locators replaced by jQuery locators
* removed one method from AdvancedEditorTestCase causing problem on non-UTF8 systems
* TreeTestCase partially reverted
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/AbstractDataIterationTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/AbstractDataIterationTestCase.java 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/AbstractDataIterationTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
@@ -90,7 +90,7 @@
*/
protected void gotoPage(String button) {
final String previousPage = getActivePage().toString();
-
+
if (previousPage.equals(selenium.getText(button))) {
return;
}
@@ -99,15 +99,14 @@
&& (LOC_BUTTON_FIRST_PAGE.equals(button) || LOC_BUTTON_PREVIOUS_PAGE.equals(button))) {
return;
}
-
+
if (previousPage.equals(getLastVisiblePage().toString())
&& (LOC_BUTTON_LAST_PAGE.equals(button) || LOC_BUTTON_NEXT_PAGE.equals(button))) {
return;
}
-
// move to specified page
selenium.click(button);
-
+
Wait.failWith("The page never changed as required").until(new Condition() {
public boolean isTrue() {
return !previousPage.equals(getActivePage().toString());
@@ -130,8 +129,8 @@
* @return number of last page visible on page control
*/
protected Integer getLastVisiblePage() {
- Number pages = selenium.getXpathCount(format(LOC_BUTTON_NUMBERED_PAGE_PREFORMATTED, 0));
- String lastVisiblePage = selenium.getText(format(LOC_BUTTON_NUMBERED_PAGE_PREFORMATTED, pages));
+ Number pages = getJQueryCount(format(LOC_BUTTON_NUMBERED_PAGE_PREFORMATTED, -1)) - 6;
+ String lastVisiblePage = selenium.getText(format(LOC_BUTTON_NUMBERED_PAGE_PREFORMATTED, pages.intValue()));
return Integer.valueOf(lastVisiblePage);
}
@@ -178,7 +177,7 @@
gotoPage(LOC_BUTTON_NEXT_PAGE);
}
- final int rows = selenium.getXpathCount(format(columnsPreformatted[0], 0)).intValue();
+ final int rows = getJQueryCount(format(columnsPreformatted[0], 0));
assertTrue(rows > 0, "There must be at least one row in the table");
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/columns/ColumnsTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/columns/ColumnsTestCase.java 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/columns/ColumnsTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
@@ -111,8 +111,8 @@
}
private String[][] getMapOfCells() {
- final int columns = selenium.getXpathCount(format(LOC_TD_PREFORMATTED, 1, 0)).intValue();
- final int rows = selenium.getXpathCount(format(LOC_TD_PREFORMATTED, 0, 1)).intValue();
+ final int columns = getJQueryCount(format(LOC_TD_PREFORMATTED, 1, 0));
+ final int rows = getJQueryCount(format(LOC_TD_PREFORMATTED, 0, 1));
String[][] map = new String[rows][columns];
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dataFilterSlider/DataFilterSliderTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dataFilterSlider/DataFilterSliderTestCase.java 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dataFilterSlider/DataFilterSliderTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
@@ -40,6 +40,7 @@
public class DataFilterSliderTestCase extends AbstractDataIterationTestCase {
private final String LOC_FIELDSET_HEADER = getLoc("FIELDSET_HEADER");
+ private final String LOC_TABLE_ROWS = getLoc("TABLE_ROWS");
private final String LOC_TD_MILEAGE_PREFORMATTED = getLoc("TD_MILEAGE_PREFORMATTED");
private final String LOC_TD_BRAND_PREFORMATTED = getLoc("TD_BRAND_PREFORMATTED");
private final String LOC_LINK_BRAND_PREFORMATTED = getLoc("LINK_BRAND_PREFORMATTED");
@@ -124,7 +125,7 @@
}
});
- for (int row = 1; row <= selenium.getXpathCount(format(LOC_TD_BRAND_PREFORMATTED, 0)).intValue(); row++) {
+ for (int row = 1; row <= getJQueryCount(LOC_TABLE_ROWS); row++) {
String rowBrand = selenium.getText(format(LOC_TD_BRAND_PREFORMATTED, row));
assertEquals(rowBrand, brand, "In all rows must be the defined brand");
@@ -140,9 +141,9 @@
private List<Integer> checkAllMileagesMaxAndReturnItsList(int maxMileage) {
List<Integer> list = new LinkedList<Integer>();
-
- int rowCount = selenium.getXpathCount(format(LOC_TD_MILEAGE_PREFORMATTED, 0)).intValue();
-
+
+ int rowCount = getJQueryCount(LOC_TABLE_ROWS);
+
for (int row = 1; row <= rowCount; row++) {
int rowMileage = Double.valueOf(selenium.getText(format(LOC_TD_MILEAGE_PREFORMATTED, row))).intValue();
@@ -160,7 +161,7 @@
}
private void clickSliderAtPercent(double percent) {
- final Number handlePosition = selenium.getElementPositionLeft(LOC_DIV_SLIDER_HANDLE);
+ final Number handlePosition = selenium.getElementPositionLeft(LOC_DIV_SLIDER_HANDLE);
int width = selenium.getElementWidth(LOC_DIV_SLIDER_TRACK).intValue();
int height = selenium.getElementHeight(LOC_DIV_SLIDER_TRACK).intValue();
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dataGrid/DataGridTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dataGrid/DataGridTestCase.java 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dataGrid/DataGridTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
@@ -55,18 +55,17 @@
if (!cellTexts.isEmpty()) {
gotoPage(LOC_BUTTON_NEXT_PAGE);
}
+
+ final int cellCount = getJQueryCount(format(LOC_TD_GRID_PREFORMATTED, 0, 0));
- final int cellCount = selenium.getXpathCount(format(LOC_TD_GRID_PREFORMATTED, 0, 0)).intValue();
-
assertTrue(cellCount > 0 && cellCount <= MSG_COUNT_CELLS_PER_PAGE, format(
"There should be at least one cell per page (page {0}), but no more than {1}", page,
MSG_COUNT_CELLS_PER_PAGE));
- int rowCount = selenium.getXpathCount(format(LOC_TD_GRID_PREFORMATTED, 0, 1)).intValue();
+ int rowCount = getJQueryCount(format(LOC_TD_GRID_PREFORMATTED, 0, 1));
for (int row = 1; row <= rowCount; row++) {
- final int columnCount = selenium.getXpathCount(format(LOC_TD_GRID_PREFORMATTED, row, 0)).intValue();
-
+ final int columnCount = getJQueryCount(format(LOC_TD_GRID_PREFORMATTED, row, 0));
assertTrue(columnCount > 0 && columnCount <= MSG_COUNT_CELLS_PER_COLUMN, format(
"There should be at least one cell per column (page {0}), but no more than {1}", page,
MSG_COUNT_CELLS_PER_COLUMN));
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dataScroller/DataScrollerTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dataScroller/DataScrollerTestCase.java 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dataScroller/DataScrollerTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
@@ -49,7 +49,7 @@
String tableText = getTableText();
for (String page : MSG_LIST_OF_PAGES) {
- gotoPage(format(LOC_BUTTON_NUMBERED_PAGE_PREFORMATTED, Integer.valueOf(page)));
+ gotoPage(format(LOC_BUTTON_NUMBERED_PAGE_PREFORMATTED, Integer.valueOf(page)-1));
tableText = checkThatTextDiffersAndReturn(tableText);
}
@@ -74,7 +74,6 @@
gotoPage(format(LOC_BUTTON_NUMBERED_PAGE_PREFORMATTED, page));
selenium.refresh();
-
assertTrue(page.equals(getActivePage()));
// TODO cannot just do openPage
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dataTable/ModifiableDataModelTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dataTable/ModifiableDataModelTestCase.java 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/dataTable/ModifiableDataModelTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
@@ -59,7 +59,7 @@
});
// check if keys on all pages are sorted in right way
- final int pageCount = selenium.getXpathCount(format(LOC_BUTTON_NUMBERED_PAGE_PREFORMATTED, 0)).intValue();
+ final int pageCount = getJQueryCount(format(LOC_BUTTON_NUMBERED_PAGE_PREFORMATTED, 0));
String lastText = null; // remembers last cell text
@@ -76,7 +76,7 @@
});
// count how many rows (cells in one column) table have
- final int cellCount = selenium.getXpathCount(format(LOC_TD_KEY_PREFORMATTED, 0)).intValue();
+ final int cellCount = getJQueryCount(format(LOC_TD_KEY_PREFORMATTED, 0));
// checks that columns are correctly sorted
for (int row = 1; row <= cellCount; row++) {
@@ -113,12 +113,12 @@
});
// check how many pages should be displayed
- String pageCount = selenium.getXpathCount(format(LOC_BUTTON_NUMBERED_PAGE_PREFORMATTED, 0)).toString();
- assertEquals(pageCount, MSG_COUNT_ASSIGNEE_PAGES);
+ int pageCount = getJQueryCount(format(LOC_BUTTON_NUMBERED_PAGE_PREFORMATTED, 0));
+ assertEquals(pageCount, Integer.parseInt(MSG_COUNT_ASSIGNEE_PAGES));
// checks how many columns should be displayed
- String cellCount = selenium.getXpathCount(format(LOC_TD_KEY_PREFORMATTED, 0)).toString();
- assertEquals(cellCount, MSG_COUNT_ASSIGNEE_ROWS);
+ int cellCount = getJQueryCount(format(LOC_TD_KEY_PREFORMATTED, 0));
+ assertEquals(cellCount, Integer.parseInt(MSG_COUNT_ASSIGNEE_ROWS));
// checks that assignee column contains assignee name
String assigneeName = selenium.getText(LOC_TD_ASSIGNEE_PREFORMATTED);
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/editor/AdvancedEditorTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/editor/AdvancedEditorTestCase.java 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/editor/AdvancedEditorTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
@@ -141,8 +141,8 @@
private final String LOC_ADV_IMAGE_DLG_VSPACE = getLoc("ADV_IMAGE_DLG_VSPACE");
private final String LOC_ADV_IMAGE_DLG_HSPACE = getLoc("ADV_IMAGE_DLG_HSPACE");
private final String LOC_ADV_IMAGE_DLG_INSERT_BUTTON = getLoc("ADV_IMAGE_DLG_INSERT_BUTTON");
- private final String LOC_ADV_CUSTOM_CHAR_BUTTON = getLoc("ADV_CUSTOM_CHAR_BUTTON");
- private final String LOC_ADV_CUSTOM_CHAR_DLG_M_N = getLoc("ADV_CUSTOM_CHAR_DLG_M_N");
+// private final String LOC_ADV_CUSTOM_CHAR_BUTTON = getLoc("ADV_CUSTOM_CHAR_BUTTON");
+// private final String LOC_ADV_CUSTOM_CHAR_DLG_M_N = getLoc("ADV_CUSTOM_CHAR_DLG_M_N");
/**
* Tests the bold button. It types "aaaa", presses enter followed by the
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/AbstractExtendedDataTableTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/AbstractExtendedDataTableTestCase.java 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/AbstractExtendedDataTableTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
@@ -23,7 +23,6 @@
import org.jboss.richfaces.integrationTest.AbstractDataIterationTestCase;
import org.jboss.test.selenium.waiting.Condition;
-import org.jboss.test.selenium.waiting.Wait;
import org.testng.annotations.BeforeMethod;
/**
@@ -36,8 +35,12 @@
protected final String LOC_TH_CAPITAL = getLoc("TH_CAPITAL");
protected final String LOC_TH_TIME_ZONE = getLoc("TH_TIME_ZONE");
protected final String LOC_TH_FLAG = getLoc("TH_FLAG");
- protected final String LOC_TH_RELATIVE = getLoc("TH_RELATIVE");
- protected final String LOC_TD_PREFORMATTED = getLoc("TD_PREFORMATTED");
+
+ protected final String LOC_SPAN_STATE = getLoc("SPAN_STATE");
+ protected final String LOC_SPAN_CAPITAL = getLoc("SPAN_CAPITAL");
+ protected final String LOC_SPAN_TIME_ZONE = getLoc("SPAN_TIME_ZONE");
+
+ protected final String LOC_TD_PREFORMATTED = getLoc("TD_PREFORMATTED");
private final String LOC_TABLE_EXTENDED = getLoc("TABLE_EXTENDED");
private final String LOC_DIV_SPLASH_SCREEN = getLoc("DIV_SPLASH_SCREEN");
private final String LOC_INPUT_COLUMN_FILTER = getLoc("INPUT_COLUMN_FILTER");
@@ -92,7 +95,7 @@
* @return the actual position (sequence) of column in table
*/
protected int getColumnIndex(String columnHeader) {
- return 1 + selenium.getElementIndex(format(LOC_TH_RELATIVE, columnHeader)).intValue();
+ return 1 + selenium.getElementIndex(columnHeader).intValue();
}
/**
@@ -108,8 +111,9 @@
protected String preformatColumn(String columnHeader) {
int columnIndex = getColumnIndex(columnHeader);
String columnPreformatted = format(LOC_TD_PREFORMATTED, Integer.MAX_VALUE, columnIndex);
- return columnPreformatted.replaceFirst(format("\\[{0,number}\\]", Integer.MAX_VALUE), "{0,choice,0#|1#[{0}]}");
- }
+ columnPreformatted = columnPreformatted.replaceFirst(format(":nth-child\\({0}\\)", Integer.MAX_VALUE), "{0,choice,0#|1#:nth-child({0})}");
+ return columnPreformatted;
+ }
/**
* Preformat filtering input's locator for column given by its columnHeader
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/DraggingTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/DraggingTestCase.java 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/DraggingTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
@@ -37,11 +37,8 @@
*/
public class DraggingTestCase extends AbstractExtendedDataTableTestCase {
- private final String LOC_DIV_DROP_ZONE_LEFT_RELATIVE = getLoc("DIV_DROP_ZONE_LEFT_RELATIVE");
- private final String LOC_DIV_DROP_ZONE_STATE = format(LOC_DIV_DROP_ZONE_LEFT_RELATIVE, LOC_TH_STATE);
- private final String LOC_DIV_DROP_ZONE_RIGHT_RELATIVE = getLoc("DIV_DROP_ZONE_RIGHT_RELATIVE");
- private final String LOC_DIV_DROP_ZONE_CAPITAL = format(LOC_DIV_DROP_ZONE_RIGHT_RELATIVE, LOC_TH_CAPITAL);
- private final String LOC_COLUMN_TO_ITS_CONTENT_RELATIVE = getLoc("COLUMN_TO_ITS_CONTENT_RELATIVE");
+ private final String LOC_DIV_DROP_ZONE_STATE = format(getLoc("DIV_DROP_ZONE_LEFT_RELATIVE"), LOC_TH_STATE);
+ private final String LOC_DIV_DROP_ZONE_CAPITAL = format(getLoc("DIV_DROP_ZONE_RIGHT_RELATIVE"), LOC_TH_CAPITAL);
private final String LOC_IMAGE_SRC_FLAG_PREFORMATTED = getLoc("IMAGE_SRC_FLAG_PREFORMATTED");
private final String[] LOC_TH_DRAGGING_TESTS = new String[] { LOC_TH_STATE, LOC_TH_CAPITAL, LOC_TH_FLAG,
LOC_TH_TIME_ZONE };
@@ -67,30 +64,28 @@
waitForSplash();
int associationHash = getAssociationMap().hashCode();
-
+
// sort by capital
selenium.click(LOC_TH_CAPITAL);
waitForSplash();
-
+
assertEquals(associationHash, getAssociationMap().hashCode());
-
+
// change column order - drag timezone column to state
- new Drag(selenium, LOC_TH_TIME_ZONE, LOC_DIV_DROP_ZONE_STATE).drop();
+ new Drag(selenium, LOC_SPAN_TIME_ZONE, LOC_DIV_DROP_ZONE_STATE).drop();
waitForSplash();
-
+
assertEquals(associationHash, getAssociationMap().hashCode());
-
assertEquals(getColumnIndex(LOC_TH_FLAG), 1);
assertEquals(getColumnIndex(LOC_TH_TIME_ZONE), 2);
assertEquals(getColumnIndex(LOC_TH_STATE), 3);
assertEquals(getColumnIndex(LOC_TH_CAPITAL), 4);
-
+
// change column order - drag state column to capital
- new Drag(selenium, LOC_TH_STATE, LOC_DIV_DROP_ZONE_CAPITAL).drop();
+ new Drag(selenium, LOC_SPAN_STATE, LOC_DIV_DROP_ZONE_CAPITAL).drop();
waitForSplash();
assertEquals(associationHash, getAssociationMap().hashCode());
-
assertEquals(getColumnIndex(LOC_TH_FLAG), 1);
assertEquals(getColumnIndex(LOC_TH_TIME_ZONE), 2);
assertEquals(getColumnIndex(LOC_TH_CAPITAL), 3);
@@ -110,13 +105,13 @@
}
}.transform(LOC_TH_DRAGGING_TESTS);
- int rows = selenium.getXpathCount(format(columnsPreformatted[0], 0)).intValue();
-
+ int rows = getJQueryCount(format(columnsPreformatted[0], 0));
+
for (int row = 1; row <= rows; row++) {
- String key = selenium.getText(format(columnsPreformatted[0], row));
+ String key = selenium.getText(format(columnsPreformatted[0], row));
Vector<String> values = new Vector<String>(columnsPreformatted.length - 1);
for (int column = 1; column < columnsPreformatted.length; column++) {
- String columnsContentDiv = format(LOC_COLUMN_TO_ITS_CONTENT_RELATIVE, columnsPreformatted[column]);
+ String columnsContentDiv = columnsPreformatted[column];
String value = getImgSrcOrText(format(columnsContentDiv, row));
values.add(column - 1, value);
}
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/FilteringTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/FilteringTestCase.java 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/FilteringTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
@@ -76,7 +76,7 @@
String statePrefix = selenium.getValue(inputFilterState);
String capitalPrefix = selenium.getValue(inputFilterCapital);
- int rows = selenium.getXpathCount(format(cellsState, 0)).intValue();
+ int rows = getJQueryCount(format(cellsState, 0));
for (int row = 1; row <= rows; row++) {
if (statePrefix.length() > 0) {
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/GroupingTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/GroupingTestCase.java 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/GroupingTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
@@ -35,8 +35,7 @@
private final String LOC_MENU_ITEM_GROUP_BY_COLUMN = getLoc("MENU_ITEM_GROUP_BY_COLUMN");
private final String LOC_TD_GROUP_PREFORMATTED = getLoc("TD_GROUP_PREFORMATTED");
private final String LOC_TR_PREFORMATTED = getLoc("TR_PREFORMATTED");
- private final String LOC_COLUMN_HEADER = format(LOC_TH_RELATIVE, LOC_TH_STATE);
- private final String LOC_BUTTON_MENU = format(LOC_DIV_CONTEXT_MENU_FOR_COLUMN_RELATIVE, LOC_COLUMN_HEADER);
+ private final String LOC_BUTTON_MENU = format(LOC_DIV_CONTEXT_MENU_FOR_COLUMN_RELATIVE, LOC_TH_STATE);
private final String MSG_TR_CLASS = getMsg("TR_CLASS");
@@ -47,30 +46,27 @@
@Test
public void testGrouping() {
// use grouping by state
- selenium.fireEvent(LOC_COLUMN_HEADER, Event.MOUSEOVER);
+ selenium.fireEvent(LOC_TH_STATE, Event.MOUSEOVER);
selenium.clickAt(LOC_BUTTON_MENU, "1,1");
waitForElement(LOC_MENU_ITEM_GROUP_BY_COLUMN);
selenium.click(LOC_MENU_ITEM_GROUP_BY_COLUMN);
waitForSplash();
-
- final int rows = selenium.getXpathCount(format(LOC_TR_PREFORMATTED, 0)).intValue();
+
+ final int rows = getJQueryCount(format(LOC_TR_PREFORMATTED, 0)) -1;
+
String expectedGroup = null;
- for (int row = 1, group = 0, tabular = 0; row <= rows; row++) {
- if (belongsClass(MSG_TR_CLASS, format(LOC_TR_PREFORMATTED, row))) {
+ for (int row = 1; row <= rows; row++) {
+ if (belongsClass(MSG_TR_CLASS, format(LOC_TR_PREFORMATTED, row))) {
// table row is type group
- group++;
-
- expectedGroup = selenium.getText(format(LOC_TD_GROUP_PREFORMATTED, group));
+ expectedGroup = selenium.getText(format(LOC_TD_GROUP_PREFORMATTED, row)).replace("State Name: ", "").replace("(1)", "");
} else {
// table row is regular data row
- tabular++;
-
assertNotNull(expectedGroup, format("First row in grouped table has to belong to class '{0}'",
MSG_TR_CLASS));
- String actualGroup = selenium.getText(format(preformatColumn(LOC_COLUMN_HEADER), tabular));
+ String actualGroup = selenium.getText(format(preformatColumn(LOC_TH_STATE), row));
assertEquals(actualGroup, expectedGroup, format("Cell ('{0}', row {1}) doesn't belong to group '{2}'",
actualGroup, row, expectedGroup));
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/SelectingTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/SelectingTestCase.java 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/SelectingTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
@@ -24,6 +24,7 @@
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.jboss.test.selenium.waiting.Condition;
+import org.jboss.test.selenium.waiting.Wait;
import org.testng.annotations.Test;
/**
@@ -32,151 +33,159 @@
*/
public class SelectingTestCase extends AbstractExtendedDataTableTestCase {
- private final String LOC_TR_SELECTED = getLoc("TR_SELECTED");
- private final String LOC_SELECT_SELECTION_MODE = getLoc("SELECT_SELECTION_MODE");
+ private final String LOC_TR_SELECTED = getLoc("TR_SELECTED");
+ private final String LOC_SELECT_SELECTION_MODE = getLoc("SELECT_SELECTION_MODE");
- private final String MSG_OPTION_SELECTION_NONE = getMsg("OPTION_SELECTION_NONE");
- private final String MSG_OPTION_SELECTION_SINGLE = getMsg("OPTION_SELECTION_SINGLE");
- private final String MSG_OPTION_SELECTION_MULTI = getMsg("OPTION_SELECTION_MULTI");
- private final String MSG_INPUT_SINGLE_ROW = getMsg("INPUT_SINGLE_ROW");
- private final String MSG_INPUT_MULTIPLE_ROWS = getMsg("INPUT_MULTIPLE_ROWS");
- private final String MSG_OUTPUT_MODE_NONE = getMsg("OUTPUT_MODE_NONE");
- private final String MSG_OUTPUT_SINGLE_ROW_IN_SINGLE_MODE = getMsg("OUTPUT_SINGLE_ROW_IN_SINGLE_MODE");
- private final String MSG_OUTPUT_MULTIPLE_ROWS_IN_SINGLE_MODE = getMsg("OUTPUT_MULTIPLE_ROWS_IN_SINGLE_MODE");
- private final String MSG_OUTPUT_SINGLE_ROW_IN_MULTI_MODE = getMsg("OUTPUT_SINGLE_ROW_IN_MULTI_MODE");
- private final String MSG_OUTPUT_MULTIPLE_ROWS_IN_MULTI_MODE = getMsg("OUTPUT_MULTIPLE_ROWS_IN_MULTI_MODE");
+ private final String MSG_OPTION_SELECTION_NONE = getMsg("OPTION_SELECTION_NONE");
+ private final String MSG_OPTION_SELECTION_SINGLE = getMsg("OPTION_SELECTION_SINGLE");
+ private final String MSG_OPTION_SELECTION_MULTI = getMsg("OPTION_SELECTION_MULTI");
+ private final String MSG_INPUT_SINGLE_ROW = getMsg("INPUT_SINGLE_ROW");
+ private final String MSG_INPUT_MULTIPLE_ROWS = getMsg("INPUT_MULTIPLE_ROWS");
+ private final String MSG_OUTPUT_MODE_NONE = getMsg("OUTPUT_MODE_NONE");
+ private final String MSG_OUTPUT_SINGLE_ROW_IN_SINGLE_MODE = getMsg("OUTPUT_SINGLE_ROW_IN_SINGLE_MODE");
+ private final String MSG_OUTPUT_MULTIPLE_ROWS_IN_SINGLE_MODE = getMsg("OUTPUT_MULTIPLE_ROWS_IN_SINGLE_MODE");
+ private final String MSG_OUTPUT_SINGLE_ROW_IN_MULTI_MODE = getMsg("OUTPUT_SINGLE_ROW_IN_MULTI_MODE");
+ private final String MSG_OUTPUT_MULTIPLE_ROWS_IN_MULTI_MODE = getMsg("OUTPUT_MULTIPLE_ROWS_IN_MULTI_MODE");
- /**
- * Checks single and multiple selection in selection-mode "none". Checks
- * that no rows will select.
- */
- @Test
- public void testSelectionModeNone() {
- selectMode(LOC_SELECT_SELECTION_MODE, MSG_OPTION_SELECTION_NONE);
+ private static int rows = -1;
- int[] rows, selectedRows;
+ /**
+ * Checks single and multiple selection in selection-mode "none". Checks
+ * that no rows will select.
+ */
+ @Test
+ public void testSelectionModeNone() {
+ selectMode(LOC_SELECT_SELECTION_MODE, MSG_OPTION_SELECTION_NONE);
- rows = getRowSelection(MSG_INPUT_SINGLE_ROW);
- multiSelection(rows);
- selectedRows = getRowSelection(MSG_OUTPUT_MODE_NONE);
- checkSelection(selectedRows);
+ int[] rows, selectedRows;
- loadPage();
+ rows = getRowSelection(MSG_INPUT_SINGLE_ROW);
+ multiSelection(rows);
+ selectedRows = getRowSelection(MSG_OUTPUT_MODE_NONE);
+ checkSelection(selectedRows);
- selectMode(LOC_SELECT_SELECTION_MODE, MSG_OPTION_SELECTION_NONE);
+ loadPage();
- rows = getRowSelection(MSG_INPUT_MULTIPLE_ROWS);
- multiSelection(rows);
- selectedRows = getRowSelection(MSG_OUTPUT_MODE_NONE);
- checkSelection(selectedRows);
- }
+ selectMode(LOC_SELECT_SELECTION_MODE, MSG_OPTION_SELECTION_NONE);
- /**
- * Checks single and multiple row selection in selection-mode "single".
- * Checks that only first selected row is selected right.
- */
- @Test
- public void testSelectionModeSingle() {
- selectMode(LOC_SELECT_SELECTION_MODE, MSG_OPTION_SELECTION_SINGLE);
+ rows = getRowSelection(MSG_INPUT_MULTIPLE_ROWS);
+ multiSelection(rows);
+ selectedRows = getRowSelection(MSG_OUTPUT_MODE_NONE);
+ checkSelection(selectedRows);
+ }
- int[] rows, selectedRows;
+ /**
+ * Checks single and multiple row selection in selection-mode "single".
+ * Checks that only first selected row is selected right.
+ */
+ @Test
+ public void testSelectionModeSingle() {
+ selectMode(LOC_SELECT_SELECTION_MODE, MSG_OPTION_SELECTION_SINGLE);
- rows = getRowSelection(MSG_INPUT_SINGLE_ROW);
- multiSelection(rows);
- selectedRows = getRowSelection(MSG_OUTPUT_SINGLE_ROW_IN_SINGLE_MODE);
- checkSelection(selectedRows);
+ int[] rows, selectedRows;
- loadPage();
+ rows = getRowSelection(MSG_INPUT_SINGLE_ROW);
+ multiSelection(rows);
+ selectedRows = getRowSelection(MSG_OUTPUT_SINGLE_ROW_IN_SINGLE_MODE);
+ checkSelection(selectedRows);
- selectMode(LOC_SELECT_SELECTION_MODE, MSG_OPTION_SELECTION_SINGLE);
+ loadPage();
- rows = getRowSelection(MSG_INPUT_MULTIPLE_ROWS);
- multiSelection(rows);
- selectedRows = getRowSelection(MSG_OUTPUT_MULTIPLE_ROWS_IN_SINGLE_MODE);
- checkSelection(selectedRows);
- }
+ selectMode(LOC_SELECT_SELECTION_MODE, MSG_OPTION_SELECTION_SINGLE);
- /**
- * Checks single and multiple row selection in selection-mode "multi".
- * Checks that all selected rows will be selected right.
- */
- @Test
- public void testSelectionModeMulti() {
- selectMode(LOC_SELECT_SELECTION_MODE, MSG_OPTION_SELECTION_MULTI);
+ rows = getRowSelection(MSG_INPUT_MULTIPLE_ROWS);
+ multiSelection(rows);
+ selectedRows = getRowSelection(MSG_OUTPUT_MULTIPLE_ROWS_IN_SINGLE_MODE);
+ checkSelection(selectedRows);
+ }
- int[] rows, selectedRows;
+ /**
+ * Checks single and multiple row selection in selection-mode "multi".
+ * Checks that all selected rows will be selected right.
+ */
+ @Test
+ public void testSelectionModeMulti() {
+ selectMode(LOC_SELECT_SELECTION_MODE, MSG_OPTION_SELECTION_MULTI);
- rows = getRowSelection(MSG_INPUT_SINGLE_ROW);
- multiSelection(rows);
- selectedRows = getRowSelection(MSG_OUTPUT_SINGLE_ROW_IN_MULTI_MODE);
- checkSelection(selectedRows);
+ int[] rows, selectedRows;
- loadPage();
+ rows = getRowSelection(MSG_INPUT_SINGLE_ROW);
+ multiSelection(rows);
+ selectedRows = getRowSelection(MSG_OUTPUT_SINGLE_ROW_IN_MULTI_MODE);
+ checkSelection(selectedRows);
- selectMode(LOC_SELECT_SELECTION_MODE, MSG_OPTION_SELECTION_MULTI);
+ loadPage();
- rows = getRowSelection(MSG_INPUT_MULTIPLE_ROWS);
- multiSelection(rows);
- selectedRows = getRowSelection(MSG_OUTPUT_MULTIPLE_ROWS_IN_MULTI_MODE);
- checkSelection(selectedRows);
- }
+ selectMode(LOC_SELECT_SELECTION_MODE, MSG_OPTION_SELECTION_MULTI);
- private void checkSelection(int[] rows) {
- checkSelection(rows, true);
- checkSelection(rows, false);
- }
+ rows = getRowSelection(MSG_INPUT_MULTIPLE_ROWS);
+ multiSelection(rows);
+ selectedRows = getRowSelection(MSG_OUTPUT_MULTIPLE_ROWS_IN_MULTI_MODE);
+ checkSelection(selectedRows);
+ }
- private void multiSelection(int[] rows) {
- int column = 2;
+ private void checkSelection(int[] selectedRows) {
+ if (rows == -1) {
+ rows = getJQueryCount(LOC_TR_SELECTED);
+ }
- for (int i = 0; i < rows.length; i++) {
- final int row = rows[i];
- String cell = format(LOC_TD_PREFORMATTED, row, column);
+ int[] notSelectedRows = new int[rows];
- if (i > 0) {
- selenium.controlKeyDown();
- }
+ // create an array with all rows
+ for (int i = 0; i < rows; i++) {
+ notSelectedRows[i] = i + 1;
+ }
- selenium.click(cell);
+ // create an array with not selected rows
+ for (int row : selectedRows) {
+ notSelectedRows = ArrayUtils.removeElement(notSelectedRows, row);
+ }
- if (i > 0) {
- selenium.controlKeyUp();
- }
- }
- }
+ for (final int row : selectedRows) {
+ Wait.timeout(3000).interval(100).failWith(format("Row nr. {0} should be selected.", row)).until(
+ new Condition() {
+ public boolean isTrue() {
+ return selenium.isElementPresent(format(LOC_TR_SELECTED, row));
+ }
+ });
+ }
+ for (final int row : notSelectedRows) {
+ Wait.timeout(3000).interval(100).failWith(format("Row nr. {0} should not be selected.", row)).until(
+ new Condition() {
+ public boolean isTrue() {
+ return !selenium.isElementPresent(format(LOC_TR_SELECTED, row));
+ }
+ });
+ }
+ }
- private void checkSelection(int[] rows, boolean positiveComparison) {
+ private void multiSelection(int[] rows) {
+ int column = 2;
- final String condition;
+ for (int i = 0; i < rows.length; i++) {
+ final int row = rows[i];
+ String cell = format(LOC_TD_PREFORMATTED, row, column);
- if (rows.length == 0) {
- condition = "";
- } else {
- String comparison = (positiveComparison) ? "position()=" : "position()!=";
- String conjuction = (positiveComparison) ? " or " : " and ";
- condition = " and (" + comparison + StringUtils.join(ArrayUtils.toObject(rows), conjuction + comparison)
- + ")";
- }
+ if (i > 0) {
+ selenium.controlKeyDown();
+ }
- final int expectedCount = (positiveComparison) ? rows.length : 0;
+ selenium.click(cell);
- waitGuiInteraction.timeout(2000).failWith(
- "In spite of waiting for GUI rendering finish there is wrong number of selected rows").until(
- new Condition() {
- public boolean isTrue() {
- return expectedCount == selenium.getXpathCount(format(LOC_TR_SELECTED, condition)).intValue();
- }
- });
- }
+ if (i > 0) {
+ selenium.controlKeyUp();
+ }
+ }
+ }
- private int[] getRowSelection(String message) {
- String[] tokens = StringUtils.splitPreserveAllTokens(message, ',');
- int[] rows = new int[tokens.length];
+ private int[] getRowSelection(String message) {
+ String[] tokens = StringUtils.splitPreserveAllTokens(message, ',');
+ int[] rows = new int[tokens.length];
- for (int i = 0; i < tokens.length; i++) {
- rows[i] = Integer.valueOf(tokens[i]);
- }
+ for (int i = 0; i < tokens.length; i++) {
+ rows[i] = Integer.valueOf(tokens[i]);
+ }
- return rows;
- }
+ return rows;
+ }
}
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/SortingTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/SortingTestCase.java 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/extendedDataTable/SortingTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
@@ -31,6 +31,7 @@
public class SortingTestCase extends AbstractExtendedDataTableTestCase {
private final String[] LOC_TH_SORTING_TESTS = new String[] { LOC_TH_STATE, LOC_TH_CAPITAL };
+ private final String[] LOC_TH_LABELS = new String[] { LOC_SPAN_STATE, LOC_SPAN_CAPITAL };
private final String LOC_SELECT_SORT_MODE = getLoc("SELECT_SORT_MODE");
private final String MSG_OPTION_SORT_SINGLE = getMsg("OPTION_SORT_SINGLE");
@@ -46,8 +47,10 @@
for (String columnHeader : LOC_TH_SORTING_TESTS) {
// two iterations -- one for ascending and one for descending order
+ String columnText = columnHeader.equals(LOC_TH_STATE) ? LOC_SPAN_STATE : LOC_SPAN_CAPITAL;
+
for (int i = 0; i < 2; i++) {
- selenium.click(columnHeader);
+ selenium.click(columnText);
waitForSplash();
String columnPreformatted = preformatColumn(columnHeader);
@@ -71,12 +74,12 @@
// two iterations -- one for ascending and one for descending order
for (int i = 0; i < 2; i++) {
- selenium.click(LOC_TH_SORTING_TESTS[0]);
+ selenium.click(LOC_TH_LABELS[0]);
waitForSplash();
-
+
// two iterations -- one for ascending and one for descending order
for (int j = 0; j < 2; j++) {
- selenium.click(LOC_TH_SORTING_TESTS[1]);
+ selenium.click(LOC_TH_LABELS[1]);
waitForSplash();
checkSortingForColumnOrder(columnsPreformatted);
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/repeat/RepeatTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/repeat/RepeatTestCase.java 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/repeat/RepeatTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
@@ -48,7 +48,7 @@
*/
@Test
public void functionalTest() {
- int rows = selenium.getXpathCount(format(LOC_INPUT_PROPOSED_PRICE_PREFORMATTED, 0)).intValue();
+ int rows = getJQueryCount(format(LOC_INPUT_PROPOSED_PRICE_PREFORMATTED, 0));
String[] grossMargins = new String[rows];
@@ -86,7 +86,7 @@
}
// select some option in reason
- int options = selenium.getXpathCount(locSelectReason + "/*[@value]").intValue();
+ int options = getJQueryCount(locSelectReason + "/*[@value]");
assertTrue(options > 0);
selenium.select(locSelectReason, format("index={0}", row % options));
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/tableFiltering/TableFilteringTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/tableFiltering/TableFilteringTestCase.java 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/tableFiltering/TableFilteringTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
@@ -141,7 +141,7 @@
String statePrefix = selenium.getValue(LOC_INPUT_STATE);
String capitalPrefix = selenium.getValue(LOC_INPUT_CAPITAL);
- int rows = selenium.getXpathCount(format(LOC_TD_STATE_PREFORMATTED, 0)).intValue();
+ int rows = getJQueryCount(format(LOC_TD_STATE_PREFORMATTED, 0));
for (int row = 1; row <= rows; row++) {
if (statePrefix.length() > 0) {
@@ -159,7 +159,7 @@
String statePrefix = selenium.getValue(LOC_INPUT_STATE);
String selectedTimezone = selenium.getText(LOC_OPTION_SELECTED_TIMEZONE);
- int rows = selenium.getXpathCount(format(LOC_TD_STATE_PREFORMATTED, 0)).intValue();
+ int rows = getJQueryCount(format(LOC_TD_STATE_PREFORMATTED, 0));
for (int row = 1; row <= rows; row++) {
if (statePrefix.length() > 0) {
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/tableSorting/TableSortingTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/tableSorting/TableSortingTestCase.java 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/tableSorting/TableSortingTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
@@ -126,12 +126,11 @@
});
selenium.select(locSelectColumn, msgColumnName);
-
selenium.select(locSelectOrder, msgColumnOrder);
-
+
Wait.failWith("Sort table button never got enabled").until(new Condition() {
public boolean isTrue() {
- return !selenium.isElementPresent(format("{0}/@disabled", LOC_BUTTON_SORT));
+ return !selenium.isElementPresent(format("{0}[disabled]", LOC_BUTTON_SORT));
}
});
}
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/tree/TreeTestCase.java
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/tree/TreeTestCase.java 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/java/org/jboss/richfaces/integrationTest/tree/TreeTestCase.java 2009-11-12 12:07:03 UTC (rev 15871)
@@ -92,64 +92,64 @@
abstractTestTree(2);
}
-// /**
-// * Tests the "View Source" in the first example -- Ajax switch type. It
-// * checks that the source code is not visible, clicks on the link, and
-// * checks 8 lines of source code.
-// */
-// @Test
-// public void testAjaxExampleSource() {
-// String[] strings = new String[] {
-// "<ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"",
-// "<h:form>",
-// "<rich:tree style=\"width:300px\" value=\"#{library.data}\" var=\"item\" nodeFace=\"#{item.type}\">",
-// "<rich:treeNode type=\"artist\" iconLeaf=\"/images/tree/singer.gif\" icon=\"/images/tree/singer.gif\">",
-// "<h:outputText value=\"#{item.name}\" />", "</rich:treeNode>",
-// "<rich:treeNode type=\"album\" iconLeaf=\"/images/tree/disc.gif\" icon=\"/images/tree/disc.gif\">",
-// "<rich:treeNode type=\"song\" iconLeaf=\"/images/tree/song.gif\" icon=\"/images/tree/song.gif\">", };
-//
-// abstractTestSource(1, "View Source", strings);
-// }
-//
-// /**
-// * Tests the "View Source" in the second example -- client switch type. It
-// * checks that the source code is not visible, clicks on the link, and
-// * checks 8 lines of source code.
-// */
-// @Test
-// public void testClientExampleSource() {
-// String[] strings = new String[] {
-// "<ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"",
-// "<h:form>",
-// "<rich:tree switchType=\"client\" style=\"width:300px\" value=\"#{library.data}\" var=\"item\" nodeFace=\"#{item.type}\">",
-// "<rich:treeNode type=\"artist\" iconLeaf=\"/images/tree/singer.gif\" icon=\"/images/tree/singer.gif\">",
-// "<h:outputText value=\"#{item.name}\" />", "</rich:treeNode>",
-// "<rich:treeNode type=\"album\" iconLeaf=\"/images/tree/disc.gif\" icon=\"/images/tree/disc.gif\">",
-// "<rich:treeNode type=\"song\" iconLeaf=\"/images/tree/song.gif\" icon=\"/images/tree/song.gif\">", };
-//
-// abstractTestSource(2, "View Source", strings);
-// }
-//
-// /**
-// * Tests the "View Source" in the third example -- server switch type. It
-// * checks that the source code is not visible, clicks on the link, and
-// * checks 8 lines of source code.
-// */
-// @Test
-// public void testServerExampleSource() {
-// String[] strings = new String[] {
-// "<ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"",
-// "<h:form>",
-// "<rich:tree switchType=\"server\" style=\"width:300px\" value=\"#{library.data}\" var=\"item\" nodeFace=\"#{item.type}\">",
-// "<rich:treeNode type=\"artist\" iconLeaf=\"/images/tree/singer.gif\" icon=\"/images/tree/singer.gif\">",
-// "<h:outputText value=\"#{item.name}\" />", "</rich:treeNode>",
-// "<rich:treeNode type=\"album\" iconLeaf=\"/images/tree/disc.gif\" icon=\"/images/tree/disc.gif\">",
-// "<rich:treeNode type=\"song\" iconLeaf=\"/images/tree/song.gif\" icon=\"/images/tree/song.gif\">", };
-//
-// abstractTestSource(3, "View Source", strings);
-// }
+ /**
+ * Tests the "View Source" in the first example -- Ajax switch type. It
+ * checks that the source code is not visible, clicks on the link, and
+ * checks 8 lines of source code.
+ */
+ @Test
+ public void testAjaxExampleSource() {
+ String[] strings = new String[] {
+ "<ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"",
+ "<h:form>",
+ "<rich:tree style=\"width:300px\" value=\"#{library.data}\" var=\"item\" nodeFace=\"#{item.type}\">",
+ "<rich:treeNode type=\"artist\" iconLeaf=\"/images/tree/singer.gif\" icon=\"/images/tree/singer.gif\">",
+ "<h:outputText value=\"#{item.name}\" />", "</rich:treeNode>",
+ "<rich:treeNode type=\"album\" iconLeaf=\"/images/tree/disc.gif\" icon=\"/images/tree/disc.gif\">",
+ "<rich:treeNode type=\"song\" iconLeaf=\"/images/tree/song.gif\" icon=\"/images/tree/song.gif\">", };
+ abstractTestSource(1, "View Source", strings);
+ }
+
/**
+ * Tests the "View Source" in the second example -- client switch type. It
+ * checks that the source code is not visible, clicks on the link, and
+ * checks 8 lines of source code.
+ */
+ @Test
+ public void testClientExampleSource() {
+ String[] strings = new String[] {
+ "<ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"",
+ "<h:form>",
+ "<rich:tree switchType=\"client\" style=\"width:300px\" value=\"#{library.data}\" var=\"item\" nodeFace=\"#{item.type}\">",
+ "<rich:treeNode type=\"artist\" iconLeaf=\"/images/tree/singer.gif\" icon=\"/images/tree/singer.gif\">",
+ "<h:outputText value=\"#{item.name}\" />", "</rich:treeNode>",
+ "<rich:treeNode type=\"album\" iconLeaf=\"/images/tree/disc.gif\" icon=\"/images/tree/disc.gif\">",
+ "<rich:treeNode type=\"song\" iconLeaf=\"/images/tree/song.gif\" icon=\"/images/tree/song.gif\">", };
+
+ abstractTestSource(2, "View Source", strings);
+ }
+
+ /**
+ * Tests the "View Source" in the third example -- server switch type. It
+ * checks that the source code is not visible, clicks on the link, and
+ * checks 8 lines of source code.
+ */
+ @Test
+ public void testServerExampleSource() {
+ String[] strings = new String[] {
+ "<ui:composition xmlns=\"http://www.w3.org/1999/xhtml\"",
+ "<h:form>",
+ "<rich:tree switchType=\"server\" style=\"width:300px\" value=\"#{library.data}\" var=\"item\" nodeFace=\"#{item.type}\">",
+ "<rich:treeNode type=\"artist\" iconLeaf=\"/images/tree/singer.gif\" icon=\"/images/tree/singer.gif\">",
+ "<h:outputText value=\"#{item.name}\" />", "</rich:treeNode>",
+ "<rich:treeNode type=\"album\" iconLeaf=\"/images/tree/disc.gif\" icon=\"/images/tree/disc.gif\">",
+ "<rich:treeNode type=\"song\" iconLeaf=\"/images/tree/song.gif\" icon=\"/images/tree/song.gif\">", };
+
+ abstractTestSource(3, "View Source", strings);
+ }
+
+ /**
* Tests selected tree. First it tries to expand "Chris Rea" node, checks
* its only child node, verifies that child's icon is displayed and expands
* it. Then it checks the number of nodes in "Chris Rea/The Road To Hell"
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/ajaxValidator/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/ajaxValidator/locators.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/ajaxValidator/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,4 +1,4 @@
-VALIDATION_MESSAGE_RELATIVE=//input[@id\='{0}']/../../td[3]/*[1][@class\='rich-message']
+VALIDATION_MESSAGE_RELATIVE=jquery=fieldset tr:has(input[id={0}]) span[class=rich-message]
INPUT_NAME=ajaxValidatorForm\:name
INPUT_AGE=ajaxValidatorForm\:age
INPUT_HIBERNATE_NAME=ajaxValidatorForm2\:name
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/beanValidator/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/beanValidator/locators.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/beanValidator/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,6 +1,6 @@
-FIELDSET_HEADER=//legend[text()\='Title']
-BUTTON_SUBMIT=//input[@type\='button' and @value\='Submit']
-VALIDATION_MESSAGE_RELATIVE=//input[@id\='{0}']/../../td[3]/*[1][@class\='rich-message']
+FIELDSET_HEADER=jquery=fieldset > legend
+BUTTON_SUBMIT=jquery=input[value=Submit]
+VALIDATION_MESSAGE_RELATIVE=jquery=fieldset tr:has(input[id={0}]) span[class=rich-message]
INPUT_NAME=beanValidatorForm\:name
INPUT_AGE=beanValidatorForm\:age
INPUT_EMAIL=beanValidatorForm\:email
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/columns/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/columns/locators.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/columns/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,3 +1,3 @@
-TABLE=//form/*[contains(@class,'rich-table')]
-TH_PREFORMATTED=//*[contains(@class,'rich-table-subheadercell')]{0,choice,0\#|1\#[{0}]}
-TD_PREFORMATTED=//*[contains(@class,'rich-table-row')]{0,choice,0\#|1\#[{0}]}/*[contains(@class,'rich-table-cell')]{1,choice,0\#|1\#[{1}]}
+TABLE=jquery=table.rich-table
+TH_PREFORMATTED=jquery\=th.rich-table-subheadercell{0,choice,-1\#|0\#\:nth-child({0})}
+TD_PREFORMATTED=jquery\=tr.rich-table-row{0,choice,0\#|1\#\:nth-child({0})} > td{1,choice,0\#|1\#\:nth-child({1})}
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/commandButton/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/commandButton/locators.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/commandButton/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,3 +1,3 @@
-INPUT_TEXT=//input[@type\='text']
-BUTTON_SAY_HELLO=//input[@type\='button']
-OUTPUT_TEXT=//*[@id\='out']
+INPUT_TEXT=jquery=input[type=text]
+BUTTON_SAY_HELLO=jquery=input[type=button]
+OUTPUT_TEXT=jquery=span#out
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/commandLink/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/commandLink/locators.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/commandLink/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,3 +1,3 @@
-INPUT_TEXT=//input[@type\='text']
-LINK_SAY_HELLO=//a[text()\='Say Hello']
-OUTPUT_TEXT=//*[@id\='out']
+INPUT_TEXT=jquery=input[type=text]
+LINK_SAY_HELLO=jquery=table.gridhello a
+OUTPUT_TEXT=jquery=span#out
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/data-iteration--locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/data-iteration--locators.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/data-iteration--locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,7 +1,7 @@
-data-table-common--table=//form/*[contains(@class,'rich-table')]
-data-scroller--button--first-page=//*[contains(@class,'rich-datascr')][1]//*[contains(@class,'rich-dtascroller-table')]//*[contains(@class,'rich-datascr-button')][1]
-data-scroller--button--last-page=//*[contains(@class,'rich-datascr')][1]//*[contains(@class,'rich-dtascroller-table')]//*[contains(@class,'rich-datascr-button')][6]
-data-scroller--button--previous-page=//*[contains(@class,'rich-datascr')][1]//*[contains(@class,'rich-dtascroller-table')]//*[contains(@class,'rich-datascr-button')][2]
-data-scroller--button--next-page=//*[contains(@class,'rich-datascr')][1]//*[contains(@class,'rich-dtascroller-table')]//*[contains(@class,'rich-datascr-button')][5]
-data-scroller--button--numbered-page-preformatted=//*[contains(@class,'rich-datascr')][1]//*[contains(@class,'rich-dtascroller-table')]//*[contains(@class,'rich-datascr-act') or contains(@class,'rich-datascr-inact')]{0,choice,0\#|1\#[{0}]}
-data-scroller--output--active-page=//*[contains(@class,'rich-datascr')][1]//*[contains(@class,'rich-datascr-act')]
+data-table-common--table=jquery=form table.rich-table
+data-scroller--button--first-page=jquery=div[class*=rich-datascr]:eq(0) > table td[class*=rich-datascr-button]:eq(0)
+data-scroller--button--last-page=jquery=div[class*=rich-datascr]:eq(0) > table td[class*=rich-datascr-button]:eq(5)
+data-scroller--button--previous-page=jquery=div[class*=rich-datascr]:eq(0) > table td[class*=rich-datascr-button]:eq(1)
+data-scroller--button--next-page=jquery=div[class*=rich-datascr]:eq(0) > table td[class*=rich-datascr-button]:eq(4)
+data-scroller--button--numbered-page-preformatted=jquery\=div[class*\=rich-datascr]\:eq(0) > table td{0,choice,-1\#|0\#\:textEquals({0})}
+data-scroller--output--active-page=jquery=td[class*=rich-datascr-act]
\ No newline at end of file
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataFilterSlider/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataFilterSlider/locators.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataFilterSlider/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,7 +1,8 @@
-FIELDSET_HEADER=//legend[text()\='DataFilterSlider example']
-TD_MILEAGE_PREFORMATTED=//*[contains(@class,'rich-table-row')]{0,choice,0\#|1\#[{0}]}/*[contains(@class,'rich-table-cell')][4]
-TD_BRAND_PREFORMATTED=//*[contains(@class,'rich-table-row')]{0,choice,0\#|1\#[{0}]}/*[contains(@class,'rich-table-cell')][1]
-LINK_BRAND_PREFORMATTED=//a[text()\='{0}']
-INPUT_MAX_PRICE=//*[@type\='text' and contains(@class,'rich-dataFilterSlider-input-field')]
-DIV_SLIDER_HANDLE=//*[contains(@class,'rich-dataFilterSlider-handle')]
-DIV_SLIDER_TRACK=//*[contains(@class,'rich-dataFilterSlider-track')]
+FIELDSET_HEADER=jquery=fieldset > legend
+TABLE_ROWS=jquery=tr[class*=rich-table-row]
+TD_MILEAGE_PREFORMATTED=jquery\=tr.rich-table-row{0,choice,0\#|1\#\:nth-child({0})} > td\:eq(3)
+TD_BRAND_PREFORMATTED=jquery\=tr.rich-table-row{0,choice,0\#|1\#\:nth-child({0})} > td\:eq(0)
+LINK_BRAND_PREFORMATTED=jquery=td.column-index > a:textEquals({0})
+INPUT_MAX_PRICE=jquery=input.rich-dataFilterSlider-input-field
+DIV_SLIDER_HANDLE=jquery=div.rich-dataFilterSlider-handle
+DIV_SLIDER_TRACK=jquery=div.rich-dataFilterSlider-track
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataGrid/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataGrid/locators.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataGrid/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1 +1 @@
-TD_GRID_PREFORMATTED=//*[contains(@class,'rich-table-row')]{0,choice,0\#|1\#[{0}]}/*[contains(@class,'rich-table-cell')]{1,choice,0\#|1\#[{1}]}
+TD_GRID_PREFORMATTED=jquery\=tr.rich-table-row{0,choice,0\#|1\#\:nth-child({0})} > td{1,choice,0\#|1\#\:nth-child({1})}
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataList/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataList/locators.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataList/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1 +1 @@
-FIELDSET_HEADER=//legend[text()\='Example']
+FIELDSET_HEADER=jquery=fieldset > legend
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataScroller/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataScroller/locators.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataScroller/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1 +1 @@
-FIELDSET_HEADER=//legend[text()\='Table pagination using Data Scroller example']
+FIELDSET_HEADER=jquery=fieldset > legend
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataTable/locators-DataTableTestCase.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataTable/locators-DataTableTestCase.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataTable/locators-DataTableTestCase.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,2 +1,2 @@
-FIELDSET_HEADER=//legend[text()\='DataTable Column/ColumnGroup example']
-TABLE=//legend[text()\='DataTable Column/ColumnGroup example']/../div/table
+FIELDSET_HEADER=jquery=legend:textEquals(DataTable Column/ColumnGroup example)
+TABLE=jquery=table.rich-table
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataTable/locators-EditTableWithModalPanelTestCase.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataTable/locators-EditTableWithModalPanelTestCase.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataTable/locators-EditTableWithModalPanelTestCase.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,9 +1,9 @@
-LINK_EDIT=//form/*[contains(@class,'rich-table')]/*/*[contains(@class,'rich-table-row')][{0}]/*[contains(@class,'rich-table-cell')][7]/*[contains(@id,'editlink')]
-LINK_DELETE=//form/*[contains(@class,'rich-table')]/*/*[contains(@class,'rich-table-row')][{0}]/*[contains(@class,'rich-table-cell')][7]/*[contains(@id,'deletelink')]
-OUTPUT_PRICE_PREFORMATTED=//form/*[contains(@class,'rich-table')]/*/*[contains(@class,'rich-table-row')][{0}]/*[contains(@class,'rich-table-cell')][3]
-INPUT_PRICE=//*[text()\='Price']/../*[2]/*[@type\='text']
-BUTTON_EDIT_STORE=//*[@type\='button' and @value\='Store']
-BUTTON_DELETE_YES=//*[@type\='button' and @value\='Yes']
-BUTTON_DELETE_CANCEL=//*[@type\='button' and @value\='Cancel']
-PANEL_EDIT=//*[@id\='editPanelContainer']
-PANEL_DELETE=//*[@id\='deletePanelContainer']
\ No newline at end of file
+LINK_EDIT=jquery=tr[class*=rich-table-row]:nth-child({0}) > td:eq(6) > a[id$=editlink]
+LINK_DELETE=jquery=tr[class*=rich-table-row]:nth-child({0}) > td:eq(6) > a[id$=deletelink]
+OUTPUT_PRICE_PREFORMATTED=jquery=tr[class*=rich-table-row]:nth-child({0}) > td:eq(2)
+INPUT_PRICE=jquery=table#editPanelContentTable tr tr tr:eq(2) input
+BUTTON_EDIT_STORE=jquery=table#editPanelContentTable input[value=Store]
+BUTTON_DELETE_YES=jquery=#deletePanelContainer input[value=Yes]
+BUTTON_DELETE_CANCEL=jquery=#deletePanelContainer input[value=Cancel]
+PANEL_EDIT=editPanelContainer
+PANEL_DELETE=deletePanelContainer
\ No newline at end of file
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataTable/locators-ExtendedDataModelTestCase.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataTable/locators-ExtendedDataModelTestCase.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataTable/locators-ExtendedDataModelTestCase.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,4 +1,4 @@
-TD_HIGHEST_BID=//*[contains(@id,'auction\:tb')]/*[contains(@class,'rich-table-row')][7]/*[contains(@class,'rich-table-cell')][2]
-TD_CELL_AMOUNT=//*[contains(@id,'auction\:tb')]/*[contains(@class,'rich-table-row')][7]/*[contains(@class,'rich-table-cell')][4]
-INPUT_YOUR_BID=//*[contains(@id,'auction\:tb')]/*[contains(@class,'rich-table-row')][7]/*[contains(@class,'rich-table-cell')][3]/*[@type\='text']
-LINK_PLACE_BID=//*[contains(@id,'auction\:tb')]/*[contains(@class,'rich-table-row')][7]/*[contains(@class,'rich-table-cell')][3]/*[text()\='Place a bid\!']
+TD_HIGHEST_BID=jquery=tr[class*=rich-table-row]:eq(6) > td:eq(1)
+TD_CELL_AMOUNT=jquery=tr[class*=rich-table-row]:eq(6) > td:eq(3)
+INPUT_YOUR_BID=jquery=tr[class*=rich-table-row]:eq(6) > td:eq(2) > input
+LINK_PLACE_BID=jquery=tr[class*=rich-table-row]:eq(6) > td:eq(2) > a
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataTable/locators-ModifiableDataModelTestCase.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataTable/locators-ModifiableDataModelTestCase.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/dataTable/locators-ModifiableDataModelTestCase.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,4 +1,4 @@
-TH_KEY=//*[contains(@id,'column1header') and contains(@class,'rich-table-subheadercell')]
-TD_KEY_PREFORMATTED=//form/*[contains(@class,'rich-table')]/*/*[contains(@class,'rich-table-row')]{0,choice,0\#|1\#[{0}]}/*[contains(@class,'rich-table-cell')][2]
-INPUT_ASSIGNEE=//*[contains(@id,'column2header') and contains(@class,'rich-table-subheadercell')]/*/*[@type\='text']
-TD_ASSIGNEE_PREFORMATTED=//form/*[contains(@class,'rich-table')]/*/*[contains(@class,'rich-table-row')][1]/*[contains(@class,'rich-table-cell')][3]
+TH_KEY=jquery=th[id$=column1header]
+TD_KEY_PREFORMATTED=jquery\=tr[class*\=rich-table-row]{0,choice,0\#|1\#\:nth-child({0})} > td\:eq(1)
+INPUT_ASSIGNEE=jquery=th[id$=column2header] input
+TD_ASSIGNEE_PREFORMATTED=jquery=tr[class*=rich-table-row]:eq(0) > td:eq(2)
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators-DraggingTestCase.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators-DraggingTestCase.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators-DraggingTestCase.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,4 +1,3 @@
-DIV_DROP_ZONE_LEFT_RELATIVE={0}/../../../*[contains(@class,'extdt-hdrop') and contains(@id,'left')]
-DIV_DROP_ZONE_RIGHT_RELATIVE={0}/../../../*[contains(@class,'extdt-hdrop') and contains(@id,'right')]
-COLUMN_TO_ITS_CONTENT_RELATIVE={0}/*
-IMAGE_SRC_FLAG_PREFORMATTED={0}/*/@src
\ No newline at end of file
+DIV_DROP_ZONE_LEFT_RELATIVE={0} > span:eq(1)
+DIV_DROP_ZONE_RIGHT_RELATIVE={0} > span:eq(2)
+IMAGE_SRC_FLAG_PREFORMATTED={0} img@src
\ No newline at end of file
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators-GroupingTestCase.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators-GroupingTestCase.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators-GroupingTestCase.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,4 +1,4 @@
-DIV_CONTEXT_MENU_FOR_COLUMN_RELATIVE={0}/*[contains(@class,'extdt-menu-div')]
-MENU_ITEM_GROUP_BY_COLUMN=//*[contains(@class,'rich-menu-item-label') and text()\='Group by this column']
-TD_GROUP_PREFORMATTED=//*[contains(@class,'rich-table')]//*[contains(@class,'extdt-group-row')]{0,choice,0\#|1\#[{0}]}/*/text()
-TR_PREFORMATTED=//*[contains(@class,'rich-table')]/*[contains(@id,'table\:tb')]/*[contains(@class,'row')]{0,choice,0\#|1\#[{0}]}
+DIV_CONTEXT_MENU_FOR_COLUMN_RELATIVE={0} div[id$=menuDiv]
+MENU_ITEM_GROUP_BY_COLUMN=jquery=span[class*=rich-menu-item-label]:textEquals(Group by this column)
+TD_GROUP_PREFORMATTED=jquery\=tr[class*\=row]{0,choice,-1\#|0\#\:nth-child({0})}
+TR_PREFORMATTED=jquery\=tr[class*\=row]{0,choice,0\#|1\#\:nth-child({0})}
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators-SelectingTestCase.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators-SelectingTestCase.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators-SelectingTestCase.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,2 +1,2 @@
-TR_SELECTED=//*[contains(@class,'extdt-maindiv')]//*[contains(@class,'rich-extdt-firstrow') and contains(@class,'rich-sdt-row-selected') {0}]
-SELECT_SELECTION_MODE=//*[text()\='Selection Mode\:']/../td[2]/select
+TR_SELECTED=jquery=tr[class*=row][class*=row-selected]{0,choice,0\#|1\#:nth-child({0})}
+SELECT_SELECTION_MODE=jquery=td.top:eq(1) select:eq(1)
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators-SortingTestCase.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators-SortingTestCase.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators-SortingTestCase.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1 +1 @@
-SELECT_SORT_MODE=//*[text()\='Sort Mode\:']/../td[2]/select
+SELECT_SORT_MODE=jquery=td.top:eq(1) select:eq(0)
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/extendedDataTable/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,9 +1,11 @@
-TH_STATE=//*[contains(@class,'extdt-sortable-header') and text()\='State Name']
-TH_CAPITAL=//*[contains(@class,'extdt-sortable-header') and text()\='State Capital']
-TH_TIME_ZONE=//*[contains(@class,'extdt-sortable-header') and text()\='Time Zone']
-TH_FLAG=//*[contains(@class,'extdt-sortable-header') and text()\='Flag']
-TD_PREFORMATTED=//*[contains(@class,'extdt-maindiv')]//*[contains(@class,'rich-extdt-firstrow')]{0,choice,0\#|1\#[{0}]}/*[contains(@class,'rich-extdt-cell')]{1,choice,0\#|1\#[{1}]}
-TABLE_EXTENDED=//*[contains(@class,'extdt-maindiv')]
-TH_RELATIVE={0}/../../..
-INPUT_COLUMN_FILTER=//*[contains(@class,'extdt-maindiv')]//*[contains(@class,'extdt-table-filterrow')]//*[contains(@class,'rich-extdt-subheadercell')][{0}]//*[@type\='text']
-DIV_SPLASH_SCREEN=//*[@class\='extdt-ss-vsbl']
\ No newline at end of file
+TH_STATE=jquery=th:has(span:textEquals(State Name))
+TH_CAPITAL=jquery=th:has(span:textEquals(State Capital))
+TH_TIME_ZONE=jquery=th:has(span:textEquals(Time Zone))
+TH_FLAG=jquery=th:has(span:textEquals(Flag))
+SPAN_STATE=jquery=span:textEquals('State Name')
+SPAN_CAPITAL=jquery=span:textEquals('State Capital')
+SPAN_TIME_ZONE=jquery=span:textEquals('Time Zone')
+TD_PREFORMATTED=jquery\=tr[class*\=row]{0,choice,0\#|1\#\:nth-child({0})} > td{1,choice,0\#|1\#\:nth-child({1})}
+TABLE_EXTENDED=jquery=div[class*=extdt-maindiv]
+INPUT_COLUMN_FILTER=jquery=tr[class*=extdt-table-filterrow] > th:nth-child({0}) input
+DIV_SPLASH_SCREEN=jquery=div[class*=extdt-ss-vsbl]
\ No newline at end of file
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/repeat/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/repeat/locators.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/repeat/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,5 +1,5 @@
-FIELDSET_HEADER=//legend[text()\='Repeat example']
-INPUT_PROPOSED_PRICE_PREFORMATTED=//*[contains(@class,'rich-table')]/tbody/tr{0,choice,0\#|1\#[{0}]}/td[2]/input[@type\='text']
-SELECT_REASON_PREFORMATTED=//*[contains(@class,'rich-table')]/tbody/tr[{0}]/td[4]/*[contains(@id,'reason')]
-OUTPUT_SALES_COST_PREFORMATTED=//*[contains(@class,'rich-table')]/tbody/tr{0,choice,0\#|1\#[{0}]}/td[3]
-OUTPUT_GROSS_MARGIN_PREFORMATTED=//*[contains(@class,'rich-table')]/tbody/tr{0,choice,0\#|1\#[{0}]}/td[5]
+FIELDSET_HEADER=jquery=legend
+INPUT_PROPOSED_PRICE_PREFORMATTED=jquery\=table.rich-table tr{0,choice,0\#|1\#\:nth-child({0})} td\:eq(1) input
+SELECT_REASON_PREFORMATTED=jquery\=table.rich-table tr{0,choice,0\#|1\#\:nth-child({0})} td\:eq(3) select
+OUTPUT_SALES_COST_PREFORMATTED=jquery\=table.rich-table tr{0,choice,0\#|1\#\:nth-child({0})} td\:eq(2)
+OUTPUT_GROSS_MARGIN_PREFORMATTED=jquery\=table.rich-table tr{0,choice,0\#|1\#\:nth-child({0})} td\:eq(4)
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/tableFiltering/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/tableFiltering/locators.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/tableFiltering/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,6 +1,6 @@
-INPUT_STATE=//form/*[contains(@class,'rich-table')]//*[contains(@class,'rich-table-subheadercell')][1]//*[@type\='text']
-INPUT_CAPITAL=//form/*[contains(@class,'rich-table')]//*[contains(@class,'rich-table-subheadercell')][2]//*[@type\='text']
-TD_STATE_PREFORMATTED=//*[contains(@class,'rich-table-row')]{0,choice,0\#|1\#[{0}]}/*[contains(@class,'rich-table-cell')][1]
-TD_CAPITAL_PREFORMATTED=//*[contains(@class,'rich-table-row')]{0,choice,0\#|1\#[{0}]}/*[contains(@class,'rich-table-cell')][2]
-SELECT_TIMEZONE=//form/*[contains(@class,'rich-table')]//*[contains(@class,'rich-table-subheadercell')][2]/*/*
-OPTION_SELECTED_TIMEZONE=//form/*[contains(@class,'rich-table')]//*[contains(@class,'rich-table-subheadercell')][2]/*/*/*[@selected]
\ No newline at end of file
+INPUT_STATE=jquery=table.rich-table th:nth-child(1) input
+INPUT_CAPITAL=jquery=table.rich-table th:nth-child(2) input
+TD_STATE_PREFORMATTED=jquery\=tr.rich-table-row{0,choice,0\#|1\#\:nth-child({0})} > td\:eq(0)
+TD_CAPITAL_PREFORMATTED=jquery\=tr.rich-table-row{0,choice,0\#|1\#\:nth-child({0})} > td\:eq(1)
+SELECT_TIMEZONE=jquery=th[class*=subheadercell]:eq(1) select
+OPTION_SELECTED_TIMEZONE=jquery=th[class*=subheadercell]:eq(1) option[selected]
\ No newline at end of file
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/tableSorting/locators.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/tableSorting/locators.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/tableSorting/locators.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,13 +1,14 @@
# Built-in Sorting
-TH_STATE=//form/*[contains(@class,'rich-table')]//*[contains(@class,'rich-table-subheadercell')][1]
-TH_CAPITAL=//form/*[contains(@class,'rich-table')]//*[contains(@class,'rich-table-subheadercell')][2]
-IMG_SRC_SORT_ICON_RELATIVE={0}//*[contains(@class,'rich-sort-icon')]/@src
-TD_STATE_PREFORMATTED=//*[contains(@class,'rich-table-row')]{0,choice,0\#|1\#[{0}]}/*[contains(@class,'rich-table-cell')][1]
-TD_CAPITAL_PREFORMATTED=//*[contains(@class,'rich-table-row')]{0,choice,0\#|1\#[{0}]}/*[contains(@class,'rich-table-cell')][2]
+TH_STATE=jquery=th[class*=subheadercell]:eq(0)
+TH_CAPITAL=jquery=th[class*=subheadercell]:eq(1)
+IMG_SRC_SORT_ICON_RELATIVE={0} img@src
+TD_STATE_PREFORMATTED=jquery\=tr[class*\=rich-table-row]{0,choice,0\#|1\#\:nth-child({0})} > td\:eq(0)
+TD_CAPITAL_PREFORMATTED=jquery\=tr[class*\=rich-table-row]{0,choice,0\#|1\#\:nth-child({0})} > td\:eq(1)
+
# External Sorting
-SELECT_COLUMN_PREFORMATTED=//*[@class\='equals' and text()\='{0}']/../*[2]/*
-SELECT_ORDER_PREFORMATTED=//*[@class\='equals' and text()\='{0}']/../*[3]/*
-BUTTON_SORT=//*[@type\='button' and @value\='Sort Table']
-TD_PREFORMATTED_1=//*[contains(@class,'rich-table-row')]{0,choice,0\#|1\#[{0}]}/*[contains(@class,'rich-table-cell')][1]
-TD_PREFORMATTED_2=//*[contains(@class,'rich-table-row')]{0,choice,0\#|1\#[{0}]}/*[contains(@class,'rich-table-cell')][2]
-TD_PREFORMATTED_3=//*[contains(@class,'rich-table-row')]{0,choice,0\#|1\#[{0}]}/*[contains(@class,'rich-table-cell')][4]
+SELECT_COLUMN_PREFORMATTED=jquery=form tr:has(td:textEquals({0})) select:eq(0)
+SELECT_ORDER_PREFORMATTED=jquery=form tr:has(td:textEquals({0})) select:eq(1)
+BUTTON_SORT=jquery=input[value=Sort Table]
+TD_PREFORMATTED_1=jquery\=tr[class*\=rich-table-row]{0,choice,0\#|1\#\:nth-child({0})} > td\:eq(0)
+TD_PREFORMATTED_2=jquery\=tr[class*\=rich-table-row]{0,choice,0\#|1\#\:nth-child({0})} > td\:eq(1)
+TD_PREFORMATTED_3=jquery\=tr[class*\=rich-table-row]{0,choice,0\#|1\#\:nth-child({0})} > td\:eq(3)
Modified: branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/tree/messages.properties
===================================================================
--- branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/tree/messages.properties 2009-11-12 03:25:11 UTC (rev 15870)
+++ branches/community/3.3.X/samples/richfaces-demo/functional-test/src/test/resources/org/jboss/richfaces/integrationTest/tree/messages.properties 2009-11-12 12:07:03 UTC (rev 15871)
@@ -1,17 +1,17 @@
# TreeTestCase -- first tab
-NODE_1_1_1_LABEL=Yes Sir, I Can Boogie
-NODE_1_1_2_LABEL=Sorry, i`m A Lady
-NODE_1_1_3_LABEL=A Quien Le Importa
-NODE_1_1_4_LABEL=The Devil Send You To Laredo
-NODE_1_1_5_LABEL=Ni Mas Ni Menos
-NODE_1_1_6_LABEL=Parlez-vous Francais?
-NODE_1_1_7_LABEL=Que Naadie Sepa Mi Sufrir
-NODE_1_1_8_LABEL=Borriquito
-NODE_1_1_9_LABEL=Love Me Please Love Me
-NODE_1_1_10_LABEL=Paloma Blanca
-NODE_1_1_11_LABEL=Me Tienes Desenganada
-NODE_1_1_LABEL=Grand Collection
-CHILDREN_COUNT_1_1=14
+NODE_1_1_1_LABEL=The Road To Hell (Part 1)
+NODE_1_1_2_LABEL=The Road To Hell (Part 2)
+NODE_1_1_3_LABEL=You Must Be Evil
+NODE_1_1_4_LABEL=Texas
+NODE_1_1_5_LABEL=Looking For A Rainbow
+NODE_1_1_6_LABEL=Your Warm And Tender Love
+NODE_1_1_7_LABEL=Daytona
+NODE_1_1_8_LABEL=That`s What They Always Say
+NODE_1_1_9_LABEL=Let`s Dance
+NODE_1_1_10_LABEL=I Just Wanna Be With You
+NODE_1_1_11_LABEL=Tell Me There`s A Heaven
+NODE_1_1_LABEL=The Road To Hell
+CHILDREN_COUNT_1_1=11
CHILDREN_COUNT_TOP=4
16 years, 8 months
JBoss Rich Faces SVN: r15870 - root/docs/trunk/Component_Reference/en-US.
by richfaces-svn-commits@lists.jboss.org
Author: SeanRogers
Date: 2009-11-11 22:25:11 -0500 (Wed, 11 Nov 2009)
New Revision: 15870
Added:
root/docs/trunk/Component_Reference/en-US/Actions.xml
Removed:
root/docs/trunk/Component_Reference/en-US/Action_components.xml
Modified:
root/docs/trunk/Component_Reference/en-US/Book_Info.xml
root/docs/trunk/Component_Reference/en-US/Common_features.xml
root/docs/trunk/Component_Reference/en-US/Component_Reference.xml
root/docs/trunk/Component_Reference/en-US/Containers.xml
root/docs/trunk/Component_Reference/en-US/Functionality_extension.xml
root/docs/trunk/Component_Reference/en-US/Layout_and_appearance.xml
root/docs/trunk/Component_Reference/en-US/Menus_and_toolbars.xml
root/docs/trunk/Component_Reference/en-US/Output_and_messages.xml
root/docs/trunk/Component_Reference/en-US/Panels_and_containers.xml
root/docs/trunk/Component_Reference/en-US/Preface.xml
root/docs/trunk/Component_Reference/en-US/Resources.xml
root/docs/trunk/Component_Reference/en-US/Trees.xml
root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml
Log:
Completed initial reorganising, waiting for feedback on tables and lists
Deleted: root/docs/trunk/Component_Reference/en-US/Action_components.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Action_components.xml 2009-11-12 02:04:17 UTC (rev 15869)
+++ root/docs/trunk/Component_Reference/en-US/Action_components.xml 2009-11-12 03:25:11 UTC (rev 15870)
@@ -1,110 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="chap-Component_Reference-Ajax_basics">
- <title>Ajax basics</title>
- <para>
- This chapter details the basic components that respond to a user action and submit an Ajax request.
- </para>
- <section id="sect-Component_Reference-Ajax_basics-a4jcommandButton">
- <title><a4j:commandButton></title>
- <itemizedlist>
- <listitem>
- <para>
- component-type: <classname>org.ajax4jsf.CommandButton</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- component-family: <classname>javax.faces.Command</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- component-class: <classname>org.ajax4jsf.component.html.HtmlAjaxCommandButton</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- renderer-type: <classname>org.ajax4jsf.components.AjaxCommandButtonRenderer</classname>
- </para>
- </listitem>
- </itemizedlist>
- <para>
- The <classname><a4j:commandButton></classname> is similar to the JavaServer Faces (<acronym>JSF</acronym>) component <classname><h:commandButton></classname>, but additionally includes Ajax support. When the command button is clicked it generates an Ajax form submit, and when a response is received the command button can be dynamically rendered.
- </para>
- <para>
- The <classname><a4j:commandButton></classname> requires only the <code>value</code> and <code>render</code> attributes to function. The <code>value</code> attribute specifies the text of the button and the <code>render</code> attribute specifies which areas are to be updated. The <classname><a4j:commandButton></classname> uses the <code>onclick</code> event instead of the <code>onsubmit</code> event, but otherwise uses all common Ajax attributes as listed in <xref linkend="chap-Component_Reference-Common_Ajax_attributes" />.
- </para>
- <note>
- <title>Note</title>
- <para>
- When attaching a JavaScript function to a <classname><a4j:commandButton></classname> with the help of a <classname><rich:componentControl></classname>, do not use the <code>attachTo</code> attribute of <classname><rich:componentControl></classname>. The attribute adds event handlers using <classname>Event.observe</classname> but <classname><a4j:commandButton></classname> does not include this event.
- </para>
- </note>
- </section>
-
- <section id="sect-Component_Reference-Ajax_basics-a4jcommandLink">
- <title><a4j:commandLink></title>
- <itemizedlist>
- <listitem>
- <para>
- component-type: <classname>org.ajax4jsf.CommandLink</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- component-family: <classname>javax.faces.Command</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- component-class: <classname>org.ajax4jsf.component.html.HtmlAjaxCommandLink</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- renderer-type: <classname>org.ajax4jsf.components.AjaxCommandLinkRenderer</classname>
- </para>
- </listitem>
- </itemizedlist>
- <para>
- The <classname><a4j:commandLink></classname> is similar to the JavaServer Faces (<acronym>JSF</acronym>) component <classname><h:commandLink></classname>, but additionally includes Ajax support. When the command link is clicked it generates an Ajax form submit, and when a response is received the command link can be dynamically rendered.
- </para>
- <para>
- The <classname><a4j:commandLink></classname> requires only the <code>value</code> and <code>render</code> attributes to function. The <code>value</code> attribute specifies the text of the link and the <code>render</code> attribute specifies which areas are to be updated. The <classname><a4j:commandLink></classname> uses the <code>onclick</code> event instead of the <code>onsubmit</code> event, but otherwise uses all common Ajax attributes as listed in <xref linkend="chap-Component_Reference-Common_Ajax_attributes" />.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Ajax_basics-a4jhtmlCommandLink">
- <title><a4j:htmlCommandLink></title>
- <itemizedlist>
- <listitem>
- <para>
- component-type: <classname>org.ajax4jsf.HtmlCommandLink</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- component-family: <classname>javax.faces.Command</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- component-class: <classname>org.ajax4jsf.component.html.HtmlCommandLink</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- renderer-type: <classname>org.ajax4jsf.HtmlCommandLinkRenderer</classname>
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Incomplete
- </para>
- </section>
-
-</chapter>
-
Copied: root/docs/trunk/Component_Reference/en-US/Actions.xml (from rev 15868, root/docs/trunk/Component_Reference/en-US/Action_components.xml)
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Actions.xml (rev 0)
+++ root/docs/trunk/Component_Reference/en-US/Actions.xml 2009-11-12 03:25:11 UTC (rev 15870)
@@ -0,0 +1,152 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Component_Reference-Actions">
+ <title>Actions</title>
+ <para>
+ This chapter details the basic components that respond to a user action and submit an Ajax request.
+ </para>
+ <section id="sect-Component_Reference-Actions-a4jactionParam">
+ <title>a4j:actionParam</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Actions-a4jajax">
+ <title>a4j:ajax</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Actions-a4jajaxListener">
+ <title>a4j:ajaxListener</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Actions-a4jcommandButton">
+ <title><a4j:commandButton></title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ component-type: <classname>org.ajax4jsf.CommandButton</classname>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ component-family: <classname>javax.faces.Command</classname>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ component-class: <classname>org.ajax4jsf.component.html.HtmlAjaxCommandButton</classname>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ renderer-type: <classname>org.ajax4jsf.components.AjaxCommandButtonRenderer</classname>
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ The <classname><a4j:commandButton></classname> is similar to the JavaServer Faces (<acronym>JSF</acronym>) component <classname><h:commandButton></classname>, but additionally includes Ajax support. When the command button is clicked it generates an Ajax form submit, and when a response is received the command button can be dynamically rendered.
+ </para>
+ <para>
+ The <classname><a4j:commandButton></classname> requires only the <code>value</code> and <code>render</code> attributes to function. The <code>value</code> attribute specifies the text of the button and the <code>render</code> attribute specifies which areas are to be updated. The <classname><a4j:commandButton></classname> uses the <code>onclick</code> event instead of the <code>onsubmit</code> event, but otherwise uses all common Ajax attributes as listed in <xref linkend="chap-Component_Reference-Common_Ajax_attributes" />.
+ </para>
+ <note>
+ <title>Note</title>
+ <para>
+ When attaching a JavaScript function to a <classname><a4j:commandButton></classname> with the help of a <classname><rich:componentControl></classname>, do not use the <code>attachTo</code> attribute of <classname><rich:componentControl></classname>. The attribute adds event handlers using <classname>Event.observe</classname> but <classname><a4j:commandButton></classname> does not include this event.
+ </para>
+ </note>
+ </section>
+
+ <section id="sect-Component_Reference-Actions-a4jcommandLink">
+ <title><a4j:commandLink></title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ component-type: <classname>org.ajax4jsf.CommandLink</classname>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ component-family: <classname>javax.faces.Command</classname>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ component-class: <classname>org.ajax4jsf.component.html.HtmlAjaxCommandLink</classname>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ renderer-type: <classname>org.ajax4jsf.components.AjaxCommandLinkRenderer</classname>
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ The <classname><a4j:commandLink></classname> is similar to the JavaServer Faces (<acronym>JSF</acronym>) component <classname><h:commandLink></classname>, but additionally includes Ajax support. When the command link is clicked it generates an Ajax form submit, and when a response is received the command link can be dynamically rendered.
+ </para>
+ <para>
+ The <classname><a4j:commandLink></classname> requires only the <code>value</code> and <code>render</code> attributes to function. The <code>value</code> attribute specifies the text of the link and the <code>render</code> attribute specifies which areas are to be updated. The <classname><a4j:commandLink></classname> uses the <code>onclick</code> event instead of the <code>onsubmit</code> event, but otherwise uses all common Ajax attributes as listed in <xref linkend="chap-Component_Reference-Common_Ajax_attributes" />.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Actions-a4jhtmlCommandLink">
+ <title><a4j:htmlCommandLink></title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ component-type: <classname>org.ajax4jsf.HtmlCommandLink</classname>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ component-family: <classname>javax.faces.Command</classname>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ component-class: <classname>org.ajax4jsf.component.html.HtmlCommandLink</classname>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ renderer-type: <classname>org.ajax4jsf.HtmlCommandLinkRenderer</classname>
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Actions-a4jjsFunction">
+ <title>a4j:jsFunction</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Actions-a4jpoll">
+ <title>a4j:poll</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Actions-a4jpush">
+ <title>a4j:push</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+</chapter>
+
Modified: root/docs/trunk/Component_Reference/en-US/Book_Info.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Book_Info.xml 2009-11-12 02:04:17 UTC (rev 15869)
+++ root/docs/trunk/Component_Reference/en-US/Book_Info.xml 2009-11-12 03:25:11 UTC (rev 15870)
@@ -27,7 +27,7 @@
<year>&YEAR;</year>
<holder>&HOLDER;</holder>
</copyright>
- <!-- FOR PUBLICAN --><xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK: --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <!-- FOR PUBLICAN --><xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK: --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</xi:fallback>
</xi:include>
<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
Modified: root/docs/trunk/Component_Reference/en-US/Common_features.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Common_features.xml 2009-11-12 02:04:17 UTC (rev 15869)
+++ root/docs/trunk/Component_Reference/en-US/Common_features.xml 2009-11-12 03:25:11 UTC (rev 15870)
@@ -2,52 +2,31 @@
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
-<chapter id="chap-Component_Reference-Other_components">
- <title>Other components</title>
+<chapter id="chap-Component_Reference-Common_features">
+ <title>Common features</title>
<para>
Incomplete
</para>
- <section id="sect-Component_Reference-Other_components-a4jmediaOutput">
- <title>a4j:mediaOutput</title>
+ <section id="sect-Component_Reference-Common_features-Positioning_in_popup_components">
+ <title>Positioning in popup components</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Other_components-richhotkey">
- <title>rich:hotkey</title>
+ <section id="sect-Component_Reference-Common_features-Calling_available_JavaScript_methods">
+ <title>Calling available JavaScript methods</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Other_components-richinsert">
- <title>rich:insert</title>
+ <section id="sect-Component_Reference-Common_features-Client_side_macro_substitution">
+ <title>Client-side macro-substitution</title>
<para>
Incomplete
</para>
</section>
-
- <section id="sect-Component_Reference-Other_components-richpaint2D">
- <title>rich:paint2D</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Other_components-richgmap">
- <title>rich:gmap</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Other_components-richvirtualEarth">
- <title>rich:virtualEarth</title>
- <para>
- Incomplete
- </para>
- </section>
</chapter>
Modified: root/docs/trunk/Component_Reference/en-US/Component_Reference.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Component_Reference.xml 2009-11-12 02:04:17 UTC (rev 15869)
+++ root/docs/trunk/Component_Reference/en-US/Component_Reference.xml 2009-11-12 03:25:11 UTC (rev 15870)
@@ -4,13 +4,14 @@
<book status="draft">
<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <!--
+ <!--
<xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- --><xi:include href="Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ --><xi:include href="Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Common_Ajax_attributes.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Common_features.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<part id="part-Component_Reference-a4j_tag_library">
<title>a4j tag library</title>
- <xi:include href="Action_components.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Actions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Resources.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Containers.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Validation.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
Modified: root/docs/trunk/Component_Reference/en-US/Containers.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Containers.xml 2009-11-12 02:04:17 UTC (rev 15869)
+++ root/docs/trunk/Component_Reference/en-US/Containers.xml 2009-11-12 03:25:11 UTC (rev 15870)
@@ -10,6 +10,31 @@
<section id="sect-Component_Reference-Containers-a4jform">
<title><a4j:form></title>
<para>
+ The <classname><a4j:form></classname> builds on the functionality of the JavaServer Faces (<acronym>JSF</acronym>) component <classname><h:form></classname>, adding Ajax capabilities to the form.
+ </para>
+ <note>
+ <title>Note</title>
+ <para>
+ The <acronym>JSF</acronym> component <classname><h:form></classname>, on which the <classname><a4j:form></classname> component is based, had an issue whereby the <classname><h:commandLink></classname> component could not be re-rendered without re-rendering the entire form. <classname><a4j:form></classname> and <classname><a4j:commandLink></classname> fix this issue.
+ </para>
+ </note>
+ <para>
+ The <classname><a4j:form></classname> component can add indirect Ajax support to non-Ajax components on the form by setting <code>ajaxSubmit="true"</code>. It then uses the standard Ajax component attributes and updates components specified with the <code>render</code> attribute.
+ </para>
+ <important>
+ <title>Important</title>
+ <para>
+ <classname><a4j:form></classname> should not use <code>ajaxSubmit="true"</code> if it contains other Ajax-capable components.
+ </para>
+ <para>
+ Additionally, due to security reasons the file upload form element cannot be indirectly made Ajax-capable with <classname><a4j:form></classname>.
+ </para>
+ </important>
+ </section>
+
+ <section id="sect-Component_Reference-Containers-a4jinclude">
+ <title>a4j:include</title>
+ <para>
Incomplete
</para>
</section>
@@ -17,21 +42,40 @@
<section id="sect-Component_Reference-Containers-a4joutputPanel">
<title><a4j:outputPanel></title>
<para>
- Incomplete
+ The <classname><a4j:outputPanel></classname> component is used to group together components in to update them as a whole, rather than having to specify the components individually.
</para>
+ <para>
+ The <code>layout</code> attribute can be used to determine how the component is rendered in <acronym>HTML</acronym>:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <code>layout="inline"</code> is the default behavior, which will render the component as a pair of <code><span></code> tags containing the child components.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>layout="block"</code> will render the component as a pair of <code><div></code> tags containing the child components, which will use any defined <code><div></code> element styles.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>layout="none"</code> will render the component as a pair of <code><span></code> tags with an identifier equal to that of a child component. If the child component is rendered then the <code><span></code> are not included, leaving no markup representing the <classname><a4j:outputPanel></classname> in <acronym>HTML</acronym>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Setting <code>ajaxRendered="true"</code> will cause the <classname><a4j:outputPanel></classname> to be updated with each Ajax response for the page, even when not listed explicitly by the requesting component. This can in turn be overridden by specific attributes on any requesting components.
+ </para>
</section>
<section id="sect-Component_Reference-Containers-a4jregion">
<title><a4j:region></title>
<para>
- Incomplete
+ The <classname><a4j:region></classname> component specifies a part of the document object model (<acronym>DOM</acronym>) tree to be processed on the server. The processing includes data handling during decoding, conversion, validation, and model updating. When not using <classname><a4j:region></classname>, the entire view functions as a region.
</para>
- </section>
-
- <section id="sect-Component_Reference-Containers-a4jinclude">
- <title><a4j:include></title>
<para>
- Incomplete
+ The whole form is still submitted to the server, but only the specified region is processed. Regions can be nested, in which case only the immediate region of the component initiating the request will be processed.
</para>
</section>
Modified: root/docs/trunk/Component_Reference/en-US/Functionality_extension.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Functionality_extension.xml 2009-11-12 02:04:17 UTC (rev 15869)
+++ root/docs/trunk/Component_Reference/en-US/Functionality_extension.xml 2009-11-12 03:25:11 UTC (rev 15870)
@@ -7,61 +7,33 @@
<para>
Incomplete
</para>
- <section id="sect-Component_Reference-Functionality_extension-a4jactionParam">
- <title>a4j:actionParam</title>
+ <section id="sect-Component_Reference-Functionality_extension-richcomponentControl">
+ <title>rich:componentControl</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Functionality_extension-a4jajax">
- <title>a4j:ajax</title>
+ <section id="sect-Component_Reference-Functionality_extension-richgmap">
+ <title>rich:gmap</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Functionality_extension-a4jajaxListener">
- <title>a4j:ajaxListener</title>
+ <section id="sect-Component_Reference-Functionality_extension-richhotkey">
+ <title>rich:hotkey</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Functionality_extension-a4jinclude">
- <title>a4j:include</title>
+ <section id="sect-Component_Reference-Functionality_extension-richvirtualEarth">
+ <title>rich:virtualEarth</title>
<para>
Incomplete
</para>
</section>
-
- <section id="sect-Component_Reference-Functionality_extension-a4jjsFunction">
- <title>a4j:jsFunction</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Functionality_extension-a4jloadScript">
- <title>a4j:loadScript</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Functionality_extension-a4jlog">
- <title>a4j:log</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Functionality_extension-richcomponentControl">
- <title>rich:componentControl</title>
- <para>
- Incomplete
- </para>
- </section>
</chapter>
Modified: root/docs/trunk/Component_Reference/en-US/Layout_and_appearance.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Layout_and_appearance.xml 2009-11-12 02:04:17 UTC (rev 15869)
+++ root/docs/trunk/Component_Reference/en-US/Layout_and_appearance.xml 2009-11-12 03:25:11 UTC (rev 15870)
@@ -7,13 +7,6 @@
<para>
Incomplete
</para>
- <section id="sect-Component_Reference-Layout_and_appearance-a4jloadStyle">
- <title>a4j:loadStyle</title>
- <para>
- Incomplete
- </para>
- </section>
-
<section id="sect-Component_Reference-Layout_and_appearance-richeffect">
<title>rich:effect</title>
<para>
Modified: root/docs/trunk/Component_Reference/en-US/Menus_and_toolbars.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Menus_and_toolbars.xml 2009-11-12 02:04:17 UTC (rev 15869)
+++ root/docs/trunk/Component_Reference/en-US/Menus_and_toolbars.xml 2009-11-12 03:25:11 UTC (rev 15870)
@@ -42,6 +42,109 @@
</para>
</section>
+ <section id="sect-Component_Reference-Menus_and_toolbars-richpanelMenu">
+ <title><rich:panelMenu></title>
+ <para>
+ The <classname><rich:panelMenu></classname> component can be used in conjunction with <classname><rich:panelMenuItem></classname> and <classname><rich:panelMenuGroup></classname> to create an expanding, hierarchical menu. The <classname><rich:panelMenu></classname> component's appearance can be highly customized, and the hierarchy can stretch to any number of sub-levels.
+ </para>
+ <para>
+ The <code>selectedChild</code> attribute is used to point to the name of the currently selected menu item.
+ </para>
+ <para>
+ By default, the event to expand the menu is a mouse click. This can be changed by setting <code>event</code> to specify the preferred event. Several sub-menus can be expanded a once unless the <code>expandSingle</code> is set to <literal>true</literal>, which only allows one sub-menu at a time to be expanded.
+ </para>
+ <para>
+ The <code>mode</code> attribute defines the submission mode for normal menu items that link to content, and the <code>expandMode</code> attribute defines the submission mode for menu items that expand and collapse. The settings for these attributes apply to the entire menu unless a menu item defines its own individual <code>mode</code> or <code>expandMode</code>. The values for <code>mode</code> and <code>expandMode</code> are:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>server</literal>, the default setting, which submits the form normally and completely refreshes the page;
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>ajax</literal>, which performs an Ajax form submission, and re-renders elements specified with the <code>render</code> attribute; and
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>none</literal>, which causes the <code>action</code> and <code>actionListener</code> items to be ignored, and the behavior is fully defined by the nested components instead of responses from submissions.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="sect-Component_Reference-Menus_and_toolbars-richpanelMenuGroup">
+ <title><rich:panelMenuGroup></title>
+ <para>
+ The <classname><rich:panelMenuGroup></classname> component defines a group of <classname><rich:panelMenuItem></classname> components inside a <classname><rich:panelMenu></classname>.
+ </para>
+ <para>
+ If the <code>expandMode</code> is unspecified, the submission behavior for the group is inherited from the parent <classname><rich:panelMenu></classname>. Otherwise, the <code>expandMode</code> setting is used instead of the parent's behavior.
+ </para>
+ <para>
+ Icons for the menu group can be chosen from a set of standard icons. There are three attributes that relate to the different menu states that the icon represents: <code>iconExpanded</code>, <code>iconCollapsed</code>, and <code>iconDisabled</code>. The standard icons are shown in <xref linkend="figu-Component_Reference-richpanelMenuGroup-Standard_icons" />.
+ </para>
+ <figure id="figu-Component_Reference-richpanelMenuGroup-Standard_icons">
+ <title>Standard icons</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/panelMenuIcons.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ Alternatively, a path can be defined that points to an image file to use as an icon.
+ </para>
+ <example id="exam-Component_Reference-richpanelMenuGroup-Using_custom_icons">
+ <title>Using custom icons</title>
+
+<programlisting language="xml">
+<rich:panelMenu>
+ <rich:PanelMenuGroup label="Group 1" iconExpanded="\images\img1.png" iconCollapsed="\images\img2.png">>
+ <!--Nested menu components-->
+ </rich:panelMenuGroup>
+</rich:panelMenu>
+</programlisting>
+ </example>
+ </section>
+
+ <section id="sect-Component_Reference-Menus_and_toolbars-richpanelMenuItem">
+ <title><rich:panelMenuItem></title>
+ <para>
+ The <classname><rich:panelMenuItem></classname> component represents a single item inside a <classname><rich:panelMenuGroup></classname> component, which is in turn part of a <classname><rich:panelMenu></classname> component.
+ </para>
+ <para>
+ If the <code>mode</code> is unspecified, the submission behavior for the item is inherited from the parent <classname><rich:panelMenu></classname>. Otherwise, the <code>mode</code> setting is used instead of the parent's behavior.
+ </para>
+ <para>
+ Icons for menu items can be chosen from a set of standard icons. There are two attributes that relate to the different menu states that the icon represents: <code>icon</code> and <code>iconDisabled</code>. The standard icons are shown in <xref linkend="figu-Component_Reference-richcolumn-Basic_column_example" />.
+ </para>
+ <figure id="figu-Component_Reference-richpanelMenuItem-Standard_icons">
+ <title>Standard icons</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/panelMenuIcons.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ Alternatively, a path can be defined that points to an image file to use as an icon.
+ </para>
+ <example id="exam-Component_Reference-richpanelMenuItem-Using_custom_icons">
+ <title>Using custom icons</title>
+
+<programlisting language="xml">
+<rich:panelMenu>
+ ...
+ <rich:panelMenuItem value="Item 1.1" icon="\images\img1.png" iconDisabled="\images\img2.png" />
+ ...
+</rich:panelMenu>
+</programlisting>
+ </example>
+ </section>
+
<section id="sect-Component_Reference-Menus_and_toolbars-richtoolBar">
<title>rich:toolBar</title>
<para>
Modified: root/docs/trunk/Component_Reference/en-US/Output_and_messages.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Output_and_messages.xml 2009-11-12 02:04:17 UTC (rev 15869)
+++ root/docs/trunk/Component_Reference/en-US/Output_and_messages.xml 2009-11-12 03:25:11 UTC (rev 15870)
@@ -2,33 +2,40 @@
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
-<chapter id="chap-Component_Reference-Messages">
- <title>Messages</title>
+<chapter id="chap-Component_Reference-Output_and_messages">
+ <title>Output and messages</title>
<para>
Incomplete
</para>
- <section id="sect-Component_Reference-Messages-richmessage">
+ <section id="sect-Component_Reference-Output_and_messages-richmessage">
<title>rich:message</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Messages-richmessages">
+ <section id="sect-Component_Reference-Output_and_messages-richmessages">
<title>rich:messages</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Messages-richprogressBar">
+ <section id="sect-Component_Reference-Output_and_messages-richpaint2D">
+ <title>rich:paint2D</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Output_and_messages-richprogressBar">
<title>rich:progressBar</title>
<para>
The <classname><rich:progressBar></classname> component displays a progress bar to indicate the status of a process to the user. It can update either through Ajax or on the client side, and the look and feel can be fully customized.
</para>
</section>
- <section id="sect-Component_Reference-Messages-richtoolTip">
+ <section id="sect-Component_Reference-Output_and_messages-richtoolTip">
<title>rich:toolTip</title>
<para>
Incomplete
Modified: root/docs/trunk/Component_Reference/en-US/Panels_and_containers.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Panels_and_containers.xml 2009-11-12 02:04:17 UTC (rev 15869)
+++ root/docs/trunk/Component_Reference/en-US/Panels_and_containers.xml 2009-11-12 03:25:11 UTC (rev 15870)
@@ -7,71 +7,6 @@
<para>
This chapter details those components which act as panels and containers to hold groups of other components.
</para>
- <section id="sect-Component_Reference-Panels_and_containers-a4jform">
- <title><a4j:form></title>
- <para>
- The <classname><a4j:form></classname> builds on the functionality of the JavaServer Faces (<acronym>JSF</acronym>) component <classname><h:form></classname>, adding Ajax capabilities to the form.
- </para>
- <note>
- <title>Note</title>
- <para>
- The <acronym>JSF</acronym> component <classname><h:form></classname>, on which the <classname><a4j:form></classname> component is based, had an issue whereby the <classname><h:commandLink></classname> component could not be re-rendered without re-rendering the entire form. <classname><a4j:form></classname> and <classname><a4j:commandLink></classname> fix this issue.
- </para>
- </note>
- <para>
- The <classname><a4j:form></classname> component can add indirect Ajax support to non-Ajax components on the form by setting <code>ajaxSubmit="true"</code>. It then uses the standard Ajax component attributes and updates components specified with the <code>render</code> attribute.
- </para>
- <important>
- <title>Important</title>
- <para>
- <classname><a4j:form></classname> should not use <code>ajaxSubmit="true"</code> if it contains other Ajax-capable components.
- </para>
- <para>
- Additionally, due to security reasons the file upload form element cannot be indirectly made Ajax-capable with <classname><a4j:form></classname>.
- </para>
- </important>
- </section>
-
- <section id="sect-Component_Reference-Panels_and_containers-a4joutputPanel">
- <title><a4j:outputPanel></title>
- <para>
- The <classname><a4j:outputPanel></classname> component is used to group together components in to update them as a whole, rather than having to specify the components individually.
- </para>
- <para>
- The <code>layout</code> attribute can be used to determine how the component is rendered in <acronym>HTML</acronym>:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <code>layout="inline"</code> is the default behavior, which will render the component as a pair of <code><span></code> tags containing the child components.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>layout="block"</code> will render the component as a pair of <code><div></code> tags containing the child components, which will use any defined <code><div></code> element styles.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>layout="none"</code> will render the component as a pair of <code><span></code> tags with an identifier equal to that of a child component. If the child component is rendered then the <code><span></code> are not included, leaving no markup representing the <classname><a4j:outputPanel></classname> in <acronym>HTML</acronym>.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Setting <code>ajaxRendered="true"</code> will cause the <classname><a4j:outputPanel></classname> to be updated with each Ajax response for the page, even when not listed explicitly by the requesting component. This can in turn be overridden by specific attributes on any requesting components.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Panels_and_containers-a4jregion">
- <title><a4j:region></title>
- <para>
- The <classname><a4j:region></classname> component specifies a part of the document object model (<acronym>DOM</acronym>) tree to be processed on the server. The processing includes data handling during decoding, conversion, validation, and model updating. When not using <classname><a4j:region></classname>, the entire view functions as a region.
- </para>
- <para>
- The whole form is still submitted to the server, but only the specified region is processed. Regions can be nested, in which case only the immediate region of the component initiating the request will be processed.
- </para>
- </section>
-
<section id="sect-Component_Reference-Panels_and_containers-richmodalPanel">
<title><rich:modalPanel></title>
<para>
@@ -127,109 +62,6 @@
</para>
</section>
- <section id="sect-Component_Reference-Panels_and_containers-richpanelMenu">
- <title><rich:panelMenu></title>
- <para>
- The <classname><rich:panelMenu></classname> component can be used in conjunction with <classname><rich:panelMenuItem></classname> and <classname><rich:panelMenuGroup></classname> to create an expanding, hierarchical menu. The <classname><rich:panelMenu></classname> component's appearance can be highly customized, and the hierarchy can stretch to any number of sub-levels.
- </para>
- <para>
- The <code>selectedChild</code> attribute is used to point to the name of the currently selected menu item.
- </para>
- <para>
- By default, the event to expand the menu is a mouse click. This can be changed by setting <code>event</code> to specify the preferred event. Several sub-menus can be expanded a once unless the <code>expandSingle</code> is set to <literal>true</literal>, which only allows one sub-menu at a time to be expanded.
- </para>
- <para>
- The <code>mode</code> attribute defines the submission mode for normal menu items that link to content, and the <code>expandMode</code> attribute defines the submission mode for menu items that expand and collapse. The settings for these attributes apply to the entire menu unless a menu item defines its own individual <code>mode</code> or <code>expandMode</code>. The values for <code>mode</code> and <code>expandMode</code> are:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <literal>server</literal>, the default setting, which submits the form normally and completely refreshes the page;
- </para>
- </listitem>
- <listitem>
- <para>
- <literal>ajax</literal>, which performs an Ajax form submission, and re-renders elements specified with the <code>render</code> attribute; and
- </para>
- </listitem>
- <listitem>
- <para>
- <literal>none</literal>, which causes the <code>action</code> and <code>actionListener</code> items to be ignored, and the behavior is fully defined by the nested components instead of responses from submissions.
- </para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section id="sect-Component_Reference-Panels_and_containers-richpanelMenuGroup">
- <title><rich:panelMenuGroup></title>
- <para>
- The <classname><rich:panelMenuGroup></classname> component defines a group of <classname><rich:panelMenuItem></classname> components inside a <classname><rich:panelMenu></classname>.
- </para>
- <para>
- If the <code>expandMode</code> is unspecified, the submission behavior for the group is inherited from the parent <classname><rich:panelMenu></classname>. Otherwise, the <code>expandMode</code> setting is used instead of the parent's behavior.
- </para>
- <para>
- Icons for the menu group can be chosen from a set of standard icons. There are three attributes that relate to the different menu states that the icon represents: <code>iconExpanded</code>, <code>iconCollapsed</code>, and <code>iconDisabled</code>. The standard icons are shown in <xref linkend="figu-Component_Reference-richpanelMenuGroup-Standard_icons" />.
- </para>
- <figure id="figu-Component_Reference-richpanelMenuGroup-Standard_icons">
- <title>Standard icons</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/panelMenuIcons.png" format="PNG" />
- </imageobject>
- </mediaobject>
- </figure>
- <para>
- Alternatively, a path can be defined that points to an image file to use as an icon.
- </para>
- <example id="exam-Component_Reference-richpanelMenuGroup-Using_custom_icons">
- <title>Using custom icons</title>
-
-<programlisting language="xml">
-<rich:panelMenu>
- <rich:PanelMenuGroup label="Group 1" iconExpanded="\images\img1.png" iconCollapsed="\images\img2.png">>
- <!--Nested menu components-->
- </rich:panelMenuGroup>
-</rich:panelMenu>
-</programlisting>
- </example>
- </section>
-
- <section id="sect-Component_Reference-Panels_and_containers-richpanelMenuItem">
- <title><rich:panelMenuItem></title>
- <para>
- The <classname><rich:panelMenuItem></classname> component represents a single item inside a <classname><rich:panelMenuGroup></classname> component, which is in turn part of a <classname><rich:panelMenu></classname> component.
- </para>
- <para>
- If the <code>mode</code> is unspecified, the submission behavior for the item is inherited from the parent <classname><rich:panelMenu></classname>. Otherwise, the <code>mode</code> setting is used instead of the parent's behavior.
- </para>
- <para>
- Icons for menu items can be chosen from a set of standard icons. There are two attributes that relate to the different menu states that the icon represents: <code>icon</code> and <code>iconDisabled</code>. The standard icons are shown in <xref linkend="figu-Component_Reference-richcolumn-Basic_column_example" />.
- </para>
- <figure id="figu-Component_Reference-richpanelMenuItem-Standard_icons">
- <title>Standard icons</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/panelMenuIcons.png" format="PNG" />
- </imageobject>
- </mediaobject>
- </figure>
- <para>
- Alternatively, a path can be defined that points to an image file to use as an icon.
- </para>
- <example id="exam-Component_Reference-richpanelMenuItem-Using_custom_icons">
- <title>Using custom icons</title>
-
-<programlisting language="xml">
-<rich:panelMenu>
- ...
- <rich:panelMenuItem value="Item 1.1" icon="\images\img1.png" iconDisabled="\images\img2.png" />
- ...
-</rich:panelMenu>
-</programlisting>
- </example>
- </section>
-
<section id="sect-Component_Reference-Panels_and_containers-richsimpleTogglePanel">
<title><rich:simpleTogglePanel></title>
<para>
Modified: root/docs/trunk/Component_Reference/en-US/Preface.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Preface.xml 2009-11-12 02:04:17 UTC (rev 15869)
+++ root/docs/trunk/Component_Reference/en-US/Preface.xml 2009-11-12 03:25:11 UTC (rev 15870)
@@ -4,10 +4,10 @@
<preface id="pref-Component_Reference-Preface">
<title>Preface</title>
- <!-- FOR JDOCBOOK --><xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR PUBLICAN --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <!-- FOR JDOCBOOK --><xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR PUBLICAN --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</xi:fallback>
</xi:include>
- <!-- PUBLICAN'S ORIGINAL XINCLUDES --><xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="Common_Content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <!-- PUBLICAN'S ORIGINAL XINCLUDES --><xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="Common_Content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</xi:fallback>
</xi:include>
</xi:fallback>
Modified: root/docs/trunk/Component_Reference/en-US/Resources.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Resources.xml 2009-11-12 02:04:17 UTC (rev 15869)
+++ root/docs/trunk/Component_Reference/en-US/Resources.xml 2009-11-12 03:25:11 UTC (rev 15870)
@@ -2,52 +2,45 @@
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
-<chapter id="chap-Component_Reference-Resource_handling">
- <title>Resource handling</title>
+<chapter id="chap-Component_Reference-Resources">
+ <title>Resources</title>
<para>
Incomplete
</para>
- <section id="sect-Component_Reference-Resource_handling-a4jloadBundle">
+ <section id="sect-Component_Reference-Resources-a4jloadBundle">
<title>a4j:loadBundle</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Resource_handling-a4jkeepAlive">
- <title>a4j:keepAlive</title>
+ <section id="sect-Component_Reference-Resources-a4jloadScript">
+ <title>a4j:loadScript</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Resource_handling-a4jpoll">
- <title>a4j:poll</title>
+ <section id="sect-Component_Reference-Resources-a4jloadStyle">
+ <title>a4j:loadStyle</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Resource_handling-a4jpush">
- <title>a4j:push</title>
+ <section id="sect-Component_Reference-Resources-a4jkeepAlive">
+ <title>a4j:keepAlive</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Resource_handling-a4jqueue">
- <title>a4j:queue</title>
+ <section id="sect-Component_Reference-Resources-a4jmediaOutput">
+ <title>a4j:mediaOutput</title>
<para>
Incomplete
</para>
</section>
-
- <section id="sect-Component_Reference-Resource_handling-a4jstatus">
- <title>a4j:status</title>
- <para>
- Incomplete
- </para>
- </section>
</chapter>
Modified: root/docs/trunk/Component_Reference/en-US/Trees.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Trees.xml 2009-11-12 02:04:17 UTC (rev 15869)
+++ root/docs/trunk/Component_Reference/en-US/Trees.xml 2009-11-12 03:25:11 UTC (rev 15870)
@@ -2,89 +2,89 @@
<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
]>
-<chapter id="chap-Component_Reference-Lists_and_trees">
- <title>Lists and trees</title>
+<chapter id="chap-Component_Reference-Trees">
+ <title>Trees</title>
<para>
Incomplete
</para>
- <section id="sect-Component_Reference-Lists_and_trees-richdataDefinitionList">
+ <section id="sect-Component_Reference-Trees-richdataDefinitionList">
<title>rich:dataDefinitionList</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Lists_and_trees-richdataList">
+ <section id="sect-Component_Reference-Trees-richdataList">
<title>rich:dataList</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Lists_and_trees-richdataOrderedList">
+ <section id="sect-Component_Reference-Trees-richdataOrderedList">
<title>rich:dataOrderedList</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Lists_and_trees-richlistShuttle">
+ <section id="sect-Component_Reference-Trees-richlistShuttle">
<title>rich:listShuttle</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Lists_and_trees-richorderingList">
+ <section id="sect-Component_Reference-Trees-richorderingList">
<title>rich:orderingList</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Lists_and_trees-richpickList">
+ <section id="sect-Component_Reference-Trees-richpickList">
<title>rich:pickList</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Lists_and_trees-richchangeExpandListener">
+ <section id="sect-Component_Reference-Trees-richchangeExpandListener">
<title>rich:changeExpandListener</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Lists_and_trees-richnodeSelectListener">
+ <section id="sect-Component_Reference-Trees-richnodeSelectListener">
<title>rich:nodeSelectListener</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Lists_and_trees-richrecursiveTreeNodesAdapter">
+ <section id="sect-Component_Reference-Trees-richrecursiveTreeNodesAdapter">
<title>rich:recursiveTreeNodesAdapter</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Lists_and_trees-richtree">
+ <section id="sect-Component_Reference-Trees-richtree">
<title>rich:tree</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Lists_and_trees-richtreeNode">
+ <section id="sect-Component_Reference-Trees-richtreeNode">
<title>rich:treeNode</title>
<para>
Incomplete
</para>
</section>
- <section id="sect-Component_Reference-Lists_and_trees-richtreeNodesAdapter">
+ <section id="sect-Component_Reference-Trees-richtreeNodesAdapter">
<title>rich:treeNodesAdapter</title>
<para>
Incomplete
Modified: root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml 2009-11-12 02:04:17 UTC (rev 15869)
+++ root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml 2009-11-12 03:25:11 UTC (rev 15870)
@@ -28,7 +28,7 @@
<year>2009</year>
<holder>Red Hat</holder>
</copyright>
- <!-- FOR PUBLICAN -->
+ <!-- FOR PUBLICAN -->
<legalnotice xml:base="Common_Content/Legal_Notice.xml">
<para>
Copyright <trademark class="copyright"></trademark> 2009 Red Hat This material may only be distributed subject to the terms and conditions set forth in the GNU Free Documentation License (GFDL), V1.2 or later (the latest version is presently available at <ulink url="http://www.gnu.org/licenses/fdl.txt">http://www.gnu.org/licenses/fdl.txt</ulink>).
@@ -46,7 +46,7 @@
</author>
</authorgroup>
</bookinfo>
- <!-- <xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include> -->
+ <!-- <xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include> -->
<chapter id="chap-Component_Reference-Introduction" lang="en-US">
<title>Introduction</title>
<para>
16 years, 8 months
JBoss Rich Faces SVN: r15869 - root/docs/trunk/Component_Reference/en-US.
by richfaces-svn-commits@lists.jboss.org
Author: SeanRogers
Date: 2009-11-11 21:04:17 -0500 (Wed, 11 Nov 2009)
New Revision: 15869
Added:
root/docs/trunk/Component_Reference/en-US/Common_features.xml
root/docs/trunk/Component_Reference/en-US/Containers.xml
root/docs/trunk/Component_Reference/en-US/Functions.xml
root/docs/trunk/Component_Reference/en-US/Processing_management.xml
Removed:
root/docs/trunk/Component_Reference/en-US/Other_components.xml
Modified:
root/docs/trunk/Component_Reference/en-US/Book_Info.xml
root/docs/trunk/Component_Reference/en-US/Component_Reference.xml
root/docs/trunk/Component_Reference/en-US/Preface.xml
root/docs/trunk/Component_Reference/en-US/Validation.xml
root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml
Log:
Further restructuring
Modified: root/docs/trunk/Component_Reference/en-US/Book_Info.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Book_Info.xml 2009-11-12 01:40:04 UTC (rev 15868)
+++ root/docs/trunk/Component_Reference/en-US/Book_Info.xml 2009-11-12 02:04:17 UTC (rev 15869)
@@ -27,7 +27,7 @@
<year>&YEAR;</year>
<holder>&HOLDER;</holder>
</copyright>
- <!-- FOR PUBLICAN --><xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK: --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <!-- FOR PUBLICAN --><xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK: --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</xi:fallback>
</xi:include>
<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
Copied: root/docs/trunk/Component_Reference/en-US/Common_features.xml (from rev 15845, root/docs/trunk/Component_Reference/en-US/Other_components.xml)
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Common_features.xml (rev 0)
+++ root/docs/trunk/Component_Reference/en-US/Common_features.xml 2009-11-12 02:04:17 UTC (rev 15869)
@@ -0,0 +1,53 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Component_Reference-Other_components">
+ <title>Other components</title>
+ <para>
+ Incomplete
+ </para>
+ <section id="sect-Component_Reference-Other_components-a4jmediaOutput">
+ <title>a4j:mediaOutput</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Other_components-richhotkey">
+ <title>rich:hotkey</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Other_components-richinsert">
+ <title>rich:insert</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Other_components-richpaint2D">
+ <title>rich:paint2D</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Other_components-richgmap">
+ <title>rich:gmap</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Other_components-richvirtualEarth">
+ <title>rich:virtualEarth</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+</chapter>
+
Modified: root/docs/trunk/Component_Reference/en-US/Component_Reference.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Component_Reference.xml 2009-11-12 01:40:04 UTC (rev 15868)
+++ root/docs/trunk/Component_Reference/en-US/Component_Reference.xml 2009-11-12 02:04:17 UTC (rev 15869)
@@ -4,29 +4,30 @@
<book status="draft">
<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <!--
+ <!--
<xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- --><xi:include href="Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ --><xi:include href="Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Common_Ajax_attributes.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<part id="part-Component_Reference-a4j_tag_library">
<title>a4j tag library</title>
- <xi:include href="Ajax_basics.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Resource_handling.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Action_components.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Resources.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Containers.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Validation.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Processing_management.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</part>
<part id="part-Component_Reference-rich_tag_library">
<title>rich tag library</title>
<xi:include href="Rich_inputs.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Panels_and_containers.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Tables_and_grids.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Lists_and_trees.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Trees.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Menus_and_toolbars.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Messages.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Output_and_messages.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Drag_and_drop.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Layout_and_appearance.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Validation.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Portals.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Functions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Functionality_extension.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Other_components.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</part>
<xi:include href="Revision_History.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<index />
Added: root/docs/trunk/Component_Reference/en-US/Containers.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Containers.xml (rev 0)
+++ root/docs/trunk/Component_Reference/en-US/Containers.xml 2009-11-12 02:04:17 UTC (rev 15869)
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Component_Reference-Containers">
+ <title>Containers</title>
+ <para>
+ Incomplete
+ </para>
+ <section id="sect-Component_Reference-Containers-a4jform">
+ <title><a4j:form></title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Containers-a4joutputPanel">
+ <title><a4j:outputPanel></title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Containers-a4jregion">
+ <title><a4j:region></title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Containers-a4jinclude">
+ <title><a4j:include></title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+</chapter>
+
Added: root/docs/trunk/Component_Reference/en-US/Functions.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Functions.xml (rev 0)
+++ root/docs/trunk/Component_Reference/en-US/Functions.xml 2009-11-12 02:04:17 UTC (rev 15869)
@@ -0,0 +1,46 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Component_Reference-Functions">
+ <title>Functions</title>
+ <para>
+ Incomplete
+ </para>
+ <section id="sect-Component_Reference-Functions-richclientID">
+ <title><rich:clientID></title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Functions-richcomponent">
+ <title><rich:component></title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Functions-richelement">
+ <title><rich:element></title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Functions-richfindComponent">
+ <title><rich:findComponent></title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Functions-richisUserInRole">
+ <title><rich:isUserInRole></title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+</chapter>
+
Deleted: root/docs/trunk/Component_Reference/en-US/Other_components.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Other_components.xml 2009-11-12 01:40:04 UTC (rev 15868)
+++ root/docs/trunk/Component_Reference/en-US/Other_components.xml 2009-11-12 02:04:17 UTC (rev 15869)
@@ -1,53 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="chap-Component_Reference-Other_components">
- <title>Other components</title>
- <para>
- Incomplete
- </para>
- <section id="sect-Component_Reference-Other_components-a4jmediaOutput">
- <title>a4j:mediaOutput</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Other_components-richhotkey">
- <title>rich:hotkey</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Other_components-richinsert">
- <title>rich:insert</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Other_components-richpaint2D">
- <title>rich:paint2D</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Other_components-richgmap">
- <title>rich:gmap</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Other_components-richvirtualEarth">
- <title>rich:virtualEarth</title>
- <para>
- Incomplete
- </para>
- </section>
-
-</chapter>
-
Modified: root/docs/trunk/Component_Reference/en-US/Preface.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Preface.xml 2009-11-12 01:40:04 UTC (rev 15868)
+++ root/docs/trunk/Component_Reference/en-US/Preface.xml 2009-11-12 02:04:17 UTC (rev 15869)
@@ -4,10 +4,10 @@
<preface id="pref-Component_Reference-Preface">
<title>Preface</title>
- <!-- FOR JDOCBOOK --><xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR PUBLICAN --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <!-- FOR JDOCBOOK --><xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR PUBLICAN --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</xi:fallback>
</xi:include>
- <!-- PUBLICAN'S ORIGINAL XINCLUDES --><xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="Common_Content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <!-- PUBLICAN'S ORIGINAL XINCLUDES --><xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="Common_Content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</xi:fallback>
</xi:include>
</xi:fallback>
Added: root/docs/trunk/Component_Reference/en-US/Processing_management.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Processing_management.xml (rev 0)
+++ root/docs/trunk/Component_Reference/en-US/Processing_management.xml 2009-11-12 02:04:17 UTC (rev 15869)
@@ -0,0 +1,32 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Component_Reference-Processing_management">
+ <title>Processing management</title>
+ <para>
+ Incomplete
+ </para>
+ <section id="sect-Component_Reference-Processing_management-a4jqueue">
+ <title><a4j:queue></title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Processing_management-a4jlog">
+ <title><a4j:log></title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Processing_management-a4jstatus">
+ <title><a4j:status></title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+</chapter>
+
Modified: root/docs/trunk/Component_Reference/en-US/Validation.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Validation.xml 2009-11-12 01:40:04 UTC (rev 15868)
+++ root/docs/trunk/Component_Reference/en-US/Validation.xml 2009-11-12 02:04:17 UTC (rev 15869)
@@ -8,21 +8,21 @@
Incomplete
</para>
<section id="sect-Component_Reference-Validation-richajaxValidator">
- <title>rich:ajaxValidator</title>
+ <title><rich:ajaxValidator></title>
<para>
Incomplete
</para>
</section>
<section id="sect-Component_Reference-Validation-richgraphValidator">
- <title>rich:graphValidator</title>
+ <title><rich:graphValidator></title>
<para>
Incomplete
</para>
</section>
<section id="sect-Component_Reference-Validation-richbeanValidator">
- <title>rich:beanValidator</title>
+ <title><rich:beanValidator></title>
<para>
Incomplete
</para>
Modified: root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml 2009-11-12 01:40:04 UTC (rev 15868)
+++ root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml 2009-11-12 02:04:17 UTC (rev 15869)
@@ -28,7 +28,7 @@
<year>2009</year>
<holder>Red Hat</holder>
</copyright>
- <!-- FOR PUBLICAN -->
+ <!-- FOR PUBLICAN -->
<legalnotice xml:base="Common_Content/Legal_Notice.xml">
<para>
Copyright <trademark class="copyright"></trademark> 2009 Red Hat This material may only be distributed subject to the terms and conditions set forth in the GNU Free Documentation License (GFDL), V1.2 or later (the latest version is presently available at <ulink url="http://www.gnu.org/licenses/fdl.txt">http://www.gnu.org/licenses/fdl.txt</ulink>).
@@ -46,7 +46,7 @@
</author>
</authorgroup>
</bookinfo>
- <!-- <xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include> -->
+ <!-- <xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include> -->
<chapter id="chap-Component_Reference-Introduction" lang="en-US">
<title>Introduction</title>
<para>
16 years, 8 months
JBoss Rich Faces SVN: r15868 - root/docs/trunk/Component_Reference/en-US.
by richfaces-svn-commits@lists.jboss.org
Author: SeanRogers
Date: 2009-11-11 20:40:04 -0500 (Wed, 11 Nov 2009)
New Revision: 15868
Added:
root/docs/trunk/Component_Reference/en-US/Action_components.xml
root/docs/trunk/Component_Reference/en-US/Output_and_messages.xml
root/docs/trunk/Component_Reference/en-US/Resources.xml
root/docs/trunk/Component_Reference/en-US/Trees.xml
Removed:
root/docs/trunk/Component_Reference/en-US/Ajax_basics.xml
root/docs/trunk/Component_Reference/en-US/Lists_and_trees.xml
root/docs/trunk/Component_Reference/en-US/Messages.xml
root/docs/trunk/Component_Reference/en-US/Resource_handling.xml
Modified:
root/docs/trunk/Component_Reference/en-US/Book_Info.xml
root/docs/trunk/Component_Reference/en-US/Component_Reference.xml
root/docs/trunk/Component_Reference/en-US/Preface.xml
root/docs/trunk/Component_Reference/en-US/Tables_and_grids.xml
root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml
Log:
Renamed some chapters
Copied: root/docs/trunk/Component_Reference/en-US/Action_components.xml (from rev 15845, root/docs/trunk/Component_Reference/en-US/Ajax_basics.xml)
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Action_components.xml (rev 0)
+++ root/docs/trunk/Component_Reference/en-US/Action_components.xml 2009-11-12 01:40:04 UTC (rev 15868)
@@ -0,0 +1,110 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Component_Reference-Ajax_basics">
+ <title>Ajax basics</title>
+ <para>
+ This chapter details the basic components that respond to a user action and submit an Ajax request.
+ </para>
+ <section id="sect-Component_Reference-Ajax_basics-a4jcommandButton">
+ <title><a4j:commandButton></title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ component-type: <classname>org.ajax4jsf.CommandButton</classname>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ component-family: <classname>javax.faces.Command</classname>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ component-class: <classname>org.ajax4jsf.component.html.HtmlAjaxCommandButton</classname>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ renderer-type: <classname>org.ajax4jsf.components.AjaxCommandButtonRenderer</classname>
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ The <classname><a4j:commandButton></classname> is similar to the JavaServer Faces (<acronym>JSF</acronym>) component <classname><h:commandButton></classname>, but additionally includes Ajax support. When the command button is clicked it generates an Ajax form submit, and when a response is received the command button can be dynamically rendered.
+ </para>
+ <para>
+ The <classname><a4j:commandButton></classname> requires only the <code>value</code> and <code>render</code> attributes to function. The <code>value</code> attribute specifies the text of the button and the <code>render</code> attribute specifies which areas are to be updated. The <classname><a4j:commandButton></classname> uses the <code>onclick</code> event instead of the <code>onsubmit</code> event, but otherwise uses all common Ajax attributes as listed in <xref linkend="chap-Component_Reference-Common_Ajax_attributes" />.
+ </para>
+ <note>
+ <title>Note</title>
+ <para>
+ When attaching a JavaScript function to a <classname><a4j:commandButton></classname> with the help of a <classname><rich:componentControl></classname>, do not use the <code>attachTo</code> attribute of <classname><rich:componentControl></classname>. The attribute adds event handlers using <classname>Event.observe</classname> but <classname><a4j:commandButton></classname> does not include this event.
+ </para>
+ </note>
+ </section>
+
+ <section id="sect-Component_Reference-Ajax_basics-a4jcommandLink">
+ <title><a4j:commandLink></title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ component-type: <classname>org.ajax4jsf.CommandLink</classname>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ component-family: <classname>javax.faces.Command</classname>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ component-class: <classname>org.ajax4jsf.component.html.HtmlAjaxCommandLink</classname>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ renderer-type: <classname>org.ajax4jsf.components.AjaxCommandLinkRenderer</classname>
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ The <classname><a4j:commandLink></classname> is similar to the JavaServer Faces (<acronym>JSF</acronym>) component <classname><h:commandLink></classname>, but additionally includes Ajax support. When the command link is clicked it generates an Ajax form submit, and when a response is received the command link can be dynamically rendered.
+ </para>
+ <para>
+ The <classname><a4j:commandLink></classname> requires only the <code>value</code> and <code>render</code> attributes to function. The <code>value</code> attribute specifies the text of the link and the <code>render</code> attribute specifies which areas are to be updated. The <classname><a4j:commandLink></classname> uses the <code>onclick</code> event instead of the <code>onsubmit</code> event, but otherwise uses all common Ajax attributes as listed in <xref linkend="chap-Component_Reference-Common_Ajax_attributes" />.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Ajax_basics-a4jhtmlCommandLink">
+ <title><a4j:htmlCommandLink></title>
+ <itemizedlist>
+ <listitem>
+ <para>
+ component-type: <classname>org.ajax4jsf.HtmlCommandLink</classname>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ component-family: <classname>javax.faces.Command</classname>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ component-class: <classname>org.ajax4jsf.component.html.HtmlCommandLink</classname>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ renderer-type: <classname>org.ajax4jsf.HtmlCommandLinkRenderer</classname>
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+</chapter>
+
Deleted: root/docs/trunk/Component_Reference/en-US/Ajax_basics.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Ajax_basics.xml 2009-11-12 01:29:57 UTC (rev 15867)
+++ root/docs/trunk/Component_Reference/en-US/Ajax_basics.xml 2009-11-12 01:40:04 UTC (rev 15868)
@@ -1,110 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="chap-Component_Reference-Ajax_basics">
- <title>Ajax basics</title>
- <para>
- This chapter details the basic components that respond to a user action and submit an Ajax request.
- </para>
- <section id="sect-Component_Reference-Ajax_basics-a4jcommandButton">
- <title><a4j:commandButton></title>
- <itemizedlist>
- <listitem>
- <para>
- component-type: <classname>org.ajax4jsf.CommandButton</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- component-family: <classname>javax.faces.Command</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- component-class: <classname>org.ajax4jsf.component.html.HtmlAjaxCommandButton</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- renderer-type: <classname>org.ajax4jsf.components.AjaxCommandButtonRenderer</classname>
- </para>
- </listitem>
- </itemizedlist>
- <para>
- The <classname><a4j:commandButton></classname> is similar to the JavaServer Faces (<acronym>JSF</acronym>) component <classname><h:commandButton></classname>, but additionally includes Ajax support. When the command button is clicked it generates an Ajax form submit, and when a response is received the command button can be dynamically rendered.
- </para>
- <para>
- The <classname><a4j:commandButton></classname> requires only the <code>value</code> and <code>render</code> attributes to function. The <code>value</code> attribute specifies the text of the button and the <code>render</code> attribute specifies which areas are to be updated. The <classname><a4j:commandButton></classname> uses the <code>onclick</code> event instead of the <code>onsubmit</code> event, but otherwise uses all common Ajax attributes as listed in <xref linkend="chap-Component_Reference-Common_Ajax_attributes" />.
- </para>
- <note>
- <title>Note</title>
- <para>
- When attaching a JavaScript function to a <classname><a4j:commandButton></classname> with the help of a <classname><rich:componentControl></classname>, do not use the <code>attachTo</code> attribute of <classname><rich:componentControl></classname>. The attribute adds event handlers using <classname>Event.observe</classname> but <classname><a4j:commandButton></classname> does not include this event.
- </para>
- </note>
- </section>
-
- <section id="sect-Component_Reference-Ajax_basics-a4jcommandLink">
- <title><a4j:commandLink></title>
- <itemizedlist>
- <listitem>
- <para>
- component-type: <classname>org.ajax4jsf.CommandLink</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- component-family: <classname>javax.faces.Command</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- component-class: <classname>org.ajax4jsf.component.html.HtmlAjaxCommandLink</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- renderer-type: <classname>org.ajax4jsf.components.AjaxCommandLinkRenderer</classname>
- </para>
- </listitem>
- </itemizedlist>
- <para>
- The <classname><a4j:commandLink></classname> is similar to the JavaServer Faces (<acronym>JSF</acronym>) component <classname><h:commandLink></classname>, but additionally includes Ajax support. When the command link is clicked it generates an Ajax form submit, and when a response is received the command link can be dynamically rendered.
- </para>
- <para>
- The <classname><a4j:commandLink></classname> requires only the <code>value</code> and <code>render</code> attributes to function. The <code>value</code> attribute specifies the text of the link and the <code>render</code> attribute specifies which areas are to be updated. The <classname><a4j:commandLink></classname> uses the <code>onclick</code> event instead of the <code>onsubmit</code> event, but otherwise uses all common Ajax attributes as listed in <xref linkend="chap-Component_Reference-Common_Ajax_attributes" />.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Ajax_basics-a4jhtmlCommandLink">
- <title><a4j:htmlCommandLink></title>
- <itemizedlist>
- <listitem>
- <para>
- component-type: <classname>org.ajax4jsf.HtmlCommandLink</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- component-family: <classname>javax.faces.Command</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- component-class: <classname>org.ajax4jsf.component.html.HtmlCommandLink</classname>
- </para>
- </listitem>
- <listitem>
- <para>
- renderer-type: <classname>org.ajax4jsf.HtmlCommandLinkRenderer</classname>
- </para>
- </listitem>
- </itemizedlist>
- <para>
- Incomplete
- </para>
- </section>
-
-</chapter>
-
Modified: root/docs/trunk/Component_Reference/en-US/Book_Info.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Book_Info.xml 2009-11-12 01:29:57 UTC (rev 15867)
+++ root/docs/trunk/Component_Reference/en-US/Book_Info.xml 2009-11-12 01:40:04 UTC (rev 15868)
@@ -27,7 +27,7 @@
<year>&YEAR;</year>
<holder>&HOLDER;</holder>
</copyright>
- <!-- FOR PUBLICAN --><xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK: --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <!-- FOR PUBLICAN --><xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK: --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</xi:fallback>
</xi:include>
<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
Modified: root/docs/trunk/Component_Reference/en-US/Component_Reference.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Component_Reference.xml 2009-11-12 01:29:57 UTC (rev 15867)
+++ root/docs/trunk/Component_Reference/en-US/Component_Reference.xml 2009-11-12 01:40:04 UTC (rev 15868)
@@ -4,25 +4,30 @@
<book status="draft">
<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <!--
+ <!--
<xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- -->
- <xi:include href="Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ --><xi:include href="Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Common_Ajax_attributes.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Common_features.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Rich_inputs.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Panels_and_containers.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Tables_and_grids.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Lists_and_trees.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Menus_and_toolbars.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Messages.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Drag_and_drop.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Layout_and_appearance.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Resource_handling.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Validation.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Portals.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Functionality_extension.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <xi:include href="Other_components.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <part id="part-Component_Reference-a4j_tag_library">
+ <title>a4j tag library</title>
+ <xi:include href="Ajax_basics.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Resource_handling.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ </part>
+ <part id="part-Component_Reference-rich_tag_library">
+ <title>rich tag library</title>
+ <xi:include href="Rich_inputs.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Panels_and_containers.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Tables_and_grids.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Lists_and_trees.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Menus_and_toolbars.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Messages.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Drag_and_drop.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Layout_and_appearance.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Validation.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Portals.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Functionality_extension.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Other_components.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ </part>
<xi:include href="Revision_History.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<index />
</book>
Deleted: root/docs/trunk/Component_Reference/en-US/Lists_and_trees.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Lists_and_trees.xml 2009-11-12 01:29:57 UTC (rev 15867)
+++ root/docs/trunk/Component_Reference/en-US/Lists_and_trees.xml 2009-11-12 01:40:04 UTC (rev 15868)
@@ -1,95 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="chap-Component_Reference-Lists_and_trees">
- <title>Lists and trees</title>
- <para>
- Incomplete
- </para>
- <section id="sect-Component_Reference-Lists_and_trees-richdataDefinitionList">
- <title>rich:dataDefinitionList</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richdataList">
- <title>rich:dataList</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richdataOrderedList">
- <title>rich:dataOrderedList</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richlistShuttle">
- <title>rich:listShuttle</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richorderingList">
- <title>rich:orderingList</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richpickList">
- <title>rich:pickList</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richchangeExpandListener">
- <title>rich:changeExpandListener</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richnodeSelectListener">
- <title>rich:nodeSelectListener</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richrecursiveTreeNodesAdapter">
- <title>rich:recursiveTreeNodesAdapter</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richtree">
- <title>rich:tree</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richtreeNode">
- <title>rich:treeNode</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richtreeNodesAdapter">
- <title>rich:treeNodesAdapter</title>
- <para>
- Incomplete
- </para>
- </section>
-
-</chapter>
-
Deleted: root/docs/trunk/Component_Reference/en-US/Messages.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Messages.xml 2009-11-12 01:29:57 UTC (rev 15867)
+++ root/docs/trunk/Component_Reference/en-US/Messages.xml 2009-11-12 01:40:04 UTC (rev 15868)
@@ -1,39 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="chap-Component_Reference-Messages">
- <title>Messages</title>
- <para>
- Incomplete
- </para>
- <section id="sect-Component_Reference-Messages-richmessage">
- <title>rich:message</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Messages-richmessages">
- <title>rich:messages</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Messages-richprogressBar">
- <title>rich:progressBar</title>
- <para>
- The <classname><rich:progressBar></classname> component displays a progress bar to indicate the status of a process to the user. It can update either through Ajax or on the client side, and the look and feel can be fully customized.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Messages-richtoolTip">
- <title>rich:toolTip</title>
- <para>
- Incomplete
- </para>
- </section>
-
-</chapter>
-
Copied: root/docs/trunk/Component_Reference/en-US/Output_and_messages.xml (from rev 15865, root/docs/trunk/Component_Reference/en-US/Messages.xml)
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Output_and_messages.xml (rev 0)
+++ root/docs/trunk/Component_Reference/en-US/Output_and_messages.xml 2009-11-12 01:40:04 UTC (rev 15868)
@@ -0,0 +1,39 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Component_Reference-Messages">
+ <title>Messages</title>
+ <para>
+ Incomplete
+ </para>
+ <section id="sect-Component_Reference-Messages-richmessage">
+ <title>rich:message</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Messages-richmessages">
+ <title>rich:messages</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Messages-richprogressBar">
+ <title>rich:progressBar</title>
+ <para>
+ The <classname><rich:progressBar></classname> component displays a progress bar to indicate the status of a process to the user. It can update either through Ajax or on the client side, and the look and feel can be fully customized.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Messages-richtoolTip">
+ <title>rich:toolTip</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+</chapter>
+
Modified: root/docs/trunk/Component_Reference/en-US/Preface.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Preface.xml 2009-11-12 01:29:57 UTC (rev 15867)
+++ root/docs/trunk/Component_Reference/en-US/Preface.xml 2009-11-12 01:40:04 UTC (rev 15868)
@@ -4,10 +4,10 @@
<preface id="pref-Component_Reference-Preface">
<title>Preface</title>
- <!-- FOR JDOCBOOK --><xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR PUBLICAN --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <!-- FOR JDOCBOOK --><xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR PUBLICAN --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</xi:fallback>
</xi:include>
- <!-- PUBLICAN'S ORIGINAL XINCLUDES --><xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="Common_Content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <!-- PUBLICAN'S ORIGINAL XINCLUDES --><xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="Common_Content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</xi:fallback>
</xi:include>
</xi:fallback>
Deleted: root/docs/trunk/Component_Reference/en-US/Resource_handling.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Resource_handling.xml 2009-11-12 01:29:57 UTC (rev 15867)
+++ root/docs/trunk/Component_Reference/en-US/Resource_handling.xml 2009-11-12 01:40:04 UTC (rev 15868)
@@ -1,53 +0,0 @@
-<?xml version='1.0' encoding='utf-8' ?>
-<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-]>
-
-<chapter id="chap-Component_Reference-Resource_handling">
- <title>Resource handling</title>
- <para>
- Incomplete
- </para>
- <section id="sect-Component_Reference-Resource_handling-a4jloadBundle">
- <title>a4j:loadBundle</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Resource_handling-a4jkeepAlive">
- <title>a4j:keepAlive</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Resource_handling-a4jpoll">
- <title>a4j:poll</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Resource_handling-a4jpush">
- <title>a4j:push</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Resource_handling-a4jqueue">
- <title>a4j:queue</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Resource_handling-a4jstatus">
- <title>a4j:status</title>
- <para>
- Incomplete
- </para>
- </section>
-
-</chapter>
-
Copied: root/docs/trunk/Component_Reference/en-US/Resources.xml (from rev 15845, root/docs/trunk/Component_Reference/en-US/Resource_handling.xml)
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Resources.xml (rev 0)
+++ root/docs/trunk/Component_Reference/en-US/Resources.xml 2009-11-12 01:40:04 UTC (rev 15868)
@@ -0,0 +1,53 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Component_Reference-Resource_handling">
+ <title>Resource handling</title>
+ <para>
+ Incomplete
+ </para>
+ <section id="sect-Component_Reference-Resource_handling-a4jloadBundle">
+ <title>a4j:loadBundle</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Resource_handling-a4jkeepAlive">
+ <title>a4j:keepAlive</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Resource_handling-a4jpoll">
+ <title>a4j:poll</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Resource_handling-a4jpush">
+ <title>a4j:push</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Resource_handling-a4jqueue">
+ <title>a4j:queue</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Resource_handling-a4jstatus">
+ <title>a4j:status</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+</chapter>
+
Modified: root/docs/trunk/Component_Reference/en-US/Tables_and_grids.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Tables_and_grids.xml 2009-11-12 01:29:57 UTC (rev 15867)
+++ root/docs/trunk/Component_Reference/en-US/Tables_and_grids.xml 2009-11-12 01:40:04 UTC (rev 15868)
@@ -179,10 +179,11 @@
The <classname><rich:columns></classname> component allows for dynamic sets of columns for tables. Columns and rows can be merged, and the look and feel can be highly customized. The component gets a list from a data model and creates a corresponding set of columns in a <classname><rich:dataTable></classname> component. The <classname><rich:columns></classname> component also supports header and footer facets.
</para>
<para>
- Basic usage of the <classname><rich:columns></classname> component requires the <code>value</code> attribute, which points to the data model; the <code>var</code> attribute, which holds the current variable for the collection of data; and the <code>index</code> attribute, which holds the current counter. The <code>id</code> attribute is used for when the individuals rows require identifiers for Ajax events.
+ Basic usage of the <classname><rich:columns></classname> component requires the <code>value</code> attribute, which points to the data model; the <code>var</code> attribute, which holds the current variable for the collection of data; and the <code>index</code> attribute, which holds the current counter. The <code>id</code> attribute is used for when the individuals rows require identifiers for Ajax events.
</para>
- <example id="exam-Component_Reference-richcolumns-Complex_headers_using_column_groups">
+ <example id="exam-Component_Reference-richcolumns-Basic_columns_example">
<title>Basic columns example</title>
+
<programlisting language="xml">
<rich:dataTable value="#{dataTableScrollerBean.model}" var="model" width="750">
<rich:columns value="#{dataTableScrollerBean.columns}" var="columns" index="ind" id="column#{ind}">
@@ -193,11 +194,11 @@
<h:outputText value="#{model[ind].mileage} miles " />
<h:outputText value="#{model[ind].price}$" />
</rich:columns>
-</rich:dataTable>
+</rich:dataTable>
</programlisting>
</example>
<para>
- The <code>columns</code> attribute
+ The <code>columns</code> attribute
</para>
<para>
For details on filtering and sorting columns, refer to <xref linkend="sect-Component_Reference-Tables_and_grids-Table_filtering" /> and <xref linkend="sect-Component_Reference-Tables_and_grids-Table_sorting" />.
Copied: root/docs/trunk/Component_Reference/en-US/Trees.xml (from rev 15845, root/docs/trunk/Component_Reference/en-US/Lists_and_trees.xml)
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Trees.xml (rev 0)
+++ root/docs/trunk/Component_Reference/en-US/Trees.xml 2009-11-12 01:40:04 UTC (rev 15868)
@@ -0,0 +1,95 @@
+<?xml version='1.0' encoding='utf-8' ?>
+<!DOCTYPE chapter PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
+]>
+
+<chapter id="chap-Component_Reference-Lists_and_trees">
+ <title>Lists and trees</title>
+ <para>
+ Incomplete
+ </para>
+ <section id="sect-Component_Reference-Lists_and_trees-richdataDefinitionList">
+ <title>rich:dataDefinitionList</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richdataList">
+ <title>rich:dataList</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richdataOrderedList">
+ <title>rich:dataOrderedList</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richlistShuttle">
+ <title>rich:listShuttle</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richorderingList">
+ <title>rich:orderingList</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richpickList">
+ <title>rich:pickList</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richchangeExpandListener">
+ <title>rich:changeExpandListener</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richnodeSelectListener">
+ <title>rich:nodeSelectListener</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richrecursiveTreeNodesAdapter">
+ <title>rich:recursiveTreeNodesAdapter</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richtree">
+ <title>rich:tree</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richtreeNode">
+ <title>rich:treeNode</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richtreeNodesAdapter">
+ <title>rich:treeNodesAdapter</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+</chapter>
+
Modified: root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml 2009-11-12 01:29:57 UTC (rev 15867)
+++ root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml 2009-11-12 01:40:04 UTC (rev 15868)
@@ -28,7 +28,7 @@
<year>2009</year>
<holder>Red Hat</holder>
</copyright>
- <!-- FOR PUBLICAN -->
+ <!-- FOR PUBLICAN -->
<legalnotice xml:base="Common_Content/Legal_Notice.xml">
<para>
Copyright <trademark class="copyright"></trademark> 2009 Red Hat This material may only be distributed subject to the terms and conditions set forth in the GNU Free Documentation License (GFDL), V1.2 or later (the latest version is presently available at <ulink url="http://www.gnu.org/licenses/fdl.txt">http://www.gnu.org/licenses/fdl.txt</ulink>).
@@ -46,7 +46,7 @@
</author>
</authorgroup>
</bookinfo>
- <!-- <xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include> -->
+ <!-- <xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include> -->
<chapter id="chap-Component_Reference-Introduction" lang="en-US">
<title>Introduction</title>
<para>
16 years, 8 months
JBoss Rich Faces SVN: r15867 - in root/cdk/trunk/plugins/maven-cdk-plugin/src/it: xml-configured-component and 2 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: alexsmirnov
Date: 2009-11-11 20:29:57 -0500 (Wed, 11 Nov 2009)
New Revision: 15867
Added:
root/cdk/trunk/plugins/maven-cdk-plugin/src/it/xml-configured-component/
root/cdk/trunk/plugins/maven-cdk-plugin/src/it/xml-configured-component/pom.xml
root/cdk/trunk/plugins/maven-cdk-plugin/src/it/xml-configured-component/src/
root/cdk/trunk/plugins/maven-cdk-plugin/src/it/xml-configured-component/src/main/
root/cdk/trunk/plugins/maven-cdk-plugin/src/it/xml-configured-component/src/main/config/
root/cdk/trunk/plugins/maven-cdk-plugin/src/it/xml-configured-component/src/main/java/
root/cdk/trunk/plugins/maven-cdk-plugin/src/it/xml-configured-component/src/main/templates/
Log:
Integration test project for xml-based configuration
Added: root/cdk/trunk/plugins/maven-cdk-plugin/src/it/xml-configured-component/pom.xml
===================================================================
--- root/cdk/trunk/plugins/maven-cdk-plugin/src/it/xml-configured-component/pom.xml (rev 0)
+++ root/cdk/trunk/plugins/maven-cdk-plugin/src/it/xml-configured-component/pom.xml 2009-11-12 01:29:57 UTC (rev 15867)
@@ -0,0 +1,58 @@
+<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/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.richfaces.cdk</groupId>
+ <artifactId>xml-configured-component</artifactId>
+ <name>Test component configured by faces-config</name>
+ <version>0.0.1-SNAPSHOT</version>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.richfaces.cdk</groupId>
+ <artifactId>maven-cdk-plugin</artifactId>
+ <version>4.0.0-SNAPSHOT</version>
+ <configuration>
+ </configuration>
+ <executions>
+ <execution>
+ <id>generate</id>
+ <phase>generate-sources</phase>
+ <goals>
+ <goal>generate</goal>
+ </goals>
+ <inherited>false</inherited>
+ <configuration>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <!-- http://maven.apache.org/plugins/maven-compiler-plugin/ -->
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <dependencies>
+ <dependency>
+ <groupId>com.sun.faces</groupId>
+ <artifactId>jsf-api</artifactId>
+ <version>2.0.2-SNAPSHOT</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.richfaces.cdk</groupId>
+ <artifactId>annotations</artifactId>
+ <version>4.0.0-SNAPSHOT</version>
+ </dependency>
+ <dependency>
+ <groupId>javax.el</groupId>
+ <artifactId>el-api</artifactId>
+ <version>1.2</version>
+ </dependency>
+ </dependencies>
+</project>
\ No newline at end of file
Property changes on: root/cdk/trunk/plugins/maven-cdk-plugin/src/it/xml-configured-component/pom.xml
___________________________________________________________________
Name: svn:mime-type
+ text/plain
16 years, 8 months
JBoss Rich Faces SVN: r15866 - in root/cdk/trunk/plugins/generator: src/main/java/org/richfaces/cdk/model and 1 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: alexsmirnov
Date: 2009-11-11 20:28:45 -0500 (Wed, 11 Nov 2009)
New Revision: 15866
Modified:
root/cdk/trunk/plugins/generator/pom.xml
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ModelCollection.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Renderer.java
root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/model/RendererBean.java
Log:
add tag and attributes to renderer model.
Modified: root/cdk/trunk/plugins/generator/pom.xml
===================================================================
--- root/cdk/trunk/plugins/generator/pom.xml 2009-11-11 23:44:55 UTC (rev 15865)
+++ root/cdk/trunk/plugins/generator/pom.xml 2009-11-12 01:28:45 UTC (rev 15866)
@@ -168,7 +168,7 @@
<dependency>
<groupId>com.google.collections</groupId>
<artifactId>google-collections</artifactId>
- <version>1.0-rc2</version>
+ <version>1.0-rc3</version>
</dependency>
<dependency>
<groupId>dom4j</groupId>
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ModelCollection.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ModelCollection.java 2009-11-11 23:44:55 UTC (rev 15865)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/ModelCollection.java 2009-11-12 01:28:45 UTC (rev 15866)
@@ -42,7 +42,7 @@
* @author asmirnov(a)exadel.com
*
*/
-public abstract class ModelCollection<E extends ModelElement<E, K>, K extends Key>
+public abstract class ModelCollection<E extends ModelElement<? super E, K>, K extends Key>
implements SearchableCollection<E, K>, Visitable, Mergeable<SearchableCollection<E, K>> {
private final BiMap<K, E> elementsMap = HashBiMap.create();
private final BiMap<E, K> reverseMap = elementsMap.inverse();
@@ -107,7 +107,7 @@
@Override
public boolean contains(Object o) {
if (o instanceof ModelElement<?, ?>) {
- K key = ((ModelElement<E, K>) o).getKey();
+ K key = ((ModelElement<?, K>) o).getKey();
return elementsMap.containsKey(key);
}
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Renderer.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Renderer.java 2009-11-11 23:44:55 UTC (rev 15865)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/model/Renderer.java 2009-11-12 01:28:45 UTC (rev 15866)
@@ -25,7 +25,6 @@
package org.richfaces.cdk.model;
-import org.richfaces.builder.model.JavaClass;
import org.richfaces.cdk.CdkException;
import org.richfaces.cdk.templatecompiler.model.Template;
@@ -40,7 +39,24 @@
private ClassDescription rendererClass;
private Template template;
private Type type;
+
+ private boolean rendersChildren;
+
+ private Tag tag;
+ /**
+ * <p class="changed_added_4_0">
+ * Component attributes
+ * </p>
+ */
+ private final SearchableCollection<Attribute, Property.Name> attributes = new ModelCollection<Attribute,
+ Property.Name>() {
+ @Override
+ public Attribute create(Property.Name key) {
+ return new Attribute(key);
+ }
+ };
+
public Renderer() {}
public Renderer(Type type) {
@@ -117,6 +133,46 @@
this.rendererClass = rendererClass;
}
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @return the rendersChildren
+ */
+ public boolean isRendersChildren() {
+ return this.rendersChildren;
+ }
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param rendersChildren the rendersChildren to set
+ */
+ public void setRendersChildren(boolean rendersChildren) {
+ this.rendersChildren = rendersChildren;
+ }
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @return the attributes
+ */
+ public SearchableCollection<Attribute, Property.Name> getAttributes() {
+ return this.attributes;
+ }
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @return the tag
+ */
+ public Tag getTag() {
+ return this.tag;
+ }
+
+ /**
+ * <p class="changed_added_4_0"></p>
+ * @param tag the tag to set
+ */
+ public void setTag(Tag tag) {
+ this.tag = tag;
+ }
+
@Override
public <R, P> R accept(LibraryVisitor<R, P> visitor, P param) throws CdkException {
return visitor.visit(this, param);
Modified: root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/model/RendererBean.java
===================================================================
--- root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/model/RendererBean.java 2009-11-11 23:44:55 UTC (rev 15865)
+++ root/cdk/trunk/plugins/generator/src/main/java/org/richfaces/cdk/xmlconfig/model/RendererBean.java 2009-11-12 01:28:45 UTC (rev 15866)
@@ -21,31 +21,43 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
+package org.richfaces.cdk.xmlconfig.model;
+import java.util.List;
-package org.richfaces.cdk.xmlconfig.model;
-
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;
import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
+import org.richfaces.cdk.model.Attribute;
import org.richfaces.cdk.model.ClassDescription;
import org.richfaces.cdk.model.ComponentLibrary;
import org.richfaces.cdk.model.ConfigExtension;
+import org.richfaces.cdk.model.Property;
+import org.richfaces.cdk.model.Tag;
+import com.google.common.collect.Lists;
+
/**
- * <p class="changed_added_4_0"></p>
+ * <p class="changed_added_4_0">
+ * </p>
+ *
* @author asmirnov(a)exadel.com
- *
+ *
*/
@XmlType(name = "faces-config-rendererType", namespace = ComponentLibrary.FACES_CONFIG_NAMESPACE)
-public class RendererBean extends ExtensibleBean<RendererBean.RendererExtension> {
+public class RendererBean extends
+ ExtensibleBean<RendererBean.RendererExtension> {
+
+ private List<Attribute> attributes = Lists.newArrayList();
private String family;
private ClassDescription rendererClass;
private String type;
/**
- * <p class="changed_added_4_0"></p>
+ * <p class="changed_added_4_0">
+ * </p>
+ *
* @return the type
*/
@XmlElement(name = "renderer-type", namespace = ComponentLibrary.FACES_CONFIG_NAMESPACE)
@@ -54,15 +66,20 @@
}
/**
- * <p class="changed_added_4_0"></p>
- * @param type the type to set
+ * <p class="changed_added_4_0">
+ * </p>
+ *
+ * @param type
+ * the type to set
*/
public void setType(String type) {
this.type = type;
}
/**
- * <p class="changed_added_4_0"></p>
+ * <p class="changed_added_4_0">
+ * </p>
+ *
* @return the family
*/
@XmlElement(name = "component-family", namespace = ComponentLibrary.FACES_CONFIG_NAMESPACE)
@@ -71,15 +88,20 @@
}
/**
- * <p class="changed_added_4_0"></p>
- * @param family the family to set
+ * <p class="changed_added_4_0">
+ * </p>
+ *
+ * @param family
+ * the family to set
*/
public void setFamily(String family) {
this.family = family;
}
/**
- * <p class="changed_added_4_0"></p>
+ * <p class="changed_added_4_0">
+ * </p>
+ *
* @return the rendererClass
*/
@XmlElement(name = "renderer-class", namespace = ComponentLibrary.FACES_CONFIG_NAMESPACE)
@@ -89,15 +111,42 @@
}
/**
- * <p class="changed_added_4_0"></p>
- * @param rendererClass the rendererClass to set
+ * <p class="changed_added_4_0">
+ * </p>
+ *
+ * @param rendererClass
+ * the rendererClass to set
*/
public void setRendererClass(ClassDescription rendererClass) {
this.rendererClass = rendererClass;
}
/**
- * <p class="changed_added_4_0"></p>
+ * <p class="changed_added_4_0">
+ * </p>
+ *
+ * @return the attributes
+ */
+ @XmlElement(name = "attribute", namespace = ComponentLibrary.FACES_CONFIG_NAMESPACE, type = AttributeBean.class)
+ public List<Attribute> getAttributes() {
+ return this.attributes;
+ }
+
+ /**
+ * <p class="changed_added_4_0">
+ * </p>
+ *
+ * @param attributes
+ * the attributes to set
+ */
+ public void setAttributes(List<Attribute> attributes) {
+ this.attributes = attributes;
+ }
+
+ /**
+ * <p class="changed_added_4_0">
+ * </p>
+ *
* @return the extension
*/
@XmlElement(name = "renderer-extension", namespace = ComponentLibrary.FACES_CONFIG_NAMESPACE)
@@ -111,9 +160,59 @@
}
/**
- * <p class="changed_added_4_0"></p>
+ * <p class="changed_added_4_0">
+ * </p>
+ *
* @author asmirnov(a)exadel.com
- *
+ *
*/
- public static class RendererExtension extends ConfigExtension {}
+ public static class RendererExtension extends ConfigExtension {
+ private Tag tag;
+
+ private boolean rendersChildren;
+
+ /**
+ * <p class="changed_added_4_0">
+ * </p>
+ *
+ * @return the tag
+ */
+ @XmlElement(name = "tag", namespace = ComponentLibrary.CDK_EXTENSIONS_NAMESPACE)
+ public Tag getTag() {
+ return this.tag;
+ }
+
+ /**
+ * <p class="changed_added_4_0">
+ * </p>
+ *
+ * @param tag
+ * the tag to set
+ */
+ public void setTag(Tag tag) {
+ this.tag = tag;
+ }
+
+ /**
+ * <p class="changed_added_4_0">
+ * </p>
+ *
+ * @return the rendersChildren
+ */
+ @XmlElement(name = "renders-children", namespace = ComponentLibrary.CDK_EXTENSIONS_NAMESPACE)
+ public boolean isRendersChildren() {
+ return this.rendersChildren;
+ }
+
+ /**
+ * <p class="changed_added_4_0">
+ * </p>
+ *
+ * @param rendersChildren
+ * the rendersChildren to set
+ */
+ public void setRendersChildren(boolean rendersChildren) {
+ this.rendersChildren = rendersChildren;
+ }
+ }
}
16 years, 8 months
JBoss Rich Faces SVN: r15865 - root/docs/trunk/Component_Reference/en-US.
by richfaces-svn-commits@lists.jboss.org
Author: SeanRogers
Date: 2009-11-11 18:44:55 -0500 (Wed, 11 Nov 2009)
New Revision: 15865
Modified:
root/docs/trunk/Component_Reference/en-US/Book_Info.xml
root/docs/trunk/Component_Reference/en-US/Component_Reference.xml
root/docs/trunk/Component_Reference/en-US/Messages.xml
root/docs/trunk/Component_Reference/en-US/Panels_and_containers.xml
root/docs/trunk/Component_Reference/en-US/Preface.xml
root/docs/trunk/Component_Reference/en-US/Tables_and_grids.xml
root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml
Log:
More Component Reference work
Modified: root/docs/trunk/Component_Reference/en-US/Book_Info.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Book_Info.xml 2009-11-11 20:48:15 UTC (rev 15864)
+++ root/docs/trunk/Component_Reference/en-US/Book_Info.xml 2009-11-11 23:44:55 UTC (rev 15865)
@@ -27,7 +27,7 @@
<year>&YEAR;</year>
<holder>&HOLDER;</holder>
</copyright>
- <!-- FOR PUBLICAN --><xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK: --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <!-- FOR PUBLICAN --><xi:include href="Common_Content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK: --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Legal_Notice.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</xi:fallback>
</xi:include>
<xi:include href="Author_Group.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
Modified: root/docs/trunk/Component_Reference/en-US/Component_Reference.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Component_Reference.xml 2009-11-11 20:48:15 UTC (rev 15864)
+++ root/docs/trunk/Component_Reference/en-US/Component_Reference.xml 2009-11-11 23:44:55 UTC (rev 15865)
@@ -4,8 +4,12 @@
<book status="draft">
<xi:include href="Book_Info.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
- <!-- <xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include> --><xi:include href="Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <!--
+ <xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ -->
+ <xi:include href="Introduction.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Common_Ajax_attributes.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <xi:include href="Common_features.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Rich_inputs.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Panels_and_containers.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
<xi:include href="Tables_and_grids.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
Modified: root/docs/trunk/Component_Reference/en-US/Messages.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Messages.xml 2009-11-11 20:48:15 UTC (rev 15864)
+++ root/docs/trunk/Component_Reference/en-US/Messages.xml 2009-11-11 23:44:55 UTC (rev 15865)
@@ -24,7 +24,7 @@
<section id="sect-Component_Reference-Messages-richprogressBar">
<title>rich:progressBar</title>
<para>
- Incomplete
+ The <classname><rich:progressBar></classname> component displays a progress bar to indicate the status of a process to the user. It can update either through Ajax or on the client side, and the look and feel can be fully customized.
</para>
</section>
Modified: root/docs/trunk/Component_Reference/en-US/Panels_and_containers.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Panels_and_containers.xml 2009-11-11 20:48:15 UTC (rev 15864)
+++ root/docs/trunk/Component_Reference/en-US/Panels_and_containers.xml 2009-11-11 23:44:55 UTC (rev 15865)
@@ -80,7 +80,7 @@
<important>
<title>Important</title>
<para>
- The <classname><rich:modalPanel></classname> component should always be placed outside the original <classname><h:form></classname>, and must include its own <classname><h:form></classname> if performing submits.
+ The <classname><rich:modalPanel></classname> component should always be placed outside the original <classname><h:form></classname>, and must include its own <classname><h:form></classname> if performing submissions.
</para>
</important>
<para>
@@ -139,7 +139,7 @@
By default, the event to expand the menu is a mouse click. This can be changed by setting <code>event</code> to specify the preferred event. Several sub-menus can be expanded a once unless the <code>expandSingle</code> is set to <literal>true</literal>, which only allows one sub-menu at a time to be expanded.
</para>
<para>
- The <code>mode</code> attribute defines the submission mode for normal menu items, and the <code>expandMode</code> attribute defines the submission mode for menu items that expand and collapse. The settings for these attributes apply to the entire menu unless a menu item defines its own individual <code>mode</code> or <code>expandMode</code>. The values for <code>mode</code> and <code>expandMode</code> are:
+ The <code>mode</code> attribute defines the submission mode for normal menu items that link to content, and the <code>expandMode</code> attribute defines the submission mode for menu items that expand and collapse. The settings for these attributes apply to the entire menu unless a menu item defines its own individual <code>mode</code> or <code>expandMode</code>. The values for <code>mode</code> and <code>expandMode</code> are:
</para>
<itemizedlist>
<listitem>
@@ -169,58 +169,231 @@
If the <code>expandMode</code> is unspecified, the submission behavior for the group is inherited from the parent <classname><rich:panelMenu></classname>. Otherwise, the <code>expandMode</code> setting is used instead of the parent's behavior.
</para>
<para>
- Icons for menu items can be chosen from a set of standard icons. There are three attributes that relate to the different menu states that the icon represents: <code>iconExpanded</code>, <code>iconCollapsed</code>, and <code>iconDisabled</code>. The standard icons are shown in <xref linkend="figu-Component_Reference-richpanelMenuGroup-Standard_icons" />.
+ Icons for the menu group can be chosen from a set of standard icons. There are three attributes that relate to the different menu states that the icon represents: <code>iconExpanded</code>, <code>iconCollapsed</code>, and <code>iconDisabled</code>. The standard icons are shown in <xref linkend="figu-Component_Reference-richpanelMenuGroup-Standard_icons" />.
</para>
<figure id="figu-Component_Reference-richpanelMenuGroup-Standard_icons">
<title>Standard icons</title>
<mediaobject>
<imageobject>
- <imagedata fileref="images/panelMenuGroupIcons.png" format="PNG" />
+ <imagedata fileref="images/panelMenuIcons.png" format="PNG" />
</imageobject>
</mediaobject>
</figure>
+ <para>
+ Alternatively, a path can be defined that points to an image file to use as an icon.
+ </para>
+ <example id="exam-Component_Reference-richpanelMenuGroup-Using_custom_icons">
+ <title>Using custom icons</title>
+
+<programlisting language="xml">
+<rich:panelMenu>
+ <rich:PanelMenuGroup label="Group 1" iconExpanded="\images\img1.png" iconCollapsed="\images\img2.png">>
+ <!--Nested menu components-->
+ </rich:panelMenuGroup>
+</rich:panelMenu>
+</programlisting>
+ </example>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richpanelMenuItem">
<title><rich:panelMenuItem></title>
<para>
- Incomplete
+ The <classname><rich:panelMenuItem></classname> component represents a single item inside a <classname><rich:panelMenuGroup></classname> component, which is in turn part of a <classname><rich:panelMenu></classname> component.
</para>
+ <para>
+ If the <code>mode</code> is unspecified, the submission behavior for the item is inherited from the parent <classname><rich:panelMenu></classname>. Otherwise, the <code>mode</code> setting is used instead of the parent's behavior.
+ </para>
+ <para>
+ Icons for menu items can be chosen from a set of standard icons. There are two attributes that relate to the different menu states that the icon represents: <code>icon</code> and <code>iconDisabled</code>. The standard icons are shown in <xref linkend="figu-Component_Reference-richcolumn-Basic_column_example" />.
+ </para>
+ <figure id="figu-Component_Reference-richpanelMenuItem-Standard_icons">
+ <title>Standard icons</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/panelMenuIcons.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ Alternatively, a path can be defined that points to an image file to use as an icon.
+ </para>
+ <example id="exam-Component_Reference-richpanelMenuItem-Using_custom_icons">
+ <title>Using custom icons</title>
+
+<programlisting language="xml">
+<rich:panelMenu>
+ ...
+ <rich:panelMenuItem value="Item 1.1" icon="\images\img1.png" iconDisabled="\images\img2.png" />
+ ...
+</rich:panelMenu>
+</programlisting>
+ </example>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richsimpleTogglePanel">
<title><rich:simpleTogglePanel></title>
<para>
- Incomplete
+ The <classname><rich:simpleTogglePanel></classname> component is a collapsible panel that shows or hides content when the header bar is activated. It is a simplified version of <classname><rich:togglePanel></classname> component.
</para>
+ <para>
+ Basic usage requires only the <code>label</code> attribute to be specified, which provides the title for the header element.
+ </para>
+ <para>
+ The switching mode for performing submissions is determined by the <code>switchType</code> attribute, which can have one of the following three values:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>server</literal>, the default setting, which causes the <classname><rich:simpleTogglePanel></classname> component to perform a common submission, completely re-rendering the page. Only one panel at a time is uploaded to the client side.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>ajax</literal>, which causes the <classname><rich:simpleTogglePanel></classname> component to perform an Ajax form submission, and the content of the panel is rendered. Only one panel at a time is uploaded to the client side.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>client</literal>, which causes <classname><rich:simpleTogglePanel></classname> components to update on the client side, re-rendering themselves and any additional components listed with the <code>render</code> attribute.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ If the <classname><rich:simpleTogglePanel></classname> component uses <code>opened="true"</code>, the panel is open and expanded, otherwise it is closed and collapsed.
+ </para>
+ <para>
+ The <code>openMarker</code> and <code>closeMarker</code> attributes can be used to define custom icons for the expanding header.
+ </para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richtabPanel">
<title><rich:tabPanel></title>
<para>
- Incomplete
+ The <classname><rich:tabPanel></classname> component provides a set of tabbed panels for displaying one panel of content at a time. The tabs can be highly customized and themed.
</para>
+ <note>
+ <title>Note</title>
+ <para>
+ All <classname><rich:tabPanel></classname> components should be wrapped in a form element so that content is correctly submitted.
+ </para>
+ </note>
+ <para>
+ The switching mode for performing submissions is determined by the <code>switchType</code> attribute, which can have one of the following three values:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>server</literal>, the default setting, which causes the <classname><rich:tabPanel></classname> component to perform a common submission, completely re-rendering the page. Only one panel at a time is uploaded to the client side.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>ajax</literal>, which causes the <classname><rich:tabPanel></classname> component to perform an Ajax form submission, and the content of the panel is rendered. Only one panel at a time is uploaded to the client side.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>client</literal>, which causes <classname><rich:tabPanel></classname> components to update on the client side, re-rendering themselves and any additional components listed with the <code>render</code> attribute.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ The <code>selectedTab</code> attribute holds the active tab name.
+ </para>
+ <para>
+ The tabs themselves can be aligned using the <code>headerAlignment</code> attribute. The attribute can be set to <code>left</code>, <code>center</code>, or <code>right</code>, aligning the header tabs to the left, center, or right of the top edge of the panel respectively. If no alignment is specified, left-alignment is the default behavior.
+ </para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richtab">
<title><rich:tab></title>
<para>
- Incomplete
+ The <classname><rich:tab></classname> component represents an individual tab inside a <classname><rich:tabPanel></classname> component, including the tab's content. Clicking on the tab header will bring its corresponding content to the front of other tabs.
</para>
+ <para>
+ Basic usage of the <classname><rich:tab></classname> component requires the <code>label</code> attribute, which provides the text on the tab header. The content of the tab is then detailed inside the <classname><rich:tab></classname> tags.
+ </para>
+ <para>
+ An individual tab can be disabled by setting <code>disabled="true"</code>. Disabled tabs cannot be activated or switched to.
+ </para>
+ <para>
+ The switching mode for performing submissions can be inherited from <code>switchMode</code> attribute of the parent <classname><rich:tabPanel></classname> component, or set individually for each <classname><rich:tab></classname> component. Refer to <xref linkend="sect-Component_Reference-Panels_and_containers-richtabPanel" /> for details on the <code>switchMode</code> attribute.
+ </para>
+ <para>
+ There are two event handlers that are unique to the <classname><rich:tab></classname> component. The <code>ontabenter</code> attribute points to the function to perform when the mouse enters the tab, while the <code>ontableave</code> attribute points to the function to perform when the mouse leaves the tab.
+ </para>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richtogglePanel">
<title><rich:togglePanel></title>
<para>
- Incomplete
+ The <classname><rich:togglePanel></classname> component is a wrapper component with named facets. Each facet is displayed after activating a corresponding <classname><rich:toggleControl></classname> component.
</para>
+ <para>
+ The initial state of the component can be configured using the <code>initialState</code> attribute, which points to a facet name to display. Alternatively, setting <code>initialState="empty"</code>, the initial state will be blank until the user selects an option.
+ </para>
+ <para>
+ The order in which the facets are shown can be defined using the <code>statusOrder</code> attribute, listing the facet names separated by commas, as shown in <xref linkend="exam-Component_Reference-richtogglePanel-State_order_example" />.
+ </para>
+ <example id="exam-Component_Reference-richtogglePanel-State_order_example">
+ <title>State order example</title>
+
+<programlisting language="xml">
+>rich:togglePanel id="panel" initialState="panelB" switchType="client" stateOrder="panelA,panelB,panelC"<
+ >f:facet name="panelA"<
+ ...
+ >/f:facet<
+ >f:facet name="panelB"<
+ ...
+ >/f:facet<
+ >f:facet name="panelC"<
+ ...
+ >/f:facet<
+>/rich:togglePanel<
+>rich:toggleControl for="panel" value="Switch"/<
+</programlisting>
+ </example>
</section>
<section id="sect-Component_Reference-Panels_and_containers-richtoggleControl">
<title><rich:toggleControl></title>
<para>
- Incomplete
+ The <classname><rich:toggleControl></classname> component works with a <classname><rich:togglePanel></classname> component to switch between panel states. It can be located either inside or outside the <classname><rich:togglePanel></classname> component, and can be used to switch to a specific state or cycle through a set of states.
</para>
+ <para>
+ Basic usage for the <classname><rich:toggleControl></classname> requires the <code>for</code> attribute, which points to the <code>id</code> attribute of the <classname><rich:togglePanel></classname> that it controls. The <code>value</code> attribute specifies the label of the toggle button.
+ </para>
+ <para>
+ The <code>switchToState</code> attribute can be used to explicitly set a target panel for the toggle to activate. If no <code>switchToState</code> attribute is defined, the toggle will switch to the next panel listed in the <code>switchOrder</code> attribute of the <classname><rich:toggleControl></classname> component. <xref linkend="exam-Component_Reference-richtoggleControl-Switching_panel_states" /> shows the use of the <code>switchToState</code> attribute.
+ </para>
+ <example id="exam-Component_Reference-richtoggleControl-Switching_panel_states">
+ <title>Switching panel states</title>
+
+<programlisting language="xml">
+<rich:togglePanel id="panel" initialState="empty" switchType="client">
+ <f:facet name="first">
+ <h:panelGroup>
+ <rich:toggleControl for="helloForm:panel" value="Empty" switchToState="empty"/>
+ <rich:toggleControl for="helloForm:panel" value=" Second" switchToState="second"/>
+ <!--Some content-->
+ </h:panelGroup>
+ </f:facet>
+ <f:facet name="second">
+ <h:panelGroup>
+ <rich:toggleControl for="helloForm:panel" value="Empty" switchToState="empty"/>
+ <rich:toggleControl for="helloForm:panel" value=" first" switchToState="first"/>
+ <!--Some content-->
+ </h:panelGroup>
+ </f:facet>
+ <f:facet name="empty">
+ <h:panelGroup>
+ <rich:toggleControl for="helloForm:panel" value="first" switchToState="first"/>
+ <rich:toggleControl for="helloForm:panel" value=" second" switchToState="second"/>
+ </h:panelGroup>
+ </f:facet>
+</rich:togglePanel>
+</programlisting>
+ </example>
</section>
</chapter>
Modified: root/docs/trunk/Component_Reference/en-US/Preface.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Preface.xml 2009-11-11 20:48:15 UTC (rev 15864)
+++ root/docs/trunk/Component_Reference/en-US/Preface.xml 2009-11-11 23:44:55 UTC (rev 15865)
@@ -4,10 +4,10 @@
<preface id="pref-Component_Reference-Preface">
<title>Preface</title>
- <!-- FOR JDOCBOOK --><xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR PUBLICAN --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <!-- FOR JDOCBOOK --><xi:include href="Common_Content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR PUBLICAN --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Conventions.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</xi:fallback>
</xi:include>
- <!-- PUBLICAN'S ORIGINAL XINCLUDES --><xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="Common_Content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
+ <!-- PUBLICAN'S ORIGINAL XINCLUDES --><xi:include href="Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="Common_Content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"><!-- FOR JDOCBOOK --><xi:fallback xmlns:xi="http://www.w3.org/2001/XInclude"><xi:include href="fallback_content/Feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include>
</xi:fallback>
</xi:include>
</xi:fallback>
Modified: root/docs/trunk/Component_Reference/en-US/Tables_and_grids.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/Tables_and_grids.xml 2009-11-11 20:48:15 UTC (rev 15864)
+++ root/docs/trunk/Component_Reference/en-US/Tables_and_grids.xml 2009-11-11 23:44:55 UTC (rev 15865)
@@ -5,33 +5,209 @@
<chapter id="chap-Component_Reference-Tables_and_grids">
<title>Tables and grids</title>
<para>
- Incomplete
+ This chapter covers all components related to the display of tables and grids.
</para>
<section id="sect-Component_Reference-Tables_and_grids-richcolumn">
<title>rich:column</title>
<para>
- Incomplete
+ The <classname><rich:column></classname> component facilitates columns in a table or other <classname>UIData</classname> component. It supports merging columns and rows, sorting, filtering, and customized skinning.
</para>
+ <para>
+ In general usage, the the <classname><rich:column></classname> component is used in the same was as the JavaServer Faces (<acronym>JSF</acronym>) <classname><h:column></classname> component. It requires no extra attributes for basic usage, as shown in <xref linkend="exam-Component_Reference-richcolumn-Basic_column_example" /> and the resulting <xref linkend="figu-Component_Reference-richcolumn-Basic_column_example" />.
+ </para>
+ <example id="exam-Component_Reference-richcolumn-Basic_column_example">
+ <title>Basic column example</title>
+
+<programlisting language="xml">
+<rich:dataTable value="#{capitalsBean.capitals}" var="cap" rows="5">
+ <rich:column>
+ <f:facet name="header">State Flag</f:facet>
+ <h:graphicImage value="#{cap.stateFlag}"/>
+ </rich:column>
+ <rich:column>
+ <f:facet name="header">State Name</f:facet>
+ <h:outputText value="#{cap.state}"/>
+ </rich:column>
+ <rich:column >
+ <f:facet name="header">State Capital</f:facet>
+ <h:outputText value="#{cap.name}"/>
+ </rich:column>
+ <rich:column>
+ <f:facet name="header">Time Zone</f:facet>
+ <h:outputText value="#{cap.timeZone}"/>
+ </rich:column>
+</rich:dataTable>
+</programlisting>
+ </example>
+ <figure id="figu-Component_Reference-richcolumn-Basic_column_example">
+ <title>Basic column example</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/figu-Component_Reference-richcolumn-Basic_column_example.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ Columns can be merged by using the <code>colspan</code> attribute to specify how many normal columns to span. The <code>colspan</code> attribute is used in conjunction with the <code>breakBefore</code> attribute on the next column to determine how the merged columns are laid out. <xref linkend="exam-Component_Reference-richcolumn-Column_spanning_example" /> and the resulting <xref linkend="figu-Component_Reference-richcolumn-Column_spanning_example" /> show the first column spanning a width of three columns, with the others broken on to the following line.
+ </para>
+ <example id="exam-Component_Reference-richcolumn-Column_spanning_example">
+ <title>Column spanning example</title>
+
+<programlisting language="xml">
+<rich:dataTable value="#{capitalsBean.capitals}" var="cap" rows="5">
+ <rich:column colspan="3">
+ <h:graphicImage value="#{cap.stateFlag}"/>
+ </rich:column>
+ <rich:column breakBefore="true">
+ <h:outputText value="#{cap.state}"/>
+ </rich:column>
+ <rich:column >
+ <h:outputText value="#{cap.name}"/>
+ </rich:column>
+ <rich:column>
+ <h:outputText value="#{cap.timeZone}"/>
+ </rich:column>
+</rich:dataTable>
+</programlisting>
+ </example>
+ <figure id="figu-Component_Reference-richcolumn-Column_spanning_example">
+ <title>Column spanning example</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/figu-Component_Reference-richcolumn-Column_spanning_example.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ Similarly, the <code>rowspan</code> attribute can be used to merge and span rows. Again the <code>breakBefore</code> attribute needs to be used on related <classname><rich:column></classname> components to define the layout. <xref linkend="exam-Component_Reference-richcolumn-Row_spanning_example" /> and the resulting <xref linkend="figu-Component_Reference-richcolumnGroup-Complex_headers_using_column_groups" /> show the first column of the table spanning three rows.
+ </para>
+ <example id="exam-Component_Reference-richcolumn-Row_spanning_example">
+ <title>Row spanning example</title>
+
+<programlisting language="xml">
+<rich:dataTable value="#{capitalsBean.capitals}" var="cap" rows="5">
+ <rich:column rowspan="3">
+ <f:facet name="header">State Flag</f:facet>
+ <h:graphicImage value="#{cap.stateFlag}"/>
+ </rich:column>
+ <rich:column>
+ <f:facet name="header">State Info</f:facet>
+ <h:outputText value="#{cap.state}"/>
+ </rich:column>
+ <rich:column breakBefore="true">
+ <h:outputText value="#{cap.name}"/>
+ </rich:column>
+ <rich:column breakBefore="true">
+ <h:outputText value="#{cap.timeZone}"/>
+ </rich:column>
+</rich:dataTable>
+</programlisting>
+ </example>
+ <figure id="figu-Component_Reference-richcolumn-Row_spanning_example">
+ <title>Row spanning example</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/figu-Component_Reference-richcolumn-Row_spanning_example.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+ <para>
+ For details on filtering and sorting columns, refer to <xref linkend="sect-Component_Reference-Tables_and_grids-Table_filtering" /> and <xref linkend="sect-Component_Reference-Tables_and_grids-Table_sorting" />.
+ </para>
</section>
<section id="sect-Component_Reference-Tables_and_grids-richcolumnGroup">
<title>rich:columnGroup</title>
<para>
- Incomplete
+ The <classname><rich:columnGroup></classname> component combines multiple columns in a single row to organize complex parts of a table. The resulting effect is similar to using the <code>breakBefore</code> attribute of the <classname><rich:column></classname> component, but is clearer and easier to follow in the source code.
</para>
+ <para>
+ The <classname><rich:columnGroup></classname> can also be used to create complex headers in a table. <xref linkend="exam-Component_Reference-richcolumnGroup-Complex_headers_using_column_groups" /> and the resulting <xref linkend="figu-Component_Reference-richcolumnGroup-Complex_headers_using_column_groups" /> demonstrate how complex headers can be achieved.
+ </para>
+ <example id="exam-Component_Reference-richcolumnGroup-Complex_headers_using_column_groups">
+ <title>Complex headers using column groups</title>
+
+<programlisting language="xml">
+<rich:dataTable value="#{capitalsBean.capitals}" var="cap" rows="5" id="sublist">
+ <f:facet name="header">
+ <rich:columnGroup>
+ <rich:column rowspan="2">
+ <h:outputText value="State Flag"/>
+ </rich:column>
+ <rich:column colspan="3">
+ <h:outputText value="State Info"/>
+ </rich:column>
+ <rich:column breakBefore="true">
+ <h:outputText value="State Name"/>
+ </rich:column>
+ <rich:column>
+ <h:outputText value="State Capital"/>
+ </rich:column>
+ <rich:column>
+ <h:outputText value="Time Zone"/>
+ </rich:column>
+ </rich:columnGroup>
+ </f:facet>
+ <rich:column>
+ <h:graphicImage value="#{cap.stateFlag}"/>
+ </rich:column>
+ <rich:column>
+ <h:outputText value="#{cap.state}"/>
+ </rich:column>
+ <rich:column>
+ <h:outputText value="#{cap.name}"/>
+ </rich:column>
+ <rich:column>
+ <h:outputText value="#{cap.timeZone}"/>
+ </rich:column>
+</rich:dataTable>
+</programlisting>
+ </example>
+ <figure id="figu-Component_Reference-richcolumnGroup-Complex_headers_using_column_groups">
+ <title>Complex headers using column groups</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/figu-Component_Reference-richcolumnGroup-Complex_headers_using_column_groups.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </figure>
</section>
<section id="sect-Component_Reference-Tables_and_grids-richcolumns">
<title>rich:columns</title>
<para>
- Incomplete
+ The <classname><rich:columns></classname> component allows for dynamic sets of columns for tables. Columns and rows can be merged, and the look and feel can be highly customized. The component gets a list from a data model and creates a corresponding set of columns in a <classname><rich:dataTable></classname> component. The <classname><rich:columns></classname> component also supports header and footer facets.
</para>
+ <para>
+ Basic usage of the <classname><rich:columns></classname> component requires the <code>value</code> attribute, which points to the data model; the <code>var</code> attribute, which holds the current variable for the collection of data; and the <code>index</code> attribute, which holds the current counter. The <code>id</code> attribute is used for when the individuals rows require identifiers for Ajax events.
+ </para>
+ <example id="exam-Component_Reference-richcolumns-Complex_headers_using_column_groups">
+ <title>Basic columns example</title>
+<programlisting language="xml">
+<rich:dataTable value="#{dataTableScrollerBean.model}" var="model" width="750">
+ <rich:columns value="#{dataTableScrollerBean.columns}" var="columns" index="ind" id="column#{ind}">
+ <f:facet name="header">
+ <h:outputText value="#{columns.header}" />
+ </f:facet>
+ <h:outputText value="#{model[ind].model} " />
+ <h:outputText value="#{model[ind].mileage} miles " />
+ <h:outputText value="#{model[ind].price}$" />
+ </rich:columns>
+</rich:dataTable>
+</programlisting>
+ </example>
+ <para>
+ The <code>columns</code> attribute
+ </para>
+ <para>
+ For details on filtering and sorting columns, refer to <xref linkend="sect-Component_Reference-Tables_and_grids-Table_filtering" /> and <xref linkend="sect-Component_Reference-Tables_and_grids-Table_sorting" />.
+ </para>
</section>
<section id="sect-Component_Reference-Tables_and_grids-richdataFilterSlider">
<title>rich:dataFilterSlider</title>
<para>
- Incomplete
+ The <classname><rich:dataFilterSlider></classname> components is a slider control that can be used for filtering data in a table.
</para>
</section>
Modified: root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml
===================================================================
--- root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml 2009-11-11 20:48:15 UTC (rev 15864)
+++ root/docs/trunk/Component_Reference/en-US/all-Component_Reference.xml 2009-11-11 23:44:55 UTC (rev 15865)
@@ -1,96 +1,92 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version='1.0' encoding='utf-8' ?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
-<!ENTITY % BOOK_ENTITIES SYSTEM "Component_Reference.ent">
-<!ENTITY PRODUCT "RichFaces">
-<!ENTITY VERSION "4.0">
-<!ENTITY VERSION_LONG "4.0.0.ALPHA2">
-<!ENTITY BOOKID "Component_Reference">
-<!ENTITY HOLDER "Red Hat">
-<!ENTITY YEAR "2009">
]>
-<book lang="en-US" status="draft">
+
+<book status="draft">
<bookinfo id="book-Component_Reference-Component_Reference" lang="en-US">
- <title>Component Reference</title>
- <subtitle>A reference guide to the components of the RichFaces 4.0.0.ALPHA2<remark> (draft)</remark>
- framework</subtitle>
- <productname>RichFaces</productname>
- <productnumber>4.0</productnumber>
- <edition>0.1</edition>
- <pubsnumber>0</pubsnumber>
- <abstract>
- <para>This book details each component in the RichFaces 4.0
-framework, including examples of their use in applications.</para></abstract>
- <corpauthor>
- <inlinemediaobject>
- <imageobject>
- <imagedata fileref="./images/rf_logo.png" format="PNG" scalefit="1"/>
- </imageobject>
- <textobject>
- <phrase>Logo</phrase>
- </textobject>
- </inlinemediaobject>
- </corpauthor>
- <copyright>
- <year>2009</year>
- <holder>Red Hat</holder>
- </copyright>
- <!-- FOR PUBLICAN --><legalnotice xml:base="Common_Content/Legal_Notice.xml">
- <para>
- Copyright <trademark class="copyright"/> 2009 Red Hat This material may only be distributed subject to the terms and conditions set forth in the GNU Free Documentation License (GFDL), V1.2 or later (the latest version is presently available at <ulink url="http://www.gnu.org/licenses/fdl.txt">http://www.gnu.org/licenses/fdl.txt</ulink>).
- </para>
-</legalnotice>
- <authorgroup lang="en-US">
- <author>
- <firstname>Sean</firstname>
- <surname>Rogers</surname>
- <affiliation>
- <orgname>Red Hat</orgname>
- <orgdiv>Engineering Content Services</orgdiv>
- </affiliation>
- <email>serogers(a)redhat.com</email>
- </author>
-</authorgroup>
- </bookinfo>
- <!-- <xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include> --><chapter id="chap-Component_Reference-Introduction" lang="en-US">
- <title>Introduction</title>
- <para>
- This book is a guide to the various components available in the RichFaces 4.0 framework. It includes descriptions of the role of the components, details on how best to use them, coded examples of their use, and basic references of their properties and attributes.
- </para>
- <para>
- For full in-depth references for all component classes and properties, refer to the <citetitle>API Reference</citetitle> available from the RichFaces website.
- </para>
- <section id="sect-Component_Reference-Introduction-Libraries">
- <title>Libraries</title>
- <para>
- The RichFaces framework as it now stands is made up of two tag libraries: the <classname>a4j</classname> library and the <classname>rich</classname> library. The <classname>a4j</classname> tag library represents Ajax4jsf, which provides page-level Ajax support with core Ajax components. This allows developers to make use of custom Ajax behavior with existing components. The <classname>rich</classname> tag library provides Ajax support at the component level instead, and includes ready-made, self-contained components. These components don't require additional configuration in order to send requests or update.
- </para>
- <note>
- <title>Note</title>
- <para>
- All components in the <classname>a4j</classname> library feature built-in Ajax support, so it is unnecessary to add the <classname><a4j:ajax></classname> behavior.
- </para>
- </note>
- </section>
+ <title>Component Reference</title>
+ <subtitle>A reference guide to the components of the RichFaces 4.0.0.ALPHA2<remark> (draft)</remark>
+ framework</subtitle>
+ <productname>RichFaces</productname>
+ <productnumber>4.0</productnumber>
+ <edition>0.1</edition>
+ <pubsnumber>0</pubsnumber>
+ <abstract>
+ <para>This book details each component in the RichFaces 4.0 framework,
+including examples of their use in applications.</para></abstract>
+ <corpauthor>
+ <inlinemediaobject>
+ <imageobject>
+ <imagedata fileref="./images/rf_logo.png" format="PNG" scalefit="1" />
+ </imageobject>
+ <textobject>
+ <phrase>Logo</phrase>
+ </textobject>
+ </inlinemediaobject>
+ </corpauthor>
+ <copyright>
+ <year>2009</year>
+ <holder>Red Hat</holder>
+ </copyright>
+ <!-- FOR PUBLICAN -->
+ <legalnotice xml:base="Common_Content/Legal_Notice.xml">
+ <para>
+ Copyright <trademark class="copyright"></trademark> 2009 Red Hat This material may only be distributed subject to the terms and conditions set forth in the GNU Free Documentation License (GFDL), V1.2 or later (the latest version is presently available at <ulink url="http://www.gnu.org/licenses/fdl.txt">http://www.gnu.org/licenses/fdl.txt</ulink>).
+ </para>
+ </legalnotice>
+ <authorgroup lang="en-US">
+ <author>
+ <firstname>Sean</firstname>
+ <surname>Rogers</surname>
+ <affiliation>
+ <orgname>Red Hat</orgname>
+ <orgdiv>Engineering Content Services</orgdiv>
+ </affiliation>
+ <email>serogers(a)redhat.com</email>
+ </author>
+ </authorgroup>
+ </bookinfo>
+ <!-- <xi:include href="Preface.xml" xmlns:xi="http://www.w3.org/2001/XInclude"></xi:include> -->
+ <chapter id="chap-Component_Reference-Introduction" lang="en-US">
+ <title>Introduction</title>
+ <para>
+ This book is a guide to the various components available in the RichFaces 4.0 framework. It includes descriptions of the role of the components, details on how best to use them, coded examples of their use, and basic references of their properties and attributes.
+ </para>
+ <para>
+ For full in-depth references for all component classes and properties, refer to the <citetitle>API Reference</citetitle> available from the RichFaces website.
+ </para>
+ <section id="sect-Component_Reference-Introduction-Libraries">
+ <title>Libraries</title>
+ <para>
+ The RichFaces framework as it now stands is made up of two tag libraries: the <classname>a4j</classname> library and the <classname>rich</classname> library. The <classname>a4j</classname> tag library represents Ajax4jsf, which provides page-level Ajax support with core Ajax components. This allows developers to make use of custom Ajax behavior with existing components. The <classname>rich</classname> tag library provides Ajax support at the component level instead, and includes ready-made, self-contained components. These components don't require additional configuration in order to send requests or update.
+ </para>
+ <note>
+ <title>Note</title>
+ <para>
+ All components in the <classname>a4j</classname> library feature built-in Ajax support, so it is unnecessary to add the <classname><a4j:ajax></classname> behavior.
+ </para>
+ </note>
+ </section>
-</chapter>
- <chapter id="chap-Component_Reference-Common_Ajax_attributes" lang="en-US">
- <title>Common Ajax attributes</title>
- <para>
- The Ajax components in the <classname>a4j</classname> library share common attributes to perform similar functionality. Most RichFaces components in the <classname>rich</classname> library that feature built-in Ajax support share these common attributes as well.
- </para>
- <para>
- Most attributes have default values, so they need not be explicitly set for the component to function in its default state. These attributes can be altered to customize the behavior of the component if necessary.
- </para>
- <section id="sect-Component_Reference-Common_Ajax_attributes-Rendering">
- <title>Rendering</title>
- <section id="sect-Component_Reference-Rendering-render">
- <title><code>render</code></title>
- <para>
- The <code>render</code> attribute provides a reference to one or more areas on the page that need updating after an Ajax interaction. It uses the <code>UIComponent.findComponent()</code> algorithm to find the components in the component tree using their <code>id</code> attributes as a reference. Components can be referenced by their <code>id</code> attribute alone, or by a hierarchy of components' <code>id</code> attributes to make locating components more efficient. <xref linkend="exam-Component_Reference-render-render_example"/> shows both ways of referencing components. Each command button will correctly render the referenced panel grids, but the second button locates the references more efficiently with explicit hierarchy paths.
- </para>
- <example id="exam-Component_Reference-render-render_example">
- <title>render example</title>
-
+ </chapter>
+ <chapter id="chap-Component_Reference-Common_Ajax_attributes" lang="en-US">
+ <title>Common Ajax attributes</title>
+ <para>
+ The Ajax components in the <classname>a4j</classname> library share common attributes to perform similar functionality. Most RichFaces components in the <classname>rich</classname> library that feature built-in Ajax support share these common attributes as well.
+ </para>
+ <para>
+ Most attributes have default values, so they need not be explicitly set for the component to function in its default state. These attributes can be altered to customize the behavior of the component if necessary.
+ </para>
+ <section id="sect-Component_Reference-Common_Ajax_attributes-Rendering">
+ <title>Rendering</title>
+ <section id="sect-Component_Reference-Rendering-render">
+ <title><code>render</code></title>
+ <para>
+ The <code>render</code> attribute provides a reference to one or more areas on the page that need updating after an Ajax interaction. It uses the <code>UIComponent.findComponent()</code> algorithm to find the components in the component tree using their <code>id</code> attributes as a reference. Components can be referenced by their <code>id</code> attribute alone, or by a hierarchy of components' <code>id</code> attributes to make locating components more efficient. <xref linkend="exam-Component_Reference-render-render_example" /> shows both ways of referencing components. Each command button will correctly render the referenced panel grids, but the second button locates the references more efficiently with explicit hierarchy paths.
+ </para>
+ <example id="exam-Component_Reference-render-render_example">
+ <title>render example</title>
+
<programlisting language="xml">
<h:form id="form1">
<a4j:commandButton value="Basic reference" render="infoBlock, infoBlock2" />
@@ -107,42 +103,42 @@
</h:panelGrid>
</f:subview>
</programlisting>
- </example>
- <para>
- The value of the <code>render</code> attribute can also be an expression written using JavaServer Faces' Expression Language (<acronym>EL</acronym>); this can either be a <type>Set</type>, <type>Collection</type>, <type>Array</type>, or <type>String</type>.
- </para>
- <important>
- <title>Important</title>
- <para>
- A common problem with using <code>render</code> occurs when the referenced component has a <code>rendered</code> attribute. <acronym>JSF</acronym> does not mark the place in the browser's Document Object Model (<acronym>DOM</acronym>) where the rendered component would be placed in case the <code>rendered</code> attribute returns <literal>false</literal>. As such, when RichFaces sends the render code to the client, the page does not update as the place for the update is not known.
- </para>
- <para>
- To work around this issue, wrap the component to be rendered in an <classname><a4j:outputPanel></classname> with <code>layout="none"</code>. The <classname><a4j:outputPanel></classname> will receive the update and render the component as required.
- </para>
- </important>
- </section>
-
- <section id="sect-Component_Reference-Rendering-ajaxRendered">
- <title>ajaxRendered</title>
- <para>
- A component with <code>ajaxRendered="true"</code> will be re-rendered with <emphasis>every</emphasis> Ajax request, even when not referenced by the requesting component's <code>render</code> attribute. This can be useful for updating a status display or error message without explicitly requesting it.
- </para>
- <para>
- Rendering of components in this way can be repressed by adding <code>limitRender="true"</code> to the requesting component, as described in <xref linkend="sect-Component_Reference-Rendering-limitRender"/>.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Rendering-limitRender">
- <title>limitRender</title>
- <para>
- A component with <code>limitRender="true"</code> specified will <emphasis>not</emphasis> cause components with <code>ajaxRendered="true"</code> to re-render, and only those components listed in the <code>render</code> attribute will be updated. This essentially overrides the <code>ajaxRendered</code> attribute in other components.
- </para>
- <para>
- <xref linkend="exam-Component_Reference-data-Data_reference_example"/> describes two command buttons, a panel grid rendered by the buttons, and an output panel showing error messages. When the first button is clicked, the output panel is rendered even though it is not explicitly referenced with the <code>render</code> attribute. The second button, however, uses <code>limitRender="true"</code> to override the output panel's rendering and only render the panel grid.
- </para>
- <example id="exam-Component_Reference-limitRender-Rendering_example">
- <title>Rendering example</title>
-
+ </example>
+ <para>
+ The value of the <code>render</code> attribute can also be an expression written using JavaServer Faces' Expression Language (<acronym>EL</acronym>); this can either be a <type>Set</type>, <type>Collection</type>, <type>Array</type>, or <type>String</type>.
+ </para>
+ <important>
+ <title>Important</title>
+ <para>
+ A common problem with using <code>render</code> occurs when the referenced component has a <code>rendered</code> attribute. <acronym>JSF</acronym> does not mark the place in the browser's Document Object Model (<acronym>DOM</acronym>) where the rendered component would be placed in case the <code>rendered</code> attribute returns <literal>false</literal>. As such, when RichFaces sends the render code to the client, the page does not update as the place for the update is not known.
+ </para>
+ <para>
+ To work around this issue, wrap the component to be rendered in an <classname><a4j:outputPanel></classname> with <code>layout="none"</code>. The <classname><a4j:outputPanel></classname> will receive the update and render the component as required.
+ </para>
+ </important>
+ </section>
+
+ <section id="sect-Component_Reference-Rendering-ajaxRendered">
+ <title>ajaxRendered</title>
+ <para>
+ A component with <code>ajaxRendered="true"</code> will be re-rendered with <emphasis>every</emphasis> Ajax request, even when not referenced by the requesting component's <code>render</code> attribute. This can be useful for updating a status display or error message without explicitly requesting it.
+ </para>
+ <para>
+ Rendering of components in this way can be repressed by adding <code>limitRender="true"</code> to the requesting component, as described in <xref linkend="sect-Component_Reference-Rendering-limitRender" />.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Rendering-limitRender">
+ <title>limitRender</title>
+ <para>
+ A component with <code>limitRender="true"</code> specified will <emphasis>not</emphasis> cause components with <code>ajaxRendered="true"</code> to re-render, and only those components listed in the <code>render</code> attribute will be updated. This essentially overrides the <code>ajaxRendered</code> attribute in other components.
+ </para>
+ <para>
+ <xref linkend="exam-Component_Reference-data-Data_reference_example" /> describes two command buttons, a panel grid rendered by the buttons, and an output panel showing error messages. When the first button is clicked, the output panel is rendered even though it is not explicitly referenced with the <code>render</code> attribute. The second button, however, uses <code>limitRender="true"</code> to override the output panel's rendering and only render the panel grid.
+ </para>
+ <example id="exam-Component_Reference-limitRender-Rendering_example">
+ <title>Rendering example</title>
+
<programlisting language="XML">
<h:form id="form1">
<a4j:commandButton value="Normal rendering" render="infoBlock" />
@@ -157,281 +153,281 @@
<h:messages />
</a4j:outputPanel>
</programlisting>
- </example>
- </section>
+ </example>
+ </section>
- </section>
-
- <section id="sect-Component_Reference-Common_Ajax_attributes-Queuing_and_traffic_control">
- <title>Queuing and traffic control</title>
- <section id="sect-Component_Reference-Queuing_and_traffic_control-queue">
- <title>queue</title>
- <para>
- The <code>queue</code> attribute defines the name of the queue that will be used to schedule upcoming Ajax requests. Typically RichFaces does not queue Ajax requests, so if events are produced simultaneously they will arrive at the server simultaneously. This can potentially lead to unpredictable results when the responses are returned. The <code>queue</code> attribute ensures that the requests are responded to in a set order.
- </para>
- <para>
- A queue name is specified with the <code>queue</code> attribute, and each request added to the named queue is completed one at a time in the order they were sent. In addition, RichFaces intelligently removes similar requests produced by the same event from a queue to improve performance, protecting against unnecessary traffic flooding and
- </para>
- </section>
-
- <section id="sect-Component_Reference-Queuing_and_traffic_control-requestDelay">
- <title>requestDelay</title>
- <para>
- The <code>requestDelay</code> attribute specifies an amount of time in milliseconds for the request to wait in the queue before being sent to the server. If a similar request is added to the queue before the delay is over, the original request is removed from the queue and not sent.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Queuing_and_traffic_control-ignoreDupResponses">
- <title>ignoreDupResponses</title>
- <para>
- When set to <literal>true</literal>, the <code>ignoreDupResponses</code> attribute causes responses from the server for the request to be ignored if there is another similar request in the queue. This avoids unnecessary updates on the client when another update is expected. The request is still processed on the server, but if another similar request has been queued then no updates are made on the client.
- </para>
- </section>
+ </section>
+
+ <section id="sect-Component_Reference-Common_Ajax_attributes-Queuing_and_traffic_control">
+ <title>Queuing and traffic control</title>
+ <section id="sect-Component_Reference-Queuing_and_traffic_control-queue">
+ <title>queue</title>
+ <para>
+ The <code>queue</code> attribute defines the name of the queue that will be used to schedule upcoming Ajax requests. Typically RichFaces does not queue Ajax requests, so if events are produced simultaneously they will arrive at the server simultaneously. This can potentially lead to unpredictable results when the responses are returned. The <code>queue</code> attribute ensures that the requests are responded to in a set order.
+ </para>
+ <para>
+ A queue name is specified with the <code>queue</code> attribute, and each request added to the named queue is completed one at a time in the order they were sent. In addition, RichFaces intelligently removes similar requests produced by the same event from a queue to improve performance, protecting against unnecessary traffic flooding and
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Queuing_and_traffic_control-requestDelay">
+ <title>requestDelay</title>
+ <para>
+ The <code>requestDelay</code> attribute specifies an amount of time in milliseconds for the request to wait in the queue before being sent to the server. If a similar request is added to the queue before the delay is over, the original request is removed from the queue and not sent.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Queuing_and_traffic_control-ignoreDupResponses">
+ <title>ignoreDupResponses</title>
+ <para>
+ When set to <literal>true</literal>, the <code>ignoreDupResponses</code> attribute causes responses from the server for the request to be ignored if there is another similar request in the queue. This avoids unnecessary updates on the client when another update is expected. The request is still processed on the server, but if another similar request has been queued then no updates are made on the client.
+ </para>
+ </section>
- </section>
-
- <section id="sect-Component_Reference-Common_Ajax_attributes-Data_processing">
- <title>Data processing</title>
- <para>
- RichFaces uses a form-based approach for sending Ajax requests. As such, each time a request is sent the data from the requesting component's parent <acronym>JSF</acronym> form is submitted along with the <acronym>XMLHTTPRequest</acronym> object. The form data contains values from the input element and auxiliary information such as state-saving data.
- </para>
- <section id="sect-Component_Reference-Data_processing-process">
- <title>process</title>
- <para>
- The <code>process</code> attribute allows <acronym>JSF</acronym> processing to be limited to defined components. To only process the requesting component, <code>process="@this"</code> can be used.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Data_processing-immediate">
- <title>immediate</title>
- <para>
- If the <code>immediate</code> attribute is set to <literal>true</literal>, the default ActionListener is executed immediately during the Apply Request Values phase of the request processing lifecycle, rather than waitingfor the Invoke Application phase. This allows some data model values to be updated regardless of whether the Validation phase is successful or not.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Data_processing-bypassUpdates">
- <title>bypassUpdates</title>
- <para>
- If the <code>bypassUpdates</code> attribute is set to <literal>true</literal>, the Update Model phase of the request processing lifecycle is bypassed. This is useful if user input needs to be validated but the model does not need to be updated.
- </para>
- </section>
+ </section>
+
+ <section id="sect-Component_Reference-Common_Ajax_attributes-Data_processing">
+ <title>Data processing</title>
+ <para>
+ RichFaces uses a form-based approach for sending Ajax requests. As such, each time a request is sent the data from the requesting component's parent <acronym>JSF</acronym> form is submitted along with the <acronym>XMLHTTPRequest</acronym> object. The form data contains values from the input element and auxiliary information such as state-saving data.
+ </para>
+ <section id="sect-Component_Reference-Data_processing-process">
+ <title>process</title>
+ <para>
+ The <code>process</code> attribute allows <acronym>JSF</acronym> processing to be limited to defined components. To only process the requesting component, <code>process="@this"</code> can be used.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Data_processing-immediate">
+ <title>immediate</title>
+ <para>
+ If the <code>immediate</code> attribute is set to <literal>true</literal>, the default ActionListener is executed immediately during the Apply Request Values phase of the request processing lifecycle, rather than waitingfor the Invoke Application phase. This allows some data model values to be updated regardless of whether the Validation phase is successful or not.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Data_processing-bypassUpdates">
+ <title>bypassUpdates</title>
+ <para>
+ If the <code>bypassUpdates</code> attribute is set to <literal>true</literal>, the Update Model phase of the request processing lifecycle is bypassed. This is useful if user input needs to be validated but the model does not need to be updated.
+ </para>
+ </section>
- </section>
-
- <section id="sect-Component_Reference-Common_Ajax_attributes-Action_and_navigation">
- <title>Action and navigation</title>
- <para>
- The <code>action</code> and <code>actionListener</code> attributes can be used to invoke action methods and define action events.
- </para>
- <section id="sect-Component_Reference-Action_and_navigation-action">
- <title>action</title>
- <para>
- The <code>action</code> attribute is a method binding that points to the application action to be invoked. The method can be activated during the Apply Request Values phase or the Invoke Application phase of the request processing lifecycle.
- </para>
- <para>
- The method specified in the <code>action</code> attribute must return <literal>null</literal> for an Ajax response with a partial page update.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Action_and_navigation-actionListener">
- <title>actionListener</title>
- <para>
- The <code>actionListener</code> attribute is a method binding for <classname>ActionEvent</classname> methods with a return type of <literal>void</literal>.
- </para>
- </section>
+ </section>
+
+ <section id="sect-Component_Reference-Common_Ajax_attributes-Action_and_navigation">
+ <title>Action and navigation</title>
+ <para>
+ The <code>action</code> and <code>actionListener</code> attributes can be used to invoke action methods and define action events.
+ </para>
+ <section id="sect-Component_Reference-Action_and_navigation-action">
+ <title>action</title>
+ <para>
+ The <code>action</code> attribute is a method binding that points to the application action to be invoked. The method can be activated during the Apply Request Values phase or the Invoke Application phase of the request processing lifecycle.
+ </para>
+ <para>
+ The method specified in the <code>action</code> attribute must return <literal>null</literal> for an Ajax response with a partial page update.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Action_and_navigation-actionListener">
+ <title>actionListener</title>
+ <para>
+ The <code>actionListener</code> attribute is a method binding for <classname>ActionEvent</classname> methods with a return type of <literal>void</literal>.
+ </para>
+ </section>
- </section>
-
- <section id="sect-Component_Reference-Common_Ajax_attributes-Events_and_JavaScript_interactions">
- <title>Events and JavaScript interactions</title>
- <para>
- RichFaces allows for Ajax-enabled <acronym>JSF</acronym> applications to be developed without using any additional JavaScript code. However it is still possible to invoke custom JavaScript code through Ajax events.
- </para>
- <section id="sect-Component_Reference-Events_and_JavaScript_interactions-onsubmit">
- <title>onsubmit</title>
- <para>
- The <code>onsubmit</code> attribute will invoke the JavaScript code before the Ajax request is sent. The request is canceled if the JavaScript code defined for <code>onsubmit</code> returns <literal>false</literal>.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Events_and_JavaScript_interactions-onclick">
- <title>onclick</title>
- <para>
- The <code>onclick</code> attribute functions similarly to the <code>onsubmit</code> attribute for those components that can be clicked, such as <classname><a4j:commandButton></classname> and <classname><a4j:commandLink></classname>. It invokes the defined JavaScript before the Ajax request, and the request will be canceled if the defined code returns <literal>false</literal>.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Events_and_JavaScript_interactions-oncomplete">
- <title>oncomplete</title>
- <para>
- The <code>oncomplete</code> attribute invokes the JavaScript code after the Ajax response has been returned and the <acronym>DOM</acronym> tree of the browser has been updated. The code is registered for further invocation of the <acronym>XMLHTTP</acronym> request object before an Ajax request is sent. As such, using <acronym>JSF</acronym> Expression Language (<acronym>EL</acronym>) value binding means the code will not be changed during processing of the request on the server. Additionally the <code>oncomplete</code> attribute cannot use the <literal>this</literal> keyword as it will not point to the component from which the Ajax request was initiated.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Events_and_JavaScript_interactions-onbegin">
- <title>onbegin</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Events_and_JavaScript_interactions-onsuccess">
- <title>onsuccess</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Events_and_JavaScript_interactions-onerror">
- <title>onerror</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Events_and_JavaScript_interactions-data">
- <title>data</title>
- <para>
- The <code>data</code> attribute allows the use of additional data during an Ajax call. <acronym>JSF</acronym> Expression Language (<acronym>EL</acronym>) can be used to reference the property of the managed bean, and its value will be serialized in JavaScript Object Notation (<acronym>JSON</acronym>) and returned to the client side. The property can then be referenced through the <code>data</code> variable in the event attribute definitions. Both primitive types and complex types such as arrays and collections can be serialized and used with <code>data</code>.
- </para>
- <example id="exam-Component_Reference-data-Data_reference_example">
- <title>Data reference example</title>
+ </section>
+ <section id="sect-Component_Reference-Common_Ajax_attributes-Events_and_JavaScript_interactions">
+ <title>Events and JavaScript interactions</title>
+ <para>
+ RichFaces allows for Ajax-enabled <acronym>JSF</acronym> applications to be developed without using any additional JavaScript code. However it is still possible to invoke custom JavaScript code through Ajax events.
+ </para>
+ <section id="sect-Component_Reference-Events_and_JavaScript_interactions-onsubmit">
+ <title>onsubmit</title>
+ <para>
+ The <code>onsubmit</code> attribute will invoke the JavaScript code before the Ajax request is sent. The request is canceled if the JavaScript code defined for <code>onsubmit</code> returns <literal>false</literal>.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Events_and_JavaScript_interactions-onclick">
+ <title>onclick</title>
+ <para>
+ The <code>onclick</code> attribute functions similarly to the <code>onsubmit</code> attribute for those components that can be clicked, such as <classname><a4j:commandButton></classname> and <classname><a4j:commandLink></classname>. It invokes the defined JavaScript before the Ajax request, and the request will be canceled if the defined code returns <literal>false</literal>.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Events_and_JavaScript_interactions-oncomplete">
+ <title>oncomplete</title>
+ <para>
+ The <code>oncomplete</code> attribute invokes the JavaScript code after the Ajax response has been returned and the <acronym>DOM</acronym> tree of the browser has been updated. The code is registered for further invocation of the <acronym>XMLHTTP</acronym> request object before an Ajax request is sent. As such, using <acronym>JSF</acronym> Expression Language (<acronym>EL</acronym>) value binding means the code will not be changed during processing of the request on the server. Additionally the <code>oncomplete</code> attribute cannot use the <literal>this</literal> keyword as it will not point to the component from which the Ajax request was initiated.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Events_and_JavaScript_interactions-onbegin">
+ <title>onbegin</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Events_and_JavaScript_interactions-onsuccess">
+ <title>onsuccess</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Events_and_JavaScript_interactions-onerror">
+ <title>onerror</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Events_and_JavaScript_interactions-data">
+ <title>data</title>
+ <para>
+ The <code>data</code> attribute allows the use of additional data during an Ajax call. <acronym>JSF</acronym> Expression Language (<acronym>EL</acronym>) can be used to reference the property of the managed bean, and its value will be serialized in JavaScript Object Notation (<acronym>JSON</acronym>) and returned to the client side. The property can then be referenced through the <code>data</code> variable in the event attribute definitions. Both primitive types and complex types such as arrays and collections can be serialized and used with <code>data</code>.
+ </para>
+ <example id="exam-Component_Reference-data-Data_reference_example">
+ <title>Data reference example</title>
+
<programlisting language="XML">
<a4j:commandButton value="Update" data="#{userBean.name}" oncomplete="showTheName(data.name)" />
</programlisting>
- </example>
- </section>
+ </example>
+ </section>
- </section>
+ </section>
-</chapter>
- <chapter id="chap-Component_Reference-Rich_inputs" lang="en-US">
- <title>Rich inputs</title>
- <para>
- This chapter details rich components for user input and interaction.
- </para>
- <section id="sect-Component_Reference-Rich_inputs-richCalendar">
- <title><rich:Calendar></title>
- <para>
- The <classname><rich:calendar></classname> component allows the user to enter a date and time through an in-line or pop-up calendar. The pop-up calendar can navigate through months and years, and its look and feel can be highly customized.
- </para>
- <para>
- The <classname><rich:calendar></classname> component supports two different ways of loading data through defining the <code>mode</code> attribute. When not specified, the component uses <literal>client</literal> mode, which loads an initial portion of data within a set date range. The range can be defined by using the <code>preloadDateRangeBegin</code> and <code>preloadDateRangeEnd</code> attributes. Additional data requests are not sent. Alternatively, with <code>mode="ajax"</code> the <classname><rich:calendar></classname> requests portions of data for rendering from a special data model. The data model can be defined through the <code>dataModel</code> attribute, which points to an object that implements the <classname>CalendarDataModel</classname> interface. If the <code>dataModel</code> attribute is not defined or has a value of <literal>null</literal>, the <literal>ajax</literal> mode functions the same as the <literal>client</literal> mode.
- </para>
- <para>
- The <classname><rich:calendar></classname> component is presented as a pop-up by default, appearing as a text field with a button to expand the full pop-up calendar. Specifying <code>popup="false</code> will render the calendar in-line on the page instead, which displays the full calendar without the text field or display button. The appearance of the display button can be altered from the standard calendar icon by defining the <code>buttonIcon</code> and <code>buttonIconDisabled</code> attributes to replace the icon with a specified file, or by defining the <code>buttonLabel</code> attribute to display text on the button without an icon. If <code>buttonLabel</code> is specified then both <code>buttonIcon</code> and <code>buttonIconDisabled</code> attributes are ignored. The text field box can also be hidden by setting <code>showInput="false"</code>.
- </para>
- <para>
- The position at which the pop-up calendar displays relative to the text field and button can be configured using the <code>jointPoint</code> and <code>direction</code> attributes. The <code>jointPoint</code> attribute refers to the corner of the text field and button with which the calendar will be aligned and the <code>direction</code> specifies which direction the pop-up calendar will span relative to the joint point. The default settings are <code>jointPoint="bottom-left"</code> and <code>direction="bottom-right"</code>, causing the pop-up calendar to align with the bottom-left corner of the text field and span to the bottom-right, underneath the text field and button. The diagram shows the joint points and directions that can be used. Alternatively, both <code>jointPoint</code> and <code>direction</code> can be set to <literal>auto</literal> to allow smart pop-up positioning.
- </para>
- <para>
- The calendar features a <guibutton>Today</guibutton> button for locating today's date on the calendar. This can be set to three different values using the <code>todayControlMode</code> attribute:
- </para>
- <itemizedlist>
- <listitem>
+ </chapter>
+ <chapter id="chap-Component_Reference-Rich_inputs" lang="en-US">
+ <title>Rich inputs</title>
<para>
- <literal>hidden</literal>, which does not display the button;
+ This chapter details rich components for user input and interaction.
</para>
- </listitem>
- <listitem>
- <para>
- <literal>select</literal>, the default setting, which scrolls the calendar to the current month and selects today's date; and
- </para>
- </listitem>
- <listitem>
- <para>
- <literal>scroll</literal>, which scrolls the calendar to the current month but does not select today's date.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- The <classname><rich:calendar></classname> component can additionally allow a time of day to be specified with the date. After selecting a date the option to set a time becomes available. The default time can be set with the <code>defaultTime</code> attribute. If the time is altered and a new date is selected, it will not reset unless <code>resetTimeOnDateSelect="true"</code> is specified.
- </para>
- <para>
- There are several event handlers that are unique to the <classname><rich:calendar></classname> component.
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <code>ondateselect</code> is triggered when the date is selected by the user, before the update request is sent.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>ondateselected</code> is triggered after the date is selected by the user.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>oncurrentdateselect</code> is triggered when any of the year- or month-changing buttons are pressed, before the update request is sent.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>oncurrentdateselected</code> is triggered after any of the year- or month-changing buttons are pressed.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>ontimeselect</code> is triggered when the time is set by the user, before the update request is sent.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>ontimeselected</code> is triggered after the time has been set by the user.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- The entire calendar can be set as read-only with <code>readonly="true"</code>. This allows months and years to be browsed through with the arrow controls, but dates and times cannot be selected.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Rich_inputs-richcolorPicker">
- <title><rich:colorPicker></title>
- <para>
- The <classname><rich:colorPicker></classname> component allows the selection of a color, either by picking the color from the spectrum, defining it through decimal or hexadecimal <acronym>RGB</acronym> (red-green-blue) values, or defining it through <acronym>HSB</acronym> (hue-saturation-brightness) values. The <classname><rich:colorPicker></classname> component can appear either in-line with a pop-up or flat, and the look and feel can be highly customized.
- </para>
- <para>
- The <code>value</code> attribute stores the currently selected color. The <code>colorMode</code> attribute defines whether the <code>value</code> is saved as <literal>hex</literal> (hexadecimal) or <literal>rgb</literal> (red-green-blue).
- </para>
- <para>
- The <classname><rich:colorPicker></classname> appears in-line by default, where the color picker spectrum is only shown once the component is clicked on. The component can appear "flat", where the whole color picker is shown, by setting <code>flat="true"</code>.
- </para>
- <para>
- The <classname><rich:colorPicker></classname> component has the unique event handler <code>onbeforeshow</code>, which is triggered immediately before the color picker is opened. The <code>showEvent</code> attribute can be used to bind the opening of the color picker to a specific event; it is bound to the <code>onclick</code> event by default.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Rich_inputs-richcomboBox">
- <title><rich:comboBox></title>
- <para>
- The <classname><rich:comboBox></classname> component is a typical combo-box with built-in Ajax capabilities. It supports client-side suggestions, browser-like selection, Seam entity converter support, and customization of the look and feel.
- </para>
- <para>
- The <code>value</code> attribute stores the selected value for the combo-box. Suggestions shown in the drop-down list for the combo-box can be specified in one of two ways:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Using the <code>suggestionValues</code> attribute, and defining a collection of suggestions:
- </para>
- <example id="exam-Component_Reference-richcomboBox-Defining_suggestion_values">
- <title>Defining suggestion values</title>
-
+ <section id="sect-Component_Reference-Rich_inputs-richCalendar">
+ <title><rich:Calendar></title>
+ <para>
+ The <classname><rich:calendar></classname> component allows the user to enter a date and time through an in-line or pop-up calendar. The pop-up calendar can navigate through months and years, and its look and feel can be highly customized.
+ </para>
+ <para>
+ The <classname><rich:calendar></classname> component supports two different ways of loading data through defining the <code>mode</code> attribute. When not specified, the component uses <literal>client</literal> mode, which loads an initial portion of data within a set date range. The range can be defined by using the <code>preloadDateRangeBegin</code> and <code>preloadDateRangeEnd</code> attributes. Additional data requests are not sent. Alternatively, with <code>mode="ajax"</code> the <classname><rich:calendar></classname> requests portions of data for rendering from a special data model. The data model can be defined through the <code>dataModel</code> attribute, which points to an object that implements the <classname>CalendarDataModel</classname> interface. If the <code>dataModel</code> attribute is not defined or has a value of <literal>null</literal>, the <literal>ajax</literal> mode functions the same as the <literal>client</literal> mode.
+ </para>
+ <para>
+ The <classname><rich:calendar></classname> component is presented as a pop-up by default, appearing as a text field with a button to expand the full pop-up calendar. Specifying <code>popup="false</code> will render the calendar in-line on the page instead, which displays the full calendar without the text field or display button. The appearance of the display button can be altered from the standard calendar icon by defining the <code>buttonIcon</code> and <code>buttonIconDisabled</code> attributes to replace the icon with a specified file, or by defining the <code>buttonLabel</code> attribute to display text on the button without an icon. If <code>buttonLabel</code> is specified then both <code>buttonIcon</code> and <code>buttonIconDisabled</code> attributes are ignored. The text field box can also be hidden by setting <code>showInput="false"</code>.
+ </para>
+ <para>
+ The position at which the pop-up calendar displays relative to the text field and button can be configured using the <code>jointPoint</code> and <code>direction</code> attributes. The <code>jointPoint</code> attribute refers to the corner of the text field and button with which the calendar will be aligned and the <code>direction</code> specifies which direction the pop-up calendar will span relative to the joint point. The default settings are <code>jointPoint="bottom-left"</code> and <code>direction="bottom-right"</code>, causing the pop-up calendar to align with the bottom-left corner of the text field and span to the bottom-right, underneath the text field and button. The diagram shows the joint points and directions that can be used. Alternatively, both <code>jointPoint</code> and <code>direction</code> can be set to <literal>auto</literal> to allow smart pop-up positioning.
+ </para>
+ <para>
+ The calendar features a <guibutton>Today</guibutton> button for locating today's date on the calendar. This can be set to three different values using the <code>todayControlMode</code> attribute:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>hidden</literal>, which does not display the button;
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>select</literal>, the default setting, which scrolls the calendar to the current month and selects today's date; and
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>scroll</literal>, which scrolls the calendar to the current month but does not select today's date.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ The <classname><rich:calendar></classname> component can additionally allow a time of day to be specified with the date. After selecting a date the option to set a time becomes available. The default time can be set with the <code>defaultTime</code> attribute. If the time is altered and a new date is selected, it will not reset unless <code>resetTimeOnDateSelect="true"</code> is specified.
+ </para>
+ <para>
+ There are several event handlers that are unique to the <classname><rich:calendar></classname> component.
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <code>ondateselect</code> is triggered when the date is selected by the user, before the update request is sent.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>ondateselected</code> is triggered after the date is selected by the user.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>oncurrentdateselect</code> is triggered when any of the year- or month-changing buttons are pressed, before the update request is sent.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>oncurrentdateselected</code> is triggered after any of the year- or month-changing buttons are pressed.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>ontimeselect</code> is triggered when the time is set by the user, before the update request is sent.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>ontimeselected</code> is triggered after the time has been set by the user.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ The entire calendar can be set as read-only with <code>readonly="true"</code>. This allows months and years to be browsed through with the arrow controls, but dates and times cannot be selected.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Rich_inputs-richcolorPicker">
+ <title><rich:colorPicker></title>
+ <para>
+ The <classname><rich:colorPicker></classname> component allows the selection of a color, either by picking the color from the spectrum, defining it through decimal or hexadecimal <acronym>RGB</acronym> (red-green-blue) values, or defining it through <acronym>HSB</acronym> (hue-saturation-brightness) values. The <classname><rich:colorPicker></classname> component can appear either in-line with a pop-up or flat, and the look and feel can be highly customized.
+ </para>
+ <para>
+ The <code>value</code> attribute stores the currently selected color. The <code>colorMode</code> attribute defines whether the <code>value</code> is saved as <literal>hex</literal> (hexadecimal) or <literal>rgb</literal> (red-green-blue).
+ </para>
+ <para>
+ The <classname><rich:colorPicker></classname> appears in-line by default, where the color picker spectrum is only shown once the component is clicked on. The component can appear "flat", where the whole color picker is shown, by setting <code>flat="true"</code>.
+ </para>
+ <para>
+ The <classname><rich:colorPicker></classname> component has the unique event handler <code>onbeforeshow</code>, which is triggered immediately before the color picker is opened. The <code>showEvent</code> attribute can be used to bind the opening of the color picker to a specific event; it is bound to the <code>onclick</code> event by default.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Rich_inputs-richcomboBox">
+ <title><rich:comboBox></title>
+ <para>
+ The <classname><rich:comboBox></classname> component is a typical combo-box with built-in Ajax capabilities. It supports client-side suggestions, browser-like selection, Seam entity converter support, and customization of the look and feel.
+ </para>
+ <para>
+ The <code>value</code> attribute stores the selected value for the combo-box. Suggestions shown in the drop-down list for the combo-box can be specified in one of two ways:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ Using the <code>suggestionValues</code> attribute, and defining a collection of suggestions:
+ </para>
+ <example id="exam-Component_Reference-richcomboBox-Defining_suggestion_values">
+ <title>Defining suggestion values</title>
+
<programlisting language="XML">
<rich:comboBox value="#{bean.state}" suggestionValues="#{bean.suggestions}"
</programlisting>
- </example>
- </listitem>
- <listitem>
- <para>
- Using the JSF components <classname><f:selectItem /></classname> and <classname><f:selectItems /></classname> to define a list of items:
- </para>
- <example id="exam-Component_Reference-richcomboBox-Defining_list_items_for_richinplaceSelect">
- <title>Defining list items for <rich:inplaceSelect></title>
-
+ </example>
+ </listitem>
+ <listitem>
+ <para>
+ Using the JSF components <classname><f:selectItem /></classname> and <classname><f:selectItems /></classname> to define a list of items:
+ </para>
+ <example id="exam-Component_Reference-richcomboBox-Defining_list_items_for_richinplaceSelect">
+ <title>Defining list items for <rich:inplaceSelect></title>
+
<programlisting language="XML">
<rich:comboBox value="#{bean.item}" valueChangeListener="#{bean.selectionChanged}" >
<f:selectItems value="#{bean.selectItems}" />
@@ -441,176 +437,176 @@
<f.selectItem itemValue="Item 4" />
</rich:comboBox>
</programlisting>
- </example>
- </listitem>
- </itemizedlist>
- <para>
- Users can type into the combo-box's text field to enter a value, which also searches through the suggestion items in the drop-down box. By default, the first suggestion item is selected as the user types. This behavior can be deactivated by setting <code>selectFirstOnUpdate="false"</code>. Setting <code>directInputSuggestions="true"</code> causes the combo-box to fill the text field box with a matching suggestion as the user types. Alternatively, the text field can be disabled by setting <code>enableManualInput="false"</code>, which forces the users to pick from items in the drop-down box.
- </para>
- <para>
- The <classname><rich:comboBox></classname> component has two unique event handlers:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <code>onlistcall</code> triggers before the drop-down list is shown, allowing the operation to be canceled.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>onselect</code> triggers when a suggestion is selected from the drop-down list, before the update request is sent.
- </para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section id="sect-Component_Reference-Rich_inputs-richeditor">
- <title><rich:editor></title>
- <para>
- The <classname><rich:editor></classname> component provides a fully-featured word processor. It features manageable global configurations, and support for Seam text, custom plug-ins, and a customized look and feel. The editor is fully based on the TinyMCE JavaScript editor control, supporting all TinyMCE's parameters, and is adapted for the <acronym>JSF</acronym> environment with some additional capabilities.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Rich_inputs-richfileUpload">
- <title><rich:fileUpload></title>
- <para>
- The <classname><rich:fileUpload></classname> component allows the user to upload files to a server. It features multiple uploads, automatic uploads, progress bars, restrictions on file types and sizes to be uploaded, and an embedded flash module.
- </para>
- <para>
- Files are uploaded to either the temporary folder (different for each operating system) or to <acronym>RAM</acronym> (random-access memory), depending on the value of the <code>createTempFile</code> parameter of the Ajax4jsf Filter section in the <filename>web.xml</filename> for the project.
- </para>
- <para>
- Basic usage requires the <code>uploadData</code> attribute, pointing to the collection of uploaded files.
- </para>
- <example id="exam-Component_Reference-richfileUpload-Basic_usage_of_richfileUpload">
- <title>Basic usage of <rich:fileUpload></title>
-
+ </example>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Users can type into the combo-box's text field to enter a value, which also searches through the suggestion items in the drop-down box. By default, the first suggestion item is selected as the user types. This behavior can be deactivated by setting <code>selectFirstOnUpdate="false"</code>. Setting <code>directInputSuggestions="true"</code> causes the combo-box to fill the text field box with a matching suggestion as the user types. Alternatively, the text field can be disabled by setting <code>enableManualInput="false"</code>, which forces the users to pick from items in the drop-down box.
+ </para>
+ <para>
+ The <classname><rich:comboBox></classname> component has two unique event handlers:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <code>onlistcall</code> triggers before the drop-down list is shown, allowing the operation to be canceled.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>onselect</code> triggers when a suggestion is selected from the drop-down list, before the update request is sent.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="sect-Component_Reference-Rich_inputs-richeditor">
+ <title><rich:editor></title>
+ <para>
+ The <classname><rich:editor></classname> component provides a fully-featured word processor. It features manageable global configurations, and support for Seam text, custom plug-ins, and a customized look and feel. The editor is fully based on the TinyMCE JavaScript editor control, supporting all TinyMCE's parameters, and is adapted for the <acronym>JSF</acronym> environment with some additional capabilities.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Rich_inputs-richfileUpload">
+ <title><rich:fileUpload></title>
+ <para>
+ The <classname><rich:fileUpload></classname> component allows the user to upload files to a server. It features multiple uploads, automatic uploads, progress bars, restrictions on file types and sizes to be uploaded, and an embedded flash module.
+ </para>
+ <para>
+ Files are uploaded to either the temporary folder (different for each operating system) or to <acronym>RAM</acronym> (random-access memory), depending on the value of the <code>createTempFile</code> parameter of the Ajax4jsf Filter section in the <filename>web.xml</filename> for the project.
+ </para>
+ <para>
+ Basic usage requires the <code>uploadData</code> attribute, pointing to the collection of uploaded files.
+ </para>
+ <example id="exam-Component_Reference-richfileUpload-Basic_usage_of_richfileUpload">
+ <title>Basic usage of <rich:fileUpload></title>
+
<programlisting language="XML">
<rich:fileUpload uploadData="#{bean.data}" />
</programlisting>
- </example>
- <para>
- The <code>fileUploadListener</code> attribute can be used to call a function on the server side after each file is uploaded.
- </para>
- <para>
- The <code>immediateUpload</code> attribute can be set to <literal>true</literal> to upload files as soon as they are added to the list, rather than waiting for the user to press the <guibutton>Upload</guibutton>. The <code>autoclear</code> attribute can be set to <code>true</code> to automatically remove files from the list once they have been successfully uploaded.
- </para>
- <para>
- The <classname><rich:fileUpload></classname> component can place restrictions on the files that can be uploaded. The <code>acceptedTypes</code> attribute restricts the file types to just those listed. The <code>maxFilesQuantity</code> attribute restricts the maximum number of files that can be uploaded. Size restrictions can be placed on individual files by setting the <code>maxRequestSize</code> parameter of the Ajax4jsf Filter section in the <filename>web.xml</filename> file for the project.
- </para>
- <para>
- There are a number of event handlers specifc to the <classname><rich:fileUpload></classname> component:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <code>onadd</code> is triggered before a file is added to the list.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>onupload</code> is triggered before a file is uploaded.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>onuploadcomplete</code> is triggered after all files in the list have finished uploading.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>onuploadcanceled</code> is triggered after an upload has been canceled.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>onerror</code> is triggered when an error occurs during the upload process.
- </para>
- </listitem>
- </itemizedlist>
- <para>
- The <classname><rich:fileUpload></classname> component has an embedded Flash module that adds extra functionality. To enable the Flash module, set <code>allowFlash="true"</code>. The Flash module adds additional features to file selection, such as the ability to choose multiple files at once and the filtering of files by their type. Additionally, the Flash module provides a smoother animation of the progress bar during the upload process, as the progress polling is performed by Flash rather than Ajax.
- </para>
- <para>
- The text labels used in the component can be completely customized. Labels for the various controls of the component can be set using <code>addControlLabel</code>, <code>clearAllControlLabel</code>, <code>clearControlLabel</code>, <code>stopEntryControlLabel</code>, and <code>uploadControlLabel</code>. The status label for the upload can be set using the <code>label</code> attribute and the following wildcards:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <code>{B} {KB} {MB}</code>: the full size of the file to be uploaded, measured in bytes, kilobytes and megabytes respectively.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>{_B} {_KB} {_MB}</code>: the amount of data uploaded so far, measured in bytes, kilobytes and megabytes respectively.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>{ss} {mm} {hh}</code>: the elapsed time in seconds, minutes and hours respectively.
- </para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section id="sect-Component_Reference-Rich_inputs-richinplaceInput">
- <title><rich:inplaceInput></title>
- <para>
- The <classname><rich:inplaceInput></classname> component allows information to be entered in-line in blocks of text, improving readability of the text. Changes can be rendered either in-line or for the whole block, and inputs can be focused with keyboard navigation. The component has three functional states: the "view" state, where the component displays its initial setting, such as "click to edit"; the "edit" state, where the user can input text; and the "changed" state, where the new value for the component has been confirmed but can be edited again if required.
- </para>
- <para>
- When in the initial "view" state, the starting label can be set using the <code>defaultLabel</code> attribute, such as <code>defaultLabel="click to edit"</code>.
- </para>
- <para>
- Basic usage requires the <code>value</code> attribute to point to the expression for the current value of the component.
- </para>
- <para>
- By default, the event to switch the component to the "edit" state is a single mouse click. This can be changed using the <code>editEvent</code> attribute to specify a different event. When switching to "edit" mode, the existing text can be automatically highlighted to make editing easier by setting <code>selectOnEdit="true"</code>.
- </para>
- <para>
- The user can confirm and save their input by pressing the <keycap>Enter</keycap> key or cancel by pressing the <keycap>Esc</keycap> key. Alternatively, buttons for confirming or canceling can be added to the component by setting <code>showControls="true"</code>. These buttons can be positioned using the <code>controlsHorizontalPosition</code> attribute with settings of <literal>left</literal>, <literal>right</literal>, or <literal>center</literal>, and the <code>controlsVerticalPosition</code> attribute with settings <literal>bottom</literal>, <literal>center</literal>, or <literal>top</literal>. The confirmation control icons can be altered using the <code>saveControlIcon</code> and <code>cancelControlIcon</code>. Further customization is possible through the use of facets.
- </para>
- <para>
- There are several event handlers that are specific to the <classname><rich:inplaceInput></classname> component:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <code>oneditactivation</code> is triggered before the "edit" state is activated.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>oneditactivated</code> is triggered after the "edit" state is activated.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>onviewactivation</code> is triggered before the "view" or "changed" state is activated.
- </para>
- </listitem>
- <listitem>
- <para>
- <code>onviewactivated</code> is triggered after the "view" or "changed" state is activated.
- </para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section id="sect-Component_Reference-Rich_inputs-richinplaceSelect">
- <title><rich:inplaceSelect></title>
- <para>
- The <classname><rich:inplaceSelect></classname> component is similar to the <classname><rich:inplaceInput></classname> component, but the uses a drop-down selection box to enter text instead of a regular text field. Changes can be rendered either in-line or for the whole block, and inputs can be focused with keyboard navigation. The component has three functional states: the "view" state, where the component displays its initial setting, such as "click to edit"; the "edit" state, where the user can select a value from a drop-down list; and the "changed" state, where the new value for the component has been confirmed but can be edited again if required.
- </para>
- <para>
- When in the initial "view" state, the starting label can be set using the <code>defaultLabel</code> attribute, such as <code>defaultLabel="click to edit"</code>.
- </para>
- <para>
- Basic usage requires the <code>value</code> attribute to point to the expression for the current value of the component and a list of items. The list of items can be defined using the JSF components <classname><f:selectItem/></classname> and <classname><f:selectItems/></classname>.
- </para>
- <example id="exam-Component_Reference-richinplaceSelect-Defining_list_items_for_richinplaceSelect">
- <title>Defining list items for <rich:inplaceSelect></title>
-
+ </example>
+ <para>
+ The <code>fileUploadListener</code> attribute can be used to call a function on the server side after each file is uploaded.
+ </para>
+ <para>
+ The <code>immediateUpload</code> attribute can be set to <literal>true</literal> to upload files as soon as they are added to the list, rather than waiting for the user to press the <guibutton>Upload</guibutton>. The <code>autoclear</code> attribute can be set to <code>true</code> to automatically remove files from the list once they have been successfully uploaded.
+ </para>
+ <para>
+ The <classname><rich:fileUpload></classname> component can place restrictions on the files that can be uploaded. The <code>acceptedTypes</code> attribute restricts the file types to just those listed. The <code>maxFilesQuantity</code> attribute restricts the maximum number of files that can be uploaded. Size restrictions can be placed on individual files by setting the <code>maxRequestSize</code> parameter of the Ajax4jsf Filter section in the <filename>web.xml</filename> file for the project.
+ </para>
+ <para>
+ There are a number of event handlers specifc to the <classname><rich:fileUpload></classname> component:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <code>onadd</code> is triggered before a file is added to the list.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>onupload</code> is triggered before a file is uploaded.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>onuploadcomplete</code> is triggered after all files in the list have finished uploading.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>onuploadcanceled</code> is triggered after an upload has been canceled.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>onerror</code> is triggered when an error occurs during the upload process.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ The <classname><rich:fileUpload></classname> component has an embedded Flash module that adds extra functionality. To enable the Flash module, set <code>allowFlash="true"</code>. The Flash module adds additional features to file selection, such as the ability to choose multiple files at once and the filtering of files by their type. Additionally, the Flash module provides a smoother animation of the progress bar during the upload process, as the progress polling is performed by Flash rather than Ajax.
+ </para>
+ <para>
+ The text labels used in the component can be completely customized. Labels for the various controls of the component can be set using <code>addControlLabel</code>, <code>clearAllControlLabel</code>, <code>clearControlLabel</code>, <code>stopEntryControlLabel</code>, and <code>uploadControlLabel</code>. The status label for the upload can be set using the <code>label</code> attribute and the following wildcards:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <code>{B} {KB} {MB}</code>: the full size of the file to be uploaded, measured in bytes, kilobytes and megabytes respectively.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>{_B} {_KB} {_MB}</code>: the amount of data uploaded so far, measured in bytes, kilobytes and megabytes respectively.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>{ss} {mm} {hh}</code>: the elapsed time in seconds, minutes and hours respectively.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="sect-Component_Reference-Rich_inputs-richinplaceInput">
+ <title><rich:inplaceInput></title>
+ <para>
+ The <classname><rich:inplaceInput></classname> component allows information to be entered in-line in blocks of text, improving readability of the text. Changes can be rendered either in-line or for the whole block, and inputs can be focused with keyboard navigation. The component has three functional states: the "view" state, where the component displays its initial setting, such as "click to edit"; the "edit" state, where the user can input text; and the "changed" state, where the new value for the component has been confirmed but can be edited again if required.
+ </para>
+ <para>
+ When in the initial "view" state, the starting label can be set using the <code>defaultLabel</code> attribute, such as <code>defaultLabel="click to edit"</code>.
+ </para>
+ <para>
+ Basic usage requires the <code>value</code> attribute to point to the expression for the current value of the component.
+ </para>
+ <para>
+ By default, the event to switch the component to the "edit" state is a single mouse click. This can be changed using the <code>editEvent</code> attribute to specify a different event. When switching to "edit" mode, the existing text can be automatically highlighted to make editing easier by setting <code>selectOnEdit="true"</code>.
+ </para>
+ <para>
+ The user can confirm and save their input by pressing the <keycap>Enter</keycap> key or cancel by pressing the <keycap>Esc</keycap> key. Alternatively, buttons for confirming or canceling can be added to the component by setting <code>showControls="true"</code>. These buttons can be positioned using the <code>controlsHorizontalPosition</code> attribute with settings of <literal>left</literal>, <literal>right</literal>, or <literal>center</literal>, and the <code>controlsVerticalPosition</code> attribute with settings <literal>bottom</literal>, <literal>center</literal>, or <literal>top</literal>. The confirmation control icons can be altered using the <code>saveControlIcon</code> and <code>cancelControlIcon</code>. Further customization is possible through the use of facets.
+ </para>
+ <para>
+ There are several event handlers that are specific to the <classname><rich:inplaceInput></classname> component:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <code>oneditactivation</code> is triggered before the "edit" state is activated.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>oneditactivated</code> is triggered after the "edit" state is activated.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>onviewactivation</code> is triggered before the "view" or "changed" state is activated.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>onviewactivated</code> is triggered after the "view" or "changed" state is activated.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="sect-Component_Reference-Rich_inputs-richinplaceSelect">
+ <title><rich:inplaceSelect></title>
+ <para>
+ The <classname><rich:inplaceSelect></classname> component is similar to the <classname><rich:inplaceInput></classname> component, but the uses a drop-down selection box to enter text instead of a regular text field. Changes can be rendered either in-line or for the whole block, and inputs can be focused with keyboard navigation. The component has three functional states: the "view" state, where the component displays its initial setting, such as "click to edit"; the "edit" state, where the user can select a value from a drop-down list; and the "changed" state, where the new value for the component has been confirmed but can be edited again if required.
+ </para>
+ <para>
+ When in the initial "view" state, the starting label can be set using the <code>defaultLabel</code> attribute, such as <code>defaultLabel="click to edit"</code>.
+ </para>
+ <para>
+ Basic usage requires the <code>value</code> attribute to point to the expression for the current value of the component and a list of items. The list of items can be defined using the JSF components <classname><f:selectItem/></classname> and <classname><f:selectItems/></classname>.
+ </para>
+ <example id="exam-Component_Reference-richinplaceSelect-Defining_list_items_for_richinplaceSelect">
+ <title>Defining list items for <rich:inplaceSelect></title>
+
<programlisting language="XML">
<rich:inplaceSelect value="#{bean.inputValue}" defaultLabel="click to edit" >
<f:selectItems value="#{bean.selectItems}" />
@@ -620,918 +616,919 @@
<f.selectItem itemValue="4" itemLabel="Item 4" />
</rich:comboBox>
</programlisting>
- </example>
- <para>
- By default, the event to switch the component to the "edit" state is a single mouse click. This can be changed using the <code>editEvent</code> attribute to specify a different event. When switching to "edit" mode, the drop-down list of possible values will automatically be displayed; this can be deactivated by setting <code>openOnEdit="false"</code>.
- </para>
- <para>
- Once the user selects an option from the drop-down list, the item becomes the new value for the component and the state is switched to the "changed" state. Alternatively, buttons for confirming or canceling can be added to the component by setting <code>showControls="true"</code>. These buttons can be positioned using the <code>controlsHorizontalPosition</code> attribute with settings of <literal>left</literal>, <literal>right</literal>, or <literal>center</literal>, and the <code>controlsVerticalPosition</code> attribute with settings <literal>bottom</literal>, <literal>center</literal>, or <literal>top</literal>. The confirmation control icons can be altered using the <code>saveControlIcon</code> and <code>cancelControlIcon</code>. Further customization is possible through the use of facets.
- </para>
- <para>
- There are several event handlers that are specific to the <classname><rich:inplaceSelect></classname> component:
- </para>
- <itemizedlist>
- <listitem>
+ </example>
+ <para>
+ By default, the event to switch the component to the "edit" state is a single mouse click. This can be changed using the <code>editEvent</code> attribute to specify a different event. When switching to "edit" mode, the drop-down list of possible values will automatically be displayed; this can be deactivated by setting <code>openOnEdit="false"</code>.
+ </para>
+ <para>
+ Once the user selects an option from the drop-down list, the item becomes the new value for the component and the state is switched to the "changed" state. Alternatively, buttons for confirming or canceling can be added to the component by setting <code>showControls="true"</code>. These buttons can be positioned using the <code>controlsHorizontalPosition</code> attribute with settings of <literal>left</literal>, <literal>right</literal>, or <literal>center</literal>, and the <code>controlsVerticalPosition</code> attribute with settings <literal>bottom</literal>, <literal>center</literal>, or <literal>top</literal>. The confirmation control icons can be altered using the <code>saveControlIcon</code> and <code>cancelControlIcon</code>. Further customization is possible through the use of facets.
+ </para>
+ <para>
+ There are several event handlers that are specific to the <classname><rich:inplaceSelect></classname> component:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <code>oneditactivation</code> is triggered before the "edit" state is activated.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>oneditactivated</code> is triggered after the "edit" state is activated.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>onviewactivation</code> is triggered before the "view" or "changed" state is activated.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>onviewactivated</code> is triggered after the "view" or "changed" state is activated.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="sect-Component_Reference-Rich_inputs-richinputNumberSlider">
+ <title><rich:inputNumberSlider></title>
+ <para>
+ The <classname><rich:inputNumberSlider></classname> component provides a slider for changing numerical values. Optional features include a tool-tip to display the value while sliding, and a text field for typing the numerical value which can then be validated against the slider's range.
+ </para>
+ <para>
+ Basic use of the component with no attributes specified will render a slider with a minimum value of 0, a maximum of 100, and a gradient step of 1, together with a text field for typing the desired numerical value. The text field can be removed by setting <code>showInput="false"</code>, and the properties of the slider can be set with the attributes <code>minValue</code>, <code>maxValue</code>, and <code>step</code>. The slider is labeled with the minimum and maximum boundary values, and a tool-tip showing the current value is shown while sliding the slider; these items can be turned off by setting <code>showBoundaryValues="false"</code> and <code>showToolTip="false"</code> respectively.
+ </para>
+ <para>
+ Arrow controls can be added to either side of the slider to adjust the value incrementally by setting <code>showArrows="true"</code>. Clicking the arrows move the slider indicator in that direction by the gradient step, and clicking and holding the arrows moves the indicator continuously. The time delay for each step when updating continuously can be defined using the <code>delay</code> attribute.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Rich_inputs-richinputNumberSpinner">
+ <title><rich:inputNumberSpinner></title>
+ <para>
+ The <classname><rich:inputNumberSpinner></classname> component is a single-line input field with buttons to increase and decrease a numerical value. The value can be changed using the corresponding directional keys on a keyboard, or by typing into the field.
+ </para>
+ <para>
+ Basic use of the component with no attributes specified will render a number spinner with a minimum value of 1, a maximum value of 100, and a gradient step of 1. These default properties can be re-defined with the attributes <code>minValue</code>, <code>maxValue</code>, and <code>step</code> respectively. The starting value of the spinner is the minimum value unless otherwise specified with the <code>value</code> attribute.
+ </para>
+ <para>
+ When changing the value using the buttons, raising the value above the maximum or cause the spinner to restart at the minimum value. Likewise, when lowering below the minimum value the spinner will reset to the maximum value. This behavior can be deactivated by setting <code>cycled="false"</code>, which will cause the buttons to stop responding when the reach the maximum or minimum value.
+ </para>
+ <para>
+ The ability to change the value by typing into the text field can be disabled by setting <code>enableManualInput="false"</code>.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Rich_inputs-richsuggestionBox">
+ <title><rich:suggestionBox></title>
+ <para>
+ The <classname><rich:suggestionBox></classname> component adds a feature-rich drop-down list of suggestions to any text input component.
+ </para>
+ <para>
+ The <classname><rich:suggestionBox></classname> component needs the attributes defined for basic use: <code>for</code>, which identifies the component to attach the suggestion box to; <code>suggestionAction</code>, which defines the method for getting the collection of suggestion data; and <code>var</code>, which defines a collection name for access to the currently highlighted row. Typically the suggestions are presented as a list with one or more columns of suggestion data; the layout of these columns is defined inside the <classname><rich:suggestionBox></classname> tags using <classname><h:column></classname> and other <acronym>JSF</acronym> components.
+ </para>
+ <para>
+ For suggestion lists with multiple columns, the <code>fetchValue</code> attribute can be used to specify which column is used when selecting the value for the input component.
+ </para>
+ <para>
+ The <code>tokens</code> attribute can be used to define separator characters, which are used when multiple values need to be entered and a new suggestion made for each value. For example, <code>tokens=","</code> (a comma) will begin a new suggestion query each time a comma is typed. Multiple separators can be defined with spaces in between (<code>tokens=", . ; [ ]"</code>) or linking to a bean property that holds the collection of separator tokens.
+ </para>
+ <para>
+ The <code>minChars</code> attribute can be used to limit sending the Ajax request until a certain amount of characters has been entered. If the query returns no results, an appropriate message to display can be set with the <code>nothingLabel</code> attribute.
+ </para>
+ <para>
+ Instead of returning just one value from an object, the entire object can be returned to the client and handled appropriately. This is done by specifying <code>usingSuggestObjects="true"</code> and setting the <code>onobjectchange</code> attribute to a JavaScript method to handle the object, passing the <literal>suggestion</literal> object as a parameter.
+ </para>
+ </section>
+
+ </chapter>
+ <chapter id="chap-Component_Reference-Panels_and_containers" lang="en-US">
+ <title>Panels and containers</title>
<para>
- <code>oneditactivation</code> is triggered before the "edit" state is activated.
+ This chapter details those components which act as panels and containers to hold groups of other components.
</para>
- </listitem>
- <listitem>
+ <section id="sect-Component_Reference-Panels_and_containers-a4jform">
+ <title><a4j:form></title>
+ <para>
+ The <classname><a4j:form></classname> builds on the functionality of the JavaServer Faces (<acronym>JSF</acronym>) component <classname><h:form></classname>, adding Ajax capabilities to the form.
+ </para>
+ <note>
+ <title>Note</title>
+ <para>
+ The <acronym>JSF</acronym> component <classname><h:form></classname>, on which the <classname><a4j:form></classname> component is based, had an issue whereby the <classname><h:commandLink></classname> component could not be re-rendered without re-rendering the entire form. <classname><a4j:form></classname> and <classname><a4j:commandLink></classname> fix this issue.
+ </para>
+ </note>
+ <para>
+ The <classname><a4j:form></classname> component can add indirect Ajax support to non-Ajax components on the form by setting <code>ajaxSubmit="true"</code>. It then uses the standard Ajax component attributes and updates components specified with the <code>render</code> attribute.
+ </para>
+ <important>
+ <title>Important</title>
+ <para>
+ <classname><a4j:form></classname> should not use <code>ajaxSubmit="true"</code> if it contains other Ajax-capable components.
+ </para>
+ <para>
+ Additionally, due to security reasons the file upload form element cannot be indirectly made Ajax-capable with <classname><a4j:form></classname>.
+ </para>
+ </important>
+ </section>
+
+ <section id="sect-Component_Reference-Panels_and_containers-a4joutputPanel">
+ <title><a4j:outputPanel></title>
+ <para>
+ The <classname><a4j:outputPanel></classname> component is used to group together components in to update them as a whole, rather than having to specify the components individually.
+ </para>
+ <para>
+ The <code>layout</code> attribute can be used to determine how the component is rendered in <acronym>HTML</acronym>:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <code>layout="inline"</code> is the default behavior, which will render the component as a pair of <code><span></code> tags containing the child components.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>layout="block"</code> will render the component as a pair of <code><div></code> tags containing the child components, which will use any defined <code><div></code> element styles.
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <code>layout="none"</code> will render the component as a pair of <code><span></code> tags with an identifier equal to that of a child component. If the child component is rendered then the <code><span></code> are not included, leaving no markup representing the <classname><a4j:outputPanel></classname> in <acronym>HTML</acronym>.
+ </para>
+ </listitem>
+ </itemizedlist>
+ <para>
+ Setting <code>ajaxRendered="true"</code> will cause the <classname><a4j:outputPanel></classname> to be updated with each Ajax response for the page, even when not listed explicitly by the requesting component. This can in turn be overridden by specific attributes on any requesting components.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Panels_and_containers-a4jregion">
+ <title><a4j:region></title>
+ <para>
+ The <classname><a4j:region></classname> component specifies a part of the document object model (<acronym>DOM</acronym>) tree to be processed on the server. The processing includes data handling during decoding, conversion, validation, and model updating. When not using <classname><a4j:region></classname>, the entire view functions as a region.
+ </para>
+ <para>
+ The whole form is still submitted to the server, but only the specified region is processed. Regions can be nested, in which case only the immediate region of the component initiating the request will be processed.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Panels_and_containers-richmodalPanel">
+ <title><rich:modalPanel></title>
+ <para>
+ The <classname><rich:modalPanel></classname> component provides a modal panel or window that blocks interaction with the rest of the application while active. It can be easily positioned on the screen, dragged to a new position by the user, and re-sized.
+ </para>
+ <important>
+ <title>Important</title>
+ <para>
+ The <classname><rich:modalPanel></classname> component should always be placed outside the original <classname><h:form></classname>, and must include its own <classname><h:form></classname> if performing submits.
+ </para>
+ </important>
+ <para>
+ By default, the modal panel can be both re-sized and re-positioned by the user. The minimum possible size for the panel can be set with the These abilities can be deactivated by setting <code>resizable</code> or <code>movable</code> to <literal>false</literal> as necessary. The state of the modal panel, including size and position on screen, can be maintained and restored after submitting and reloading by setting <code>keepVisualState="true"</code>.
+ </para>
+ <para>
+ If <code>showWhenRendered="true"</code> then the modal panel will display when the page is first loaded.
+ </para>
+ <example id="exam-Component_Reference-richmodalPanel-richmodalPanel_example">
+ <title><rich:modalPanel> example</title>
+
+<programlisting language="xml">
+<a onclick="Richfaces.showModalPanel('pnl');" href="#">Show ModalPanel</a>
+<a4j:form>
+ <rich:modalPanel id="pnl" >
+ <a onclick="Richfaces.hideModalPanel('pnl');" href="#">Hide ModalPanel</a>
+ </rich:modalPanel>
+</a4j:form>
+</programlisting>
+ </example>
+ </section>
+
+ <section id="sect-Component_Reference-Panels_and_containers-richpanel">
+ <title><rich:panel></title>
+ <para>
+ The <classname><rich:panel></classname> component is a bordered panel with an optional header.
+ </para>
+ <para>
+ No attributes need to be listed for basic usage. To add a header to the panel, use the <code>header</code> attribute to specify the text to appear in the header. Alternatively the header can be constructed using a header facet.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Panels_and_containers-richpanelBar">
+ <title><rich:panelBar></title>
+ <para>
+ The <classname><rich:panelBar></classname> is a series of panels stacked on top of each other, each collapsed such that only the header of the panel is showing. When the header of a panel is clicked, it is expanded to show the content of the panel. Clicking on a different header will collapse the previous panel and epand the selected one. Another name for the component is "accordion". Each panel in contained in a <classname><rich:panelBar></classname> component is a <classname><rich:panelBarItem></classname> component.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Panels_and_containers-richpanelBarItem">
+ <title><rich:panelBarItem></title>
+ <para>
+ The <classname><rich:panelBarItem></classname> component is a panel for use with the <classname><rich:panelBar></classname> component.
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Panels_and_containers-richpanelMenu">
+ <title><rich:panelMenu></title>
+ <para>
+ The <classname><rich:panelMenu></classname> component can be used in conjunction with <classname><rich:panelMenuItem></classname> and <classname><rich:panelMenuGroup></classname> to create an expanding, hierarchical menu. The <classname><rich:panelMenu></classname> component's appearance can be highly customized, and the hierarchy can stretch to any number of sub-levels.
+ </para>
+ <para>
+ The <code>selectedChild</code> attribute is used to point to the name of the currently selected menu item.
+ </para>
+ <para>
+ By default, the event to expand the menu is a mouse click. This can be changed by setting <code>event</code> to specify the preferred event. Several sub-menus can be expanded a once unless the <code>expandSingle</code> is set to <literal>true</literal>, which only allows one sub-menu at a time to be expanded.
+ </para>
+ <para>
+ The <code>mode</code> attribute defines the submission mode for normal menu items, and the <code>expandMode</code> attribute defines the submission mode for menu items that expand and collapse. The settings for these attributes apply to the entire menu unless a menu item defines its own individual <code>mode</code> or <code>expandMode</code>. The values for <code>mode</code> and <code>expandMode</code> are:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <literal>server</literal>, the default setting, which submits the form normally and completely refreshes the page;
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>ajax</literal>, which performs an Ajax form submission, and re-renders elements specified with the <code>render</code> attribute; and
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <literal>none</literal>, which causes the <code>action</code> and <code>actionListener</code> items to be ignored, and the behavior is fully defined by the nested components instead of responses from submissions.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </section>
+
+ <section id="sect-Component_Reference-Panels_and_containers-richpanelMenuGroup">
+ <title><rich:panelMenuGroup></title>
+ <para>
+ The <classname><rich:panelMenuGroup></classname> component defines a group of <classname><rich:panelMenuItem></classname> components inside a <classname><rich:panelMenu></classname>.
+ </para>
+ <para>
+ If the <code>expandMode</code> is unspecified, the submission behavior for the group is inherited from the parent <classname><rich:panelMenu></classname>. Otherwise, the <code>expandMode</code> setting is used instead of the parent's behavior.
+ </para>
+ <para>
+ Icons for menu items can be chosen from a set of standard icons. There are three attributes that relate to the different menu states that the icon represents: <code>iconExpanded</code>, <code>iconCollapsed</code>, and <code>iconDisabled</code>. The standard icons are shown in <xref linkend="figu-Component_Reference-richpanelMenuGroup-Standard_icons" />.
+ </para>
+ <figure id="figu-Component_Reference-richpanelMenuGroup-Standard_icons">
+ <title>Standard icons</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/panelMenuGroupIcons.png" format="PNG" />
+ </imageobject>
+ </mediaobject>
+ </figure>
+ </section>
+
+ <section id="sect-Component_Reference-Panels_and_containers-richpanelMenuItem">
+ <title><rich:panelMenuItem></title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Panels_and_containers-richsimpleTogglePanel">
+ <title><rich:simpleTogglePanel></title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Panels_and_containers-richtabPanel">
+ <title><rich:tabPanel></title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Panels_and_containers-richtab">
+ <title><rich:tab></title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Panels_and_containers-richtogglePanel">
+ <title><rich:togglePanel></title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Panels_and_containers-richtoggleControl">
+ <title><rich:toggleControl></title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ </chapter>
+ <chapter id="chap-Component_Reference-Tables_and_grids" lang="en-US">
+ <title>Tables and grids</title>
<para>
- <code>oneditactivated</code> is triggered after the "edit" state is activated.
+ Incomplete
</para>
- </listitem>
- <listitem>
+ <section id="sect-Component_Reference-Tables_and_grids-richcolumn">
+ <title>rich:column</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Tables_and_grids-richcolumnGroup">
+ <title>rich:columnGroup</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Tables_and_grids-richcolumns">
+ <title>rich:columns</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Tables_and_grids-richdataFilterSlider">
+ <title>rich:dataFilterSlider</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Tables_and_grids-richdataGrid">
+ <title>rich:dataGrid</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Tables_and_grids-richdataScroller">
+ <title>rich:dataScroller</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Tables_and_grids-richdataTable">
+ <title>rich:dataTable</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Tables_and_grids-richextendedDataTable">
+ <title>rich:extendedDataTable</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Tables_and_grids-richrepeat">
+ <title>rich:repeat</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Tables_and_grids-richscrollableDataTable">
+ <title>rich:scrollableDataTable</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Tables_and_grids-richsubTable">
+ <title>rich:subTable</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Tables_and_grids-Table_filtering">
+ <title>Table filtering</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Tables_and_grids-Table_sorting">
+ <title>Table sorting</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ </chapter>
+ <chapter id="chap-Component_Reference-Lists_and_trees" lang="en-US">
+ <title>Lists and trees</title>
<para>
- <code>onviewactivation</code> is triggered before the "view" or "changed" state is activated.
+ Incomplete
</para>
- </listitem>
- <listitem>
+ <section id="sect-Component_Reference-Lists_and_trees-richdataDefinitionList">
+ <title>rich:dataDefinitionList</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richdataList">
+ <title>rich:dataList</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richdataOrderedList">
+ <title>rich:dataOrderedList</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richlistShuttle">
+ <title>rich:listShuttle</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richorderingList">
+ <title>rich:orderingList</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richpickList">
+ <title>rich:pickList</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richchangeExpandListener">
+ <title>rich:changeExpandListener</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richnodeSelectListener">
+ <title>rich:nodeSelectListener</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richrecursiveTreeNodesAdapter">
+ <title>rich:recursiveTreeNodesAdapter</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richtree">
+ <title>rich:tree</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richtreeNode">
+ <title>rich:treeNode</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Lists_and_trees-richtreeNodesAdapter">
+ <title>rich:treeNodesAdapter</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ </chapter>
+ <chapter id="chap-Component_Reference-Menus_and_toolbars" lang="en-US">
+ <title>Menus and toolbars</title>
<para>
- <code>onviewactivated</code> is triggered after the "view" or "changed" state is activated.
+ Incomplete
</para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section id="sect-Component_Reference-Rich_inputs-richinputNumberSlider">
- <title><rich:inputNumberSlider></title>
- <para>
- The <classname><rich:inputNumberSlider></classname> component provides a slider for changing numerical values. Optional features include a tool-tip to display the value while sliding, and a text field for typing the numerical value which can then be validated against the slider's range.
- </para>
- <para>
- Basic use of the component with no attributes specified will render a slider with a minimum value of 0, a maximum of 100, and a gradient step of 1, together with a text field for typing the desired numerical value. The text field can be removed by setting <code>showInput="false"</code>, and the properties of the slider can be set with the attributes <code>minValue</code>, <code>maxValue</code>, and <code>step</code>. The slider is labeled with the minimum and maximum boundary values, and a tool-tip showing the current value is shown while sliding the slider; these items can be turned off by setting <code>showBoundaryValues="false"</code> and <code>showToolTip="false"</code> respectively.
- </para>
- <para>
- Arrow controls can be added to either side of the slider to adjust the value incrementally by setting <code>showArrows="true"</code>. Clicking the arrows move the slider indicator in that direction by the gradient step, and clicking and holding the arrows moves the indicator continuously. The time delay for each step when updating continuously can be defined using the <code>delay</code> attribute.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Rich_inputs-richinputNumberSpinner">
- <title><rich:inputNumberSpinner></title>
- <para>
- The <classname><rich:inputNumberSpinner></classname> component is a single-line input field with buttons to increase and decrease a numerical value. The value can be changed using the corresponding directional keys on a keyboard, or by typing into the field.
- </para>
- <para>
- Basic use of the component with no attributes specified will render a number spinner with a minimum value of 1, a maximum value of 100, and a gradient step of 1. These default properties can be re-defined with the attributes <code>minValue</code>, <code>maxValue</code>, and <code>step</code> respectively. The starting value of the spinner is the minimum value unless otherwise specified with the <code>value</code> attribute.
- </para>
- <para>
- When changing the value using the buttons, raising the value above the maximum or cause the spinner to restart at the minimum value. Likewise, when lowering below the minimum value the spinner will reset to the maximum value. This behavior can be deactivated by setting <code>cycled="false"</code>, which will cause the buttons to stop responding when the reach the maximum or minimum value.
- </para>
- <para>
- The ability to change the value by typing into the text field can be disabled by setting <code>enableManualInput="false"</code>.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Rich_inputs-richsuggestionBox">
- <title><rich:suggestionBox></title>
- <para>
- The <classname><rich:suggestionBox></classname> component adds a feature-rich drop-down list of suggestions to any text input component.
- </para>
- <para>
- The <classname><rich:suggestionBox></classname> component needs the attributes defined for basic use: <code>for</code>, which identifies the component to attach the suggestion box to; <code>suggestionAction</code>, which defines the method for getting the collection of suggestion data; and <code>var</code>, which defines a collection name for access to the currently highlighted row. Typically the suggestions are presented as a list with one or more columns of suggestion data; the layout of these columns is defined inside the <classname><rich:suggestionBox></classname> tags using <classname><h:column></classname> and other <acronym>JSF</acronym> components.
- </para>
- <para>
- For suggestion lists with multiple columns, the <code>fetchValue</code> attribute can be used to specify which column is used when selecting the value for the input component.
- </para>
- <para>
- The <code>tokens</code> attribute can be used to define separator characters, which are used when multiple values need to be entered and a new suggestion made for each value. For example, <code>tokens=","</code> (a comma) will begin a new suggestion query each time a comma is typed. Multiple separators can be defined with spaces in between (<code>tokens=", . ; [ ]"</code>) or linking to a bean property that holds the collection of separator tokens.
- </para>
- <para>
- The <code>minChars</code> attribute can be used to limit sending the Ajax request until a certain amount of characters has been entered. If the query returns no results, an appropriate message to display can be set with the <code>nothingLabel</code> attribute.
- </para>
- <para>
- Instead of returning just one value from an object, the entire object can be returned to the client and handled appropriately. This is done by specifying <code>usingSuggestObjects="true"</code> and setting the <code>onobjectchange</code> attribute to a JavaScript method to handle the object, passing the <literal>suggestion</literal> object as a parameter.
- </para>
- </section>
+ <section id="sect-Component_Reference-Menus_and_toolbars-richcontextMenu">
+ <title>rich:contextMenu</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Menus_and_toolbars-richdropDownMenu">
+ <title>rich:dropDownMenu</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Menus_and_toolbars-richmenuGroup">
+ <title>rich:menuGroup</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Menus_and_toolbars-richmenuItem">
+ <title>rich:menuItem</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Menus_and_toolbars-richmenuSeparator">
+ <title>rich:menuSeparator</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Menus_and_toolbars-richtoolBar">
+ <title>rich:toolBar</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Menus_and_toolbars-richtoolBarGroup">
+ <title>rich:toolBarGroup</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
-</chapter>
- <chapter id="chap-Component_Reference-Panels_and_containers" lang="en-US">
- <title>Panels and containers</title>
- <para>
- This chapter details those components which act as panels and containers to hold groups of other components.
- </para>
- <section id="sect-Component_Reference-Panels_and_containers-a4jform">
- <title><a4j:form></title>
- <para>
- The <classname><a4j:form></classname> builds on the functionality of the JavaServer Faces (<acronym>JSF</acronym>) component <classname><h:form></classname>, adding Ajax capabilities to the form.
- </para>
- <note>
- <title>Note</title>
- <para>
- The <acronym>JSF</acronym> component <classname><h:form></classname>, on which the <classname><a4j:form></classname> component is based, had an issue whereby the <classname><h:commandLink></classname> component could not be re-rendered without re-rendering the entire form. <classname><a4j:form></classname> and <classname><a4j:commandLink></classname> fix this issue.
- </para>
- </note>
- <para>
- The <classname><a4j:form></classname> component can add indirect Ajax support to non-Ajax components on the form by setting <code>ajaxSubmit="true"</code>. It then uses the standard Ajax component attributes and updates components specified with the <code>render</code> attribute.
- </para>
- <important>
- <title>Important</title>
- <para>
- <classname><a4j:form></classname> should not use <code>ajaxSubmit="true"</code> if it contains other Ajax-capable components.
- </para>
- <para>
- Additionally, due to security reasons the file upload form element cannot be indirectly made Ajax-capable with <classname><a4j:form></classname>.
- </para>
- </important>
- </section>
-
- <section id="sect-Component_Reference-Panels_and_containers-a4joutputPanel">
- <title><a4j:outputPanel></title>
- <para>
- The <classname><a4j:outputPanel></classname> component is used to group together components in to update them as a whole, rather than having to specify the components individually.
- </para>
- <para>
- The <code>layout</code> attribute can be used to determine how the component is rendered in <acronym>HTML</acronym>:
- </para>
- <itemizedlist>
- <listitem>
+ </chapter>
+ <chapter id="chap-Component_Reference-Messages" lang="en-US">
+ <title>Messages</title>
<para>
- <code>layout="inline"</code> is the default behavior, which will render the component as a pair of <code><span></code> tags containing the child components.
+ Incomplete
</para>
- </listitem>
- <listitem>
+ <section id="sect-Component_Reference-Messages-richmessage">
+ <title>rich:message</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Messages-richmessages">
+ <title>rich:messages</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Messages-richprogressBar">
+ <title>rich:progressBar</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Messages-richtoolTip">
+ <title>rich:toolTip</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ </chapter>
+ <chapter id="chap-Component_Reference-Drag_and_drop" lang="en-US">
+ <title>Drag and drop</title>
<para>
- <code>layout="block"</code> will render the component as a pair of <code><div></code> tags containing the child components, which will use any defined <code><div></code> element styles.
+ Incomplete
</para>
- </listitem>
- <listitem>
+ <section id="sect-Component_Reference-Drag_and_drop-richdragIndicator">
+ <title>rich:dragIndicator</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Drag_and_drop-richdragSupport">
+ <title>rich:dragSupport</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Drag_and_drop-richdropSupport">
+ <title>rich:dropSupport</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Drag_and_drop-richdragListener">
+ <title>rich:dragListener</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Drag_and_drop-richdropListener">
+ <title>rich:dropListener</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Drag_and_drop-richdndParam">
+ <title>rich:dndParam</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ </chapter>
+ <chapter id="chap-Component_Reference-Layout_and_appearance" lang="en-US">
+ <title>Layout and appearance</title>
<para>
- <code>layout="none"</code> will render the component as a pair of <code><span></code> tags with an identifier equal to that of a child component. If the child component is rendered then the <code><span></code> are not included, leaving no markup representing the <classname><a4j:outputPanel></classname> in <acronym>HTML</acronym>.
+ Incomplete
</para>
- </listitem>
- </itemizedlist>
- <para>
- Setting <code>ajaxRendered="true"</code> will cause the <classname><a4j:outputPanel></classname> to be updated with each Ajax response for the page, even when not listed explicitly by the requesting component. This can in turn be overridden by specific attributes on any requesting components.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Panels_and_containers-a4jregion">
- <title><a4j:region></title>
- <para>
- The <classname><a4j:region></classname> component specifies a part of the document object model (<acronym>DOM</acronym>) tree to be processed on the server. The processing includes data handling during decoding, conversion, validation, and model updating. When not using <classname><a4j:region></classname>, the entire view functions as a region.
- </para>
- <para>
- The whole form is still submitted to the server, but only the specified region is processed. Regions can be nested, in which case only the immediate region of the component initiating the request will be processed.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Panels_and_containers-richmodalPanel">
- <title><rich:modalPanel></title>
- <para>
- The <classname><rich:modalPanel></classname> component provides a modal panel or window that blocks interaction with the rest of the application while active. It can be easily positioned on the screen, dragged to a new position by the user, and re-sized.
- </para>
- <important>
- <title>Important</title>
- <para>
- The <classname><rich:modalPanel></classname> component should always be placed outside the original <classname><h:form></classname>, and must include its own <classname><h:form></classname> if performing submits.
- </para>
- </important>
- <para>
- By default, the modal panel can be both re-sized and re-positioned by the user. The minimum possible size for the panel can be set with the These abilities can be deactivated by setting <code>resizable</code> or <code>movable</code> to <literal>false</literal> as necessary. The state of the modal panel, including size and position on screen, can be maintained and restored after submitting and reloading by setting <code>keepVisualState="true"</code>.
- </para>
- <para>
- If <code>showWhenRendered="true"</code> then the modal panel will display when the page is first loaded.
- </para>
- <example id="exam-Component_Reference-richmodalPanel-richmodalPanel_example">
- <title><rich:modalPanel> example</title>
-
-<programlisting language="xml">
-<a onclick="Richfaces.showModalPanel('pnl');" href="#">Show ModalPanel</a>
-<a4j:form>
- <rich:modalPanel id="pnl" >
- <a onclick="Richfaces.hideModalPanel('pnl');" href="#">Hide ModalPanel</a>
- </rich:modalPanel>
-</a4j:form>
-</programlisting>
- </example>
- </section>
-
- <section id="sect-Component_Reference-Panels_and_containers-richpanel">
- <title><rich:panel></title>
- <para>
- The <classname><rich:panel></classname> component is a bordered panel with an optional header.
- </para>
- <para>
- No attributes need to be listed for basic usage. To add a header to the panel, use the <code>header</code> attribute to specify the text to appear in the header. Alternatively the header can be constructed using a header facet.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Panels_and_containers-richpanelBar">
- <title><rich:panelBar></title>
- <para>
- The <classname><rich:panelBar></classname> is a series of panels stacked on top of each other, each collapsed such that only the header of the panel is showing. When the header of a panel is clicked, it is expanded to show the content of the panel. Clicking on a different header will collapse the previous panel and epand the selected one. Another name for the component is "accordion". Each panel in contained in a <classname><rich:panelBar></classname> component is a <classname><rich:panelBarItem></classname> component.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Panels_and_containers-richpanelBarItem">
- <title><rich:panelBarItem></title>
- <para>
- The <classname><rich:panelBarItem></classname> component is a panel for use with the <classname><rich:panelBar></classname> component.
- </para>
- </section>
-
- <section id="sect-Component_Reference-Panels_and_containers-richpanelMenu">
- <title><rich:panelMenu></title>
- <para>
- The <classname><rich:panelMenu></classname> component can be used in conjunction with <classname><rich:panelMenuItem></classname> and <classname><rich:panelMenuGroup></classname> to create an expanding, hierarchical menu. The <classname><rich:panelMenu></classname> component's appearance can be highly customized, and the hierarchy can stretch to any number of sub-levels.
- </para>
- <para>
- The <code>selectedChild</code> attribute is used to point to the name of the currently selected menu item.
- </para>
- <para>
- By default, the event to expand the menu is a mouse click. This can be changed by setting <code>event</code> to specify the preferred event. Several sub-menus can be expanded a once unless the <code>expandSingle</code> is set to <literal>true</literal>, which only allows one sub-menu at a time to be expanded.
- </para>
- <para>
- The <code>mode</code> attribute defines the submission mode for normal menu items, and the <code>expandMode</code> attribute defines the submission mode for menu items that expand and collapse. The settings for these attributes apply to the entire menu unless a menu item defines its own individual <code>mode</code> or <code>expandMode</code>. The values for <code>mode</code> and <code>expandMode</code> are:
- </para>
- <itemizedlist>
- <listitem>
+ <section id="sect-Component_Reference-Layout_and_appearance-a4jloadStyle">
+ <title>a4j:loadStyle</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Layout_and_appearance-richeffect">
+ <title>rich:effect</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Layout_and_appearance-richjQuery">
+ <title>rich:jQuery</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Layout_and_appearance-richseparator">
+ <title>rich:separator</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Layout_and_appearance-richspacer">
+ <title>rich:spacer</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Layout_and_appearance-richpage">
+ <title>rich:page</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Layout_and_appearance-richlayout">
+ <title>rich:layout</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Layout_and_appearance-richlayoutPanel">
+ <title>rich:layoutPanel</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ </chapter>
+ <chapter id="chap-Component_Reference-Resource_handling" lang="en-US">
+ <title>Resource handling</title>
<para>
- <literal>server</literal>, the default setting, which submits the form normally and completely refreshes the page;
+ Incomplete
</para>
- </listitem>
- <listitem>
+ <section id="sect-Component_Reference-Resource_handling-a4jloadBundle">
+ <title>a4j:loadBundle</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Resource_handling-a4jkeepAlive">
+ <title>a4j:keepAlive</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Resource_handling-a4jpoll">
+ <title>a4j:poll</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Resource_handling-a4jpush">
+ <title>a4j:push</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Resource_handling-a4jqueue">
+ <title>a4j:queue</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Resource_handling-a4jstatus">
+ <title>a4j:status</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ </chapter>
+ <chapter id="chap-Component_Reference-Validation" lang="en-US">
+ <title>Validation</title>
<para>
- <literal>ajax</literal>, which performs an Ajax form submission, and re-renders elements specified with the <code>render</code> attribute; and
+ Incomplete
</para>
- </listitem>
- <listitem>
+ <section id="sect-Component_Reference-Validation-richajaxValidator">
+ <title>rich:ajaxValidator</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Validation-richgraphValidator">
+ <title>rich:graphValidator</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Validation-richbeanValidator">
+ <title>rich:beanValidator</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ </chapter>
+ <chapter id="chap-Component_Reference-Portals" lang="en-US">
+ <title>Portals</title>
<para>
- <literal>none</literal>, which causes the <code>action</code> and <code>actionListener</code> items to be ignored, and the behavior is fully defined by the nested components instead of responses from submissions.
+ Incomplete
</para>
- </listitem>
- </itemizedlist>
- </section>
-
- <section id="sect-Component_Reference-Panels_and_containers-richpanelMenuGroup">
- <title><rich:panelMenuGroup></title>
- <para>
- The <classname><rich:panelMenuGroup></classname> component defines a group of <classname><rich:panelMenuItem></classname> components inside a <classname><rich:panelMenu></classname>.
- </para>
- <para>
- If the <code>expandMode</code> is unspecified, the submission behavior for the group is inherited from the parent <classname><rich:panelMenu></classname>. Otherwise, the <code>expandMode</code> setting is used instead of the parent's behavior.
- </para>
- <para>
- Icons for menu items can be chosen from a set of standard icons. There are three attributes that relate to the different menu states that the icon represents: <code>iconExpanded</code>, <code>iconCollapsed</code>, and <code>iconDisabled</code>. The standard icons are shown in <xref linkend="figu-Component_Reference-richpanelMenuGroup-Standard_icons"/>.
- </para>
- <figure id="figu-Component_Reference-richpanelMenuGroup-Standard_icons">
- <title>Standard icons</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/panelMenuGroupIcons.png" format="PNG"/>
- </imageobject>
- </mediaobject>
- </figure>
- </section>
-
- <section id="sect-Component_Reference-Panels_and_containers-richpanelMenuItem">
- <title><rich:panelMenuItem></title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Panels_and_containers-richsimpleTogglePanel">
- <title><rich:simpleTogglePanel></title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Panels_and_containers-richtabPanel">
- <title><rich:tabPanel></title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Panels_and_containers-richtab">
- <title><rich:tab></title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Panels_and_containers-richtogglePanel">
- <title><rich:togglePanel></title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Panels_and_containers-richtoggleControl">
- <title><rich:toggleControl></title>
- <para>
- Incomplete
- </para>
- </section>
+ <section id="sect-Component_Reference-Portals-a4jportlet">
+ <title>a4j:portlet</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
-</chapter>
- <chapter id="chap-Component_Reference-Tables_and_grids" lang="en-US">
- <title>Tables and grids</title>
- <para>
- Incomplete
- </para>
- <section id="sect-Component_Reference-Tables_and_grids-richcolumn">
- <title>rich:column</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Tables_and_grids-richcolumnGroup">
- <title>rich:columnGroup</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Tables_and_grids-richcolumns">
- <title>rich:columns</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Tables_and_grids-richdataFilterSlider">
- <title>rich:dataFilterSlider</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Tables_and_grids-richdataGrid">
- <title>rich:dataGrid</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Tables_and_grids-richdataScroller">
- <title>rich:dataScroller</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Tables_and_grids-richdataTable">
- <title>rich:dataTable</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Tables_and_grids-richextendedDataTable">
- <title>rich:extendedDataTable</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Tables_and_grids-richrepeat">
- <title>rich:repeat</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Tables_and_grids-richscrollableDataTable">
- <title>rich:scrollableDataTable</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Tables_and_grids-richsubTable">
- <title>rich:subTable</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Tables_and_grids-Table_filtering">
- <title>Table filtering</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Tables_and_grids-Table_sorting">
- <title>Table sorting</title>
- <para>
- Incomplete
- </para>
- </section>
+ </chapter>
+ <chapter id="chap-Component_Reference-Functionality_extension" lang="en-US">
+ <title>Functionality extension</title>
+ <para>
+ Incomplete
+ </para>
+ <section id="sect-Component_Reference-Functionality_extension-a4jactionParam">
+ <title>a4j:actionParam</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Functionality_extension-a4jajax">
+ <title>a4j:ajax</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Functionality_extension-a4jajaxListener">
+ <title>a4j:ajaxListener</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Functionality_extension-a4jinclude">
+ <title>a4j:include</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Functionality_extension-a4jjsFunction">
+ <title>a4j:jsFunction</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Functionality_extension-a4jloadScript">
+ <title>a4j:loadScript</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Functionality_extension-a4jlog">
+ <title>a4j:log</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Functionality_extension-richcomponentControl">
+ <title>rich:componentControl</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
-</chapter>
- <chapter id="chap-Component_Reference-Lists_and_trees" lang="en-US">
- <title>Lists and trees</title>
- <para>
- Incomplete
- </para>
- <section id="sect-Component_Reference-Lists_and_trees-richdataDefinitionList">
- <title>rich:dataDefinitionList</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richdataList">
- <title>rich:dataList</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richdataOrderedList">
- <title>rich:dataOrderedList</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richlistShuttle">
- <title>rich:listShuttle</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richorderingList">
- <title>rich:orderingList</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richpickList">
- <title>rich:pickList</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richchangeExpandListener">
- <title>rich:changeExpandListener</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richnodeSelectListener">
- <title>rich:nodeSelectListener</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richrecursiveTreeNodesAdapter">
- <title>rich:recursiveTreeNodesAdapter</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richtree">
- <title>rich:tree</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richtreeNode">
- <title>rich:treeNode</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Lists_and_trees-richtreeNodesAdapter">
- <title>rich:treeNodesAdapter</title>
- <para>
- Incomplete
- </para>
- </section>
+ </chapter>
+ <chapter id="chap-Component_Reference-Other_components" lang="en-US">
+ <title>Other components</title>
+ <para>
+ Incomplete
+ </para>
+ <section id="sect-Component_Reference-Other_components-a4jmediaOutput">
+ <title>a4j:mediaOutput</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Other_components-richhotkey">
+ <title>rich:hotkey</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Other_components-richinsert">
+ <title>rich:insert</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Other_components-richpaint2D">
+ <title>rich:paint2D</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Other_components-richgmap">
+ <title>rich:gmap</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
+
+ <section id="sect-Component_Reference-Other_components-richvirtualEarth">
+ <title>rich:virtualEarth</title>
+ <para>
+ Incomplete
+ </para>
+ </section>
-</chapter>
- <chapter id="chap-Component_Reference-Menus_and_toolbars" lang="en-US">
- <title>Menus and toolbars</title>
- <para>
- Incomplete
- </para>
- <section id="sect-Component_Reference-Menus_and_toolbars-richcontextMenu">
- <title>rich:contextMenu</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Menus_and_toolbars-richdropDownMenu">
- <title>rich:dropDownMenu</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Menus_and_toolbars-richmenuGroup">
- <title>rich:menuGroup</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Menus_and_toolbars-richmenuItem">
- <title>rich:menuItem</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Menus_and_toolbars-richmenuSeparator">
- <title>rich:menuSeparator</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Menus_and_toolbars-richtoolBar">
- <title>rich:toolBar</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Menus_and_toolbars-richtoolBarGroup">
- <title>rich:toolBarGroup</title>
- <para>
- Incomplete
- </para>
- </section>
-
-</chapter>
- <chapter id="chap-Component_Reference-Messages" lang="en-US">
- <title>Messages</title>
- <para>
- Incomplete
- </para>
- <section id="sect-Component_Reference-Messages-richmessage">
- <title>rich:message</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Messages-richmessages">
- <title>rich:messages</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Messages-richprogressBar">
- <title>rich:progressBar</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Messages-richtoolTip">
- <title>rich:toolTip</title>
- <para>
- Incomplete
- </para>
- </section>
-
-</chapter>
- <chapter id="chap-Component_Reference-Drag_and_drop" lang="en-US">
- <title>Drag and drop</title>
- <para>
- Incomplete
- </para>
- <section id="sect-Component_Reference-Drag_and_drop-richdragIndicator">
- <title>rich:dragIndicator</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Drag_and_drop-richdragSupport">
- <title>rich:dragSupport</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Drag_and_drop-richdropSupport">
- <title>rich:dropSupport</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Drag_and_drop-richdragListener">
- <title>rich:dragListener</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Drag_and_drop-richdropListener">
- <title>rich:dropListener</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Drag_and_drop-richdndParam">
- <title>rich:dndParam</title>
- <para>
- Incomplete
- </para>
- </section>
-
-</chapter>
- <chapter id="chap-Component_Reference-Layout_and_appearance" lang="en-US">
- <title>Layout and appearance</title>
- <para>
- Incomplete
- </para>
- <section id="sect-Component_Reference-Layout_and_appearance-a4jloadStyle">
- <title>a4j:loadStyle</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Layout_and_appearance-richeffect">
- <title>rich:effect</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Layout_and_appearance-richjQuery">
- <title>rich:jQuery</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Layout_and_appearance-richseparator">
- <title>rich:separator</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Layout_and_appearance-richspacer">
- <title>rich:spacer</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Layout_and_appearance-richpage">
- <title>rich:page</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Layout_and_appearance-richlayout">
- <title>rich:layout</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Layout_and_appearance-richlayoutPanel">
- <title>rich:layoutPanel</title>
- <para>
- Incomplete
- </para>
- </section>
-
-</chapter>
- <chapter id="chap-Component_Reference-Resource_handling" lang="en-US">
- <title>Resource handling</title>
- <para>
- Incomplete
- </para>
- <section id="sect-Component_Reference-Resource_handling-a4jloadBundle">
- <title>a4j:loadBundle</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Resource_handling-a4jkeepAlive">
- <title>a4j:keepAlive</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Resource_handling-a4jpoll">
- <title>a4j:poll</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Resource_handling-a4jpush">
- <title>a4j:push</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Resource_handling-a4jqueue">
- <title>a4j:queue</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Resource_handling-a4jstatus">
- <title>a4j:status</title>
- <para>
- Incomplete
- </para>
- </section>
-
-</chapter>
- <chapter id="chap-Component_Reference-Validation" lang="en-US">
- <title>Validation</title>
- <para>
- Incomplete
- </para>
- <section id="sect-Component_Reference-Validation-richajaxValidator">
- <title>rich:ajaxValidator</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Validation-richgraphValidator">
- <title>rich:graphValidator</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Validation-richbeanValidator">
- <title>rich:beanValidator</title>
- <para>
- Incomplete
- </para>
- </section>
-
-</chapter>
- <chapter id="chap-Component_Reference-Portals" lang="en-US">
- <title>Portals</title>
- <para>
- Incomplete
- </para>
- <section id="sect-Component_Reference-Portals-a4jportlet">
- <title>a4j:portlet</title>
- <para>
- Incomplete
- </para>
- </section>
-
-</chapter>
- <chapter id="chap-Component_Reference-Functionality_extension" lang="en-US">
- <title>Functionality extension</title>
- <para>
- Incomplete
- </para>
- <section id="sect-Component_Reference-Functionality_extension-a4jactionParam">
- <title>a4j:actionParam</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Functionality_extension-a4jajax">
- <title>a4j:ajax</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Functionality_extension-a4jajaxListener">
- <title>a4j:ajaxListener</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Functionality_extension-a4jinclude">
- <title>a4j:include</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Functionality_extension-a4jjsFunction">
- <title>a4j:jsFunction</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Functionality_extension-a4jloadScript">
- <title>a4j:loadScript</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Functionality_extension-a4jlog">
- <title>a4j:log</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Functionality_extension-richcomponentControl">
- <title>rich:componentControl</title>
- <para>
- Incomplete
- </para>
- </section>
-
-</chapter>
- <chapter id="chap-Component_Reference-Other_components" lang="en-US">
- <title>Other components</title>
- <para>
- Incomplete
- </para>
- <section id="sect-Component_Reference-Other_components-a4jmediaOutput">
- <title>a4j:mediaOutput</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Other_components-richhotkey">
- <title>rich:hotkey</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Other_components-richinsert">
- <title>rich:insert</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Other_components-richpaint2D">
- <title>rich:paint2D</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Other_components-richgmap">
- <title>rich:gmap</title>
- <para>
- Incomplete
- </para>
- </section>
-
- <section id="sect-Component_Reference-Other_components-richvirtualEarth">
- <title>rich:virtualEarth</title>
- <para>
- Incomplete
- </para>
- </section>
-
-</chapter>
- <appendix id="appe-Component_Reference-Revision_History" lang="en-US">
- <title>Revision History</title>
- <simpara>
- <revhistory>
- <revision>
- <revnumber>1.0</revnumber>
- <date/>
- <author>
- <firstname/>
- <surname/>
- <email/>
- </author>
- <revdescription>
- <simplelist>
- <member/>
- </simplelist>
- </revdescription>
- </revision>
- </revhistory>
- </simpara>
-</appendix>
- <index/>
-</book>
+ </chapter>
+ <appendix id="appe-Component_Reference-Revision_History" lang="en-US">
+ <title>Revision History</title>
+ <simpara>
+ <revhistory>
+ <revision>
+ <revnumber>1.0</revnumber>
+ <date></date>
+ <author>
+ <firstname></firstname>
+ <surname></surname>
+ <email></email>
+ </author>
+ <revdescription>
+ <simplelist>
+ <member></member>
+ </simplelist>
+ </revdescription>
+ </revision>
+ </revhistory>
+ </simpara>
+ </appendix>
+ <index />
+ </book>
+
16 years, 8 months