JBoss Rich Faces SVN: r8918 - trunk/test-applications/jsp/src/main/webapp/CustomizePage.
by richfaces-svn-commits@lists.jboss.org
Author: mvitenkov
Date: 2008-06-05 11:50:23 -0400 (Thu, 05 Jun 2008)
New Revision: 8918
Modified:
trunk/test-applications/jsp/src/main/webapp/CustomizePage/CustomizePage.jsp
Log:
modal Panel with binding
Modified: trunk/test-applications/jsp/src/main/webapp/CustomizePage/CustomizePage.jsp
===================================================================
--- trunk/test-applications/jsp/src/main/webapp/CustomizePage/CustomizePage.jsp 2008-06-05 15:49:48 UTC (rev 8917)
+++ trunk/test-applications/jsp/src/main/webapp/CustomizePage/CustomizePage.jsp 2008-06-05 15:50:23 UTC (rev 8918)
@@ -11,48 +11,53 @@
<body>
<rich:modalPanel id="modalPanel2ID" minHeight="100" minWidth="200"
resizeable="true" keepVisualState="true" showWhenRendered="true" binding="#{modalPanel.myModalPanel}">
-
+ <h:form>
+
+ <h:commandButton actionListener="#{modalPanel.checkBinding}" value="Binding"></h:commandButton>
+ <h:outputText value="#{modalPanel.bindLabel}"/>
+
<h:outputLink
onclick="Richfaces.hideModalPanel('modalPanel2ID');return false;"
value="Close">
<f:verbatim>Close</f:verbatim>
</h:outputLink>
- <br />
- <h:form>
- <h:inputText value="#{sb.property}" id="text" />
- <rich:suggestionbox id="suggestionBoxId"
- suggestionAction="#{sb.autocomplete}" frame="below"
- value="#{sb.value}" for="text" var="result" width="500" height="500"
- fetchValue="#{result.text}" minChars="#{sb.minchars}"
- tokens="#{sb.tokens}" param="param:#{result.text}"
- eventsQueue="myEventsQueue" ajaxSingle="#{sb.ajaxSingle}"
- dir="#{sb.dir}" rendered="#{sb.rendered}">
- <h:column>
- <h:outputText value="#{result.city}" />
- </h:column>
- <h:column>
- <h:outputText value="#{result.contry}" />
- </h:column>
- <h:column>
- <h:outputText value="#{result.flag}" />
- </h:column>
+ </h:form>
+ </rich:modalPanel>
- </rich:suggestionbox>
- <br />
- <h:commandButton actionListener="#{modalPanel.checkBinding}"
- value="Binding[Modal Panel]"></h:commandButton>
- <h:outputText value="#{modalPanel.bindLabel}"></h:outputText>
- </h:form>
+ <rich:modalPanel id="mpm" width="500" height="300">
+ <f:facet name="header">
+ <h:outputText value="Modal Panel" />
+ </f:facet>
+ <f:facet name="controls">
+ <h:graphicImage value="/pics/error.gif" style="cursor:pointer"
+ onclick="Richfaces.hideModalPanel('mpm')" />
+ </f:facet>
+
+ <rich:fileUpload fileUploadListener="#{fileUpload.fileUploadListener}"
+ disabled="false" addControlLabel="Legg til fil..."
+ clearAllControlLabel="Ta bort alle" clearControlLabel="Ta bort"
+ cancelEntryControlLabel="Ta bort"
+ stopEntryControlLabel="Stoppe opplasting"
+ stopControlLabel="Stoppe opplasting"
+ uploadControlLabel="Last opp fil" listWidth="480" listHeight="230"
+ onuploadcomplete="this.disabled=false" immediateUpload="false"
+ autoclear="false">
+ <f:facet name="label">
+ <h:outputText value="{_KB}KB from {KB}KB uploaded --- {mm}:{ss}" />
+ </f:facet>
+ </rich:fileUpload>
</rich:modalPanel>
-
<h:form id="test">
<rich:inputNumberSlider></rich:inputNumberSlider>
<a onclick="Richfaces.showModalPanel('modalPanel2ID');" href="#">Show
- MP</a>
+ MP(binding)</a>
+ <br/>
+ <a onclick="Richfaces.showModalPanel('mpm');" href="#">Show
+ MP(fileUpload)</a>
</h:form>
</body>
16 years, 4 months
JBoss Rich Faces SVN: r8917 - trunk/test-applications/jsp/src/main/java/modalPanel.
by richfaces-svn-commits@lists.jboss.org
Author: mvitenkov
Date: 2008-06-05 11:49:48 -0400 (Thu, 05 Jun 2008)
New Revision: 8917
Modified:
trunk/test-applications/jsp/src/main/java/modalPanel/ModalPanel.java
Log:
styles + binding
Modified: trunk/test-applications/jsp/src/main/java/modalPanel/ModalPanel.java
===================================================================
--- trunk/test-applications/jsp/src/main/java/modalPanel/ModalPanel.java 2008-06-05 14:47:35 UTC (rev 8916)
+++ trunk/test-applications/jsp/src/main/java/modalPanel/ModalPanel.java 2008-06-05 15:49:48 UTC (rev 8917)
@@ -1,5 +1,9 @@
package modalPanel;
+import org.richfaces.component.html.HtmlModalPanel;
+import javax.faces.context.FacesContext;
+import javax.faces.event.ActionEvent;
+
public class ModalPanel {
private boolean autosized;
private boolean keepVisualState;
@@ -19,6 +23,8 @@
private String inputTextTest;
private String selectOneListboxTest;
private String visualOptions;
+ private String bindLabel;
+ private HtmlModalPanel myModalPanel;
public String getVisualOptions() {
@@ -64,8 +70,15 @@
this.shadowOpacity = "3";
this.zindex = 3;
this.showWhenRendered = false;
+ this.bindLabel = "not ready";
+ this.myModalPanel = null;
}
-
+
+ public void checkBinding(ActionEvent actionEvent){
+ FacesContext context = FacesContext.getCurrentInstance();
+ bindLabel = myModalPanel.getClientId(context);
+ }
+
public int getHeight() {
return height;
}
@@ -231,4 +244,20 @@
public void setZindex(int zindex) {
this.zindex = zindex;
}
+
+ public String getBindLabel() {
+ return bindLabel;
+ }
+
+ public void setBindLabel(String bindLabel) {
+ this.bindLabel = bindLabel;
+ }
+
+ public HtmlModalPanel getMyModalPanel() {
+ return myModalPanel;
+ }
+
+ public void setMyModalPanel(HtmlModalPanel myModalPanel) {
+ this.myModalPanel = myModalPanel;
+ }
}
16 years, 4 months
JBoss Rich Faces SVN: r8916 - in trunk/test-applications/seleniumTest/src/test/java/org/richfaces: testng and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: dsvyatobatsko
Date: 2008-06-05 10:47:35 -0400 (Thu, 05 Jun 2008)
New Revision: 8916
Modified:
trunk/test-applications/seleniumTest/src/test/java/org/richfaces/SeleniumTestBase.java
trunk/test-applications/seleniumTest/src/test/java/org/richfaces/testng/AjaxRegionTest.java
Log:
Modified: trunk/test-applications/seleniumTest/src/test/java/org/richfaces/SeleniumTestBase.java
===================================================================
--- trunk/test-applications/seleniumTest/src/test/java/org/richfaces/SeleniumTestBase.java 2008-06-05 13:59:22 UTC (rev 8915)
+++ trunk/test-applications/seleniumTest/src/test/java/org/richfaces/SeleniumTestBase.java 2008-06-05 14:47:35 UTC (rev 8916)
@@ -499,6 +499,15 @@
}
/**
+ * Clicks an ajax command and wait for ajax request completion.
+ * @param locator an element locator
+ */
+ public void clickAjaxCommandAndWait(String locator) {
+ selenium.click(locator);
+ waitForAjaxCompletion();
+ }
+
+ /**
* This method should be used for click on command controls instead of
* 'clickById' method.
*
Modified: trunk/test-applications/seleniumTest/src/test/java/org/richfaces/testng/AjaxRegionTest.java
===================================================================
--- trunk/test-applications/seleniumTest/src/test/java/org/richfaces/testng/AjaxRegionTest.java 2008-06-05 13:59:22 UTC (rev 8915)
+++ trunk/test-applications/seleniumTest/src/test/java/org/richfaces/testng/AjaxRegionTest.java 2008-06-05 14:47:35 UTC (rev 8916)
@@ -51,27 +51,24 @@
String internalElemId = parentId + "internal";
String externalElemId = parentId + "external";
- selenium.type(internalElemId, "5");
- selenium.type(externalElemId, "5");
+ type(internalElemId, "5");
+ type(externalElemId, "5");
- clickById(internalLink);
- waitForAjaxCompletion();
+ clickAjaxCommandAndWait(internalLink);
AssertValueEquals(internalElemId, "5");
AssertValueEquals(externalElemId, "0");
- selenium.type(internalElemId, "10");
- selenium.type(externalElemId, "10");
+ type(internalElemId, "10");
+ type(externalElemId, "10");
- clickById(externalLink);
- waitForAjaxCompletion();
+ clickAjaxCommandAndWait(externalLink);
AssertValueEquals(internalElemId, "10");
AssertValueEquals(externalElemId, "10");
writeStatus("verify \"selfRendered\" component's attribute");
String selfRenderedLink = parentId + "selfRenderedLink";
- clickById(selfRenderedLink);
- waitForAjaxCompletion();
+ clickAjaxCommandAndWait(selfRenderedLink);
AssertNotPresent("transientText");
writeStatus("verify \"renderRegionOnly\" component's attribute");
@@ -82,15 +79,14 @@
String renderOnlyElemId = parentId + "renderOnly";
String renderElemId = parentId + "render";
- selenium.type(renderOnlyElemId, "7");
+ type(renderOnlyElemId, "7");
- clickById(renderOnlyLink);
-
+ clickAjaxCommandAndWait(renderOnlyLink);
AssertValueEquals(renderOnlyElemId, "7");
AssertValueEquals(renderElemId, "0");
- selenium.type(renderElemId, "11");
- clickById(renderLink);
+ type(renderElemId, "11");
+ clickAjaxCommandAndWait(renderLink);
AssertValueEquals(renderOnlyElemId, "11");
AssertValueEquals(renderElemId, "11");
16 years, 4 months
JBoss Rich Faces SVN: r8915 - branches/3.1.x/ui/dropdown-menu/src/main/templates/org/richfaces.
by richfaces-svn-commits@lists.jboss.org
Author: nbelaevski
Date: 2008-06-05 09:59:22 -0400 (Thu, 05 Jun 2008)
New Revision: 8915
Modified:
branches/3.1.x/ui/dropdown-menu/src/main/templates/org/richfaces/htmlDropDownMenu.jspx
Log:
http://jira.jboss.com/jira/browse/RF-3629
Modified: branches/3.1.x/ui/dropdown-menu/src/main/templates/org/richfaces/htmlDropDownMenu.jspx
===================================================================
--- branches/3.1.x/ui/dropdown-menu/src/main/templates/org/richfaces/htmlDropDownMenu.jspx 2008-06-05 12:51:22 UTC (rev 8914)
+++ branches/3.1.x/ui/dropdown-menu/src/main/templates/org/richfaces/htmlDropDownMenu.jspx 2008-06-05 13:59:22 UTC (rev 8915)
@@ -41,7 +41,7 @@
<jsp:scriptlet>
<![CDATA[} else if(component.getFacet("label")!=null && component.getFacet("label").isRendered()) {]]>
</jsp:scriptlet>
- <span class="dr-label-text-decor rich-label-text-decor">
+ <span id="#{clientId}_span" class="dr-label-text-decor rich-label-text-decor">
<u:insertFacet name="label" />
</span>
<jsp:scriptlet>
16 years, 4 months
JBoss Rich Faces SVN: r8913 - trunk/docs/userguide/en/src/main/docbook/modules.
by richfaces-svn-commits@lists.jboss.org
Author: msorokin
Date: 2008-06-05 08:50:49 -0400 (Thu, 05 Jun 2008)
New Revision: 8913
Modified:
trunk/docs/userguide/en/src/main/docbook/modules/RFCintro.xml
Log:
http://jira.jboss.com/jira/browse/RF-2329
Rich Faces - changed to RichFaces
Modified: trunk/docs/userguide/en/src/main/docbook/modules/RFCintro.xml
===================================================================
--- trunk/docs/userguide/en/src/main/docbook/modules/RFCintro.xml 2008-06-05 12:50:31 UTC (rev 8912)
+++ trunk/docs/userguide/en/src/main/docbook/modules/RFCintro.xml 2008-06-05 12:50:49 UTC (rev 8913)
@@ -17,30 +17,30 @@
<title>Introduction</title>
-<para>Rich Faces is an open source framework that adds Ajax capability into existing JSF applications without resorting to JavaScript. </para>
+<para>RichFaces is an open source framework that adds Ajax capability into existing JSF applications without resorting to JavaScript. </para>
-<para>Rich Faces leverages JavaServer Faces framework including lifecycle, validation, conversion facilities and management of static and dynamic resources. Rich Faces components with built-in Ajax support and a highly customizable look-and-feel can be easily incorporated into JSF applications. </para>
+<para>RichFaces leverages JavaServer Faces framework including lifecycle, validation, conversion facilities and management of static and dynamic resources. RichFaces components with built-in Ajax support and a highly customizable look-and-feel can be easily incorporated into JSF applications. </para>
-<para>Rich Faces allows to:</para>
+<para>RichFaces allows to:</para>
<itemizedlist>
<listitem>
-<para>Intensify the whole set of JSF benefits while working with Ajax. Rich Faces is fully integrated into the JSF lifecycle. While other frameworks only give you access to the managed bean facility, Rich Faces advantages the action and value change listeners, as well as invokes server-side validators and converters during the Ajax request-response cycle. </para></listitem>
+<para>Intensify the whole set of JSF benefits while working with Ajax. RichFaces is fully integrated into the JSF lifecycle. While other frameworks only give you access to the managed bean facility, RichFaces advantages the action and value change listeners, as well as invokes server-side validators and converters during the Ajax request-response cycle. </para></listitem>
-<listitem><para>Add Ajax capability to the existing JSF applications. Framework provides two components libraries (Core Ajax and UI). The Core library sets Ajax functionality into existing pages, so there is no need to write any JavaScript code or to replace existing components with new Ajax ones. Rich Faces enables page-wide Ajax support instead of the traditional component-wide support and it gives the opportunity to define the event on the page. An event invokes an Ajax request and areas of the page which become synchronized with the JSF Component Tree after changing the data on the server by Ajax request in accordance with events fired on the client. </para></listitem>
+<listitem><para>Add Ajax capability to the existing JSF applications. Framework provides two components libraries (Core Ajax and UI). The Core library sets Ajax functionality into existing pages, so there is no need to write any JavaScript code or to replace existing components with new Ajax ones. RichFaces enables page-wide Ajax support instead of the traditional component-wide support and it gives the opportunity to define the event on the page. An event invokes an Ajax request and areas of the page which become synchronized with the JSF Component Tree after changing the data on the server by Ajax request in accordance with events fired on the client. </para></listitem>
-<listitem><para>Create quickly complex View basing on out of the box components. Rich Faces UI library contains components for adding rich user interface features to JSF applications. It extends the Rich Faces framework to include a large (and growing) set of powerful rich Ajax-enabled components that come with extensive skins support. In addition, RichFaces components are designed to be used seamlessly with other 3d-party component libraries on the same page, so you have more options for developing your applications.</para></listitem>
+<listitem><para>Create quickly complex View basing on out of the box components. RichFaces UI library contains components for adding rich user interface features to JSF applications. It extends the RichFaces framework to include a large (and growing) set of powerful rich Ajax-enabled components that come with extensive skins support. In addition, RichFaces components are designed to be used seamlessly with other 3d-party component libraries on the same page, so you have more options for developing your applications.</para></listitem>
-<listitem><para>Write your own custom rich components with built-in Ajax support. We're always working on improvement of Component Development Kit (CDK) that was used for Rich Faces UI library creation. The CDK includes a code-generation facility and a templating facility using a JSP-like syntax. These capabilities help to avoid a routine process of a component creation. The component factory works like a well-oiled machine allowing the creation of first-class rich components with built-in Ajax functionality even more easily than the creation of simpler components by means of the traditional coding approach. </para></listitem>
+<listitem><para>Write your own custom rich components with built-in Ajax support. We're always working on improvement of Component Development Kit (CDK) that was used for RichFaces UI library creation. The CDK includes a code-generation facility and a templating facility using a JSP-like syntax. These capabilities help to avoid a routine process of a component creation. The component factory works like a well-oiled machine allowing the creation of first-class rich components with built-in Ajax functionality even more easily than the creation of simpler components by means of the traditional coding approach. </para></listitem>
-<listitem><para>Package resources with application Java classes. In addition to its core, Ajax functionality of Rich Faces provides an advanced support for the different resources management: pictures, JavaScript code, and CSS stylesheets. The resource framework makes possible to pack easily these resources into Jar files along with the code of your custom components.</para></listitem>
+<listitem><para>Package resources with application Java classes. In addition to its core, Ajax functionality of RichFaces provides an advanced support for the different resources management: pictures, JavaScript code, and CSS stylesheets. The resource framework makes possible to pack easily these resources into Jar files along with the code of your custom components.</para></listitem>
<listitem><para>Easily generate binary resources on-the-fly. Resource framework can generate images, sounds, Excel spreadsheets etc.. on-the-fly so that it becomes for example possible to create images using the familiar approach of the "Java Graphics2D" library.</para></listitem>
-<listitem><para>Create a modern rich user interface look-and-feel with skins-based technology. Rich Faces provides a skinnability feature that allows easily define and manage different color schemes and other parameters of the UI with the help of named skin parameters. Hence, it is possible to access the skin parameters from JSP code and the Java code (e.g. to adjust generated on-the-fly images based on the text parts of the UI). RichFaces comes with a number of predefined skins to get you started, but you can also easily create your own custom skins. </para></listitem>
+<listitem><para>Create a modern rich user interface look-and-feel with skins-based technology. RichFaces provides a skinnability feature that allows easily define and manage different color schemes and other parameters of the UI with the help of named skin parameters. Hence, it is possible to access the skin parameters from JSP code and the Java code (e.g. to adjust generated on-the-fly images based on the text parts of the UI). RichFaces comes with a number of predefined skins to get you started, but you can also easily create your own custom skins. </para></listitem>
<listitem><para>Test and create the components, actions, listeners, and pages at the same time. An automated testing facility is in our roadmap for the near future. This facility will generate test cases for your component as soon as you develop it. The testing framework will not just test the components, but also any other server-side or client-side functionality including JavaScript code. What is more, it will do all of this without deploying the test application into the Servlet container. </para></listitem>
</itemizedlist>
-<para>Rich Faces UI components come ready to use out-of-the-box, so developers save their time and immediately gain the advantage of the mentioned above features in Web applications creation. As a result, usage experience can be faster and easily obtained.</para>
+<para>RichFaces UI components come ready to use out-of-the-box, so developers save their time and immediately gain the advantage of the mentioned above features in Web applications creation. As a result, usage experience can be faster and easily obtained.</para>
</chapter>
\ No newline at end of file
16 years, 4 months
JBoss Rich Faces SVN: r8912 - trunk/docs/userguide/en/src/main/docbook/modules.
by richfaces-svn-commits@lists.jboss.org
Author: msorokin
Date: 2008-06-05 08:50:31 -0400 (Thu, 05 Jun 2008)
New Revision: 8912
Modified:
trunk/docs/userguide/en/src/main/docbook/modules/AUGWADParams.xml
Log:
http://jira.jboss.com/jira/browse/RF-2329
Rich Faces - changed to RichFaces
Modified: trunk/docs/userguide/en/src/main/docbook/modules/AUGWADParams.xml
===================================================================
--- trunk/docs/userguide/en/src/main/docbook/modules/AUGWADParams.xml 2008-06-05 12:41:09 UTC (rev 8911)
+++ trunk/docs/userguide/en/src/main/docbook/modules/AUGWADParams.xml 2008-06-05 12:50:31 UTC (rev 8912)
@@ -135,7 +135,7 @@
<entry>none</entry>
<entry>
This variable just defines prefix which is added to URIs of generated resources.
- This prefix designed to handle Rich Faces generated resources requests
+ This prefix designed to handle RichFaces generated resources requests
</entry>
</row>
16 years, 4 months
JBoss Rich Faces SVN: r8911 - trunk/docs/userguide/en/src/main/docbook/included.
by richfaces-svn-commits@lists.jboss.org
Author: atsebro
Date: 2008-06-05 08:41:09 -0400 (Thu, 05 Jun 2008)
New Revision: 8911
Modified:
trunk/docs/userguide/en/src/main/docbook/included/toolTip.xml
Log:
RF-3550--<rich:toolTip> component "Details of usage" section rewriting
Modified: trunk/docs/userguide/en/src/main/docbook/included/toolTip.xml
===================================================================
--- trunk/docs/userguide/en/src/main/docbook/included/toolTip.xml 2008-06-05 12:24:31 UTC (rev 8910)
+++ trunk/docs/userguide/en/src/main/docbook/included/toolTip.xml 2008-06-05 12:41:09 UTC (rev 8911)
@@ -41,8 +41,8 @@
</tgroup>
</table>
-<section>
- <title id="tab_ccpt">Creating the Component with a Page Tag</title>
+ <section id="tab_ccpt">
+ <title>Creating the Component with a Page Tag</title>
<para>To create the simplest variant of <emphasis role="bold"><property><rich:toolTip></property></emphasis>
component on a page, use the following syntax:</para>
@@ -141,111 +141,97 @@
...
]]></programlisting>
<para>
- The component works properly in client and Ajax modes.
- For Ajax mode there is possibility to define a facet "defaultContent", which provides default tooltip content to be displayed, while main content is loading into the <property>tooltip</property> (see the example below).
+ The <emphasis><property>"mode"</property></emphasis> attribute is provided you to control the way of data loading to <property>tooltip</property>.
+ The component works properly in client and Ajax modes.
+ In client mode <property>toolTip</property> content is rendered once on the server and could be rerendered only via external submit.
+ In Ajax mode <property>toolTip</property> content is requested from server for every activation.
+ For Ajax mode there is possibility to define a facet "defaultContent", which provides default <property>tooltip</property> content to be displayed, while main content is loading into the <property>tooltip</property> (see the example below).
</para>
<para>
<emphasis role="bold">Example:</emphasis>
- </para>
- <programlisting role="XML"><![CDATA[...
+ </para>
+ <programlisting role="XML"><![CDATA[...
<h:commandLink value="Simple Link" id="link">
<rich:toolTip followMouse="true" direction="top-right" mode="ajax" value="#{bean.toolTipContent}" horizontalOffset="5"
verticalOffset="5" layout="block">
<f:facet name="defaultContent">
- <f:verbatim>DEFAULT toolTip CONTENT</f:verbatim>
+ <f:verbatim>DEFAULT TOOLTIP CONTENT</f:verbatim>
</f:facet>
</rich:toolTip>
</h:commandLink>
...
]]></programlisting>
-
-<para>
-This is the result:
-</para>
- <figure>
- <title><emphasis role="bold"><property><rich:toolTip></property></emphasis> component with default content</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/toolTip2.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-<para>
-And after <property>toolTip</property> loaded it is changed to next one:
-</para>
- <figure>
- <title><emphasis role="bold"><property><rich:toolTip></property></emphasis> component with loaded content</title>
- <mediaobject>
- <imageobject>
- <imagedata fileref="images/toolTip3.png"/>
- </imageobject>
- </mediaobject>
- </figure>
-
-<para>
-By default, <property>toolTip</property> appears smart positioned. But as you can see from the previous example, you
- can define an appearance direction via the corresponding attribute <emphasis><property>"direction"</property></emphasis>. And also it's possible to define vertical and horizontal
-offsets relatively to a mouse position.
-</para>
-<para>
-<property>toolTip</property> appears attached to the corner dependent on the <emphasis><property>"direction"</property></emphasis> attribute. By default it is positioned bottom-right.
-<property>toolTip</property> activation occurs after a defined event (default=mouseover) on the parent component takes into consideration
-the "delay" attribute (default=0) or after calling JS API function show(). <property>toolTip</property> deactivation occurs after mouseout event on the parent component (excepting the situation when the mouse is hovered onto the <property>toolTip</property> itself) or after calling JS API function hide().
-</para>
-
-
-
-
-
-<para>
-The <emphasis><property>"mode"</property></emphasis> attribute is provided you to control the way of data loading to <property>toolTip</property>. It has following values:
- <itemizedlist>
- <listitem><para>Client</para></listitem>
- <listitem><para>Ajax</para></listitem>
- </itemizedlist>
-</para>
-<para>
-In a client mode, <property>toolTip</property> content is rendered once on the server and could be reRendered only via external submit.
-In an Ajax mode, <property>toolTip</property> content is requested from server every activation.
-</para>
-<para>
-Disabled <property>toolTip</property> is rendered to a page as usual but JS that responds for its activation is
-disabled until enable() is called.
-</para>
-<para>
-Moreover, to add some JavaScript effects, client events defined on it are used:
-</para>
-<para>
- Standart:
- <itemizedlist>
- <listitem><para>onclick</para></listitem>
- <listitem><para>ondblclick</para></listitem>
- <listitem><para>onmouseout</para></listitem>
- <listitem><para>onmousemove</para></listitem>
- <listitem><para>onmouseover</para></listitem>
- </itemizedlist>
-</para>
-<para>
- Special:
- <itemizedlist>
- <listitem><para>onshow - Called after the toolTip is called (some element hovered) but before its request
- </para></listitem>
- <listitem><para>oncomplete - Called just after the toolTip is shown
- </para></listitem>
- <listitem><para>onhide - Called after the toolTip is hidden
- </para></listitem>
- </itemizedlist>
-</para>
+ <para>
+ This is the result:
+ </para>
+
+ <figure>
+ <title><emphasis role="bold"><property><rich:toolTip></property></emphasis> component with default content</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/toolTip2.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ And after <property>toolTip</property> loaded it is changed to next one:
+ </para>
+
+ <figure>
+ <title><emphasis role="bold"><property><rich:toolTip></property></emphasis> component with loaded content</title>
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/toolTip3.png"/>
+ </imageobject>
+ </mediaobject>
+ </figure>
+
+ <para>
+ <property>toolTip</property> appears attached to the corner dependent on the <emphasis><property>"direction"</property></emphasis> attribute.
+ By default it is positioned bottom-right.
+ <property>toolTip</property> activation occurs after an event, defined on the parent component, takes into consideration the "delay" attribute or after calling JS API function <emphasis>show()</emphasis>.
+ <property>toolTip</property> deactivation occurs after <emphasis>mouseout</emphasis> event on the parent component (excepting the situation when the mouse is hovered onto the <property>tooltip</property> itself) or after calling JS API function <emphasis>hide()</emphasis>.
+ </para>
+ <para>
+ By default, <property>tooltip</property> appears smart positioned. But as you can see from the previous example, you
+ can define an appearance direction via the corresponding attribute <emphasis><property>"direction"</property></emphasis>.
+ And also it's possible to define vertical and horizontal offsets relatively to a mouse position.
+ </para>
+ <para>
+ Disabled <property>tooltip</property> is rendered to a page as usual but JS that responds for its activation is disabled until <emphasis>enable()</emphasis> is called.
+ </para>
+ <para>
+ Moreover, to add some JavaScript effects, client events defined on it are used:
+ </para>
+ <para>
+ Standart:
+ <itemizedlist>
+ <listitem><para>onclick</para></listitem>
+ <listitem><para>ondblclick</para></listitem>
+ <listitem><para>onmouseout</para></listitem>
+ <listitem><para>onmousemove</para></listitem>
+ <listitem><para>onmouseover</para></listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ Special:
+ <itemizedlist>
+ <listitem><para>onshow - Called after the tooltip is called (some element hovered) but before its request</para></listitem>
+ <listitem><para>oncomplete - Called just after the tooltip is shown</para></listitem>
+ <listitem><para>onhide - Called after the tooltip is hidden</para></listitem>
+ </itemizedlist>
+ </para>
</section>
-<section>
+ <section id="tab_jsapi">
+ <title>JavaScript API</title>
+ <table>
<title>JavaScript API</title>
- <table>
- <title>JavaScript API</title>
<tgroup cols="2">
<thead>
- <row>
+ <row>every acti
<entry>Function</entry>
<entry>Description</entry>
16 years, 4 months
JBoss Rich Faces SVN: r8910 - trunk/ui/dataTable/src/main/java/org/richfaces/component.
by richfaces-svn-commits@lists.jboss.org
Author: konstantin.mishin
Date: 2008-06-05 08:24:31 -0400 (Thu, 05 Jun 2008)
New Revision: 8910
Modified:
trunk/ui/dataTable/src/main/java/org/richfaces/component/UIDataTable.java
Log:
RF-3067
Modified: trunk/ui/dataTable/src/main/java/org/richfaces/component/UIDataTable.java
===================================================================
--- trunk/ui/dataTable/src/main/java/org/richfaces/component/UIDataTable.java 2008-06-05 12:23:40 UTC (rev 8909)
+++ trunk/ui/dataTable/src/main/java/org/richfaces/component/UIDataTable.java 2008-06-05 12:24:31 UTC (rev 8910)
@@ -38,6 +38,7 @@
import org.ajax4jsf.component.SequenceDataAdaptor;
import org.ajax4jsf.model.ExtendedDataModel;
+import org.richfaces.model.AbstractModifiableModel;
import org.richfaces.model.FilterField;
import org.richfaces.model.ModifiableModel;
import org.richfaces.model.SortField2;
@@ -121,7 +122,14 @@
setFilterFields(filterFields);
setSortFields(sortFields);
ExtendedDataModel dataModel = super.createDataModel();
- return new ModifiableModel(dataModel, getVar(), getFilterFields(), getSortFields());
+ AbstractModifiableModel modifiableModel = null;
+ if (dataModel instanceof AbstractModifiableModel) {
+ modifiableModel = (AbstractModifiableModel)dataModel;
+ } else {
+ modifiableModel = new ModifiableModel(dataModel, getVar());
+ }
+ modifiableModel.modify(getFilterFields(), getSortFields());
+ return modifiableModel;
}
@SuppressWarnings("unchecked")
16 years, 4 months
JBoss Rich Faces SVN: r8909 - in trunk: framework/impl/src/main/java/org/richfaces/model/impl/expressive and 2 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: konstantin.mishin
Date: 2008-06-05 08:23:40 -0400 (Thu, 05 Jun 2008)
New Revision: 8909
Added:
trunk/framework/impl/src/main/java/org/richfaces/model/AbstractModifiableModel.java
Modified:
trunk/framework/impl/src/main/java/org/richfaces/model/ModifiableModel.java
trunk/framework/impl/src/main/java/org/richfaces/model/impl/expressive/JavaBeanWrapper.java
trunk/framework/test/src/test/java/org/richfaces/model/ModifiableModelTest.java
trunk/ui/dataTable/src/test/java/org/richfaces/renderkit/SortableHeaderRenderingTest.java
Log:
RF-3012
Added: trunk/framework/impl/src/main/java/org/richfaces/model/AbstractModifiableModel.java
===================================================================
--- trunk/framework/impl/src/main/java/org/richfaces/model/AbstractModifiableModel.java (rev 0)
+++ trunk/framework/impl/src/main/java/org/richfaces/model/AbstractModifiableModel.java 2008-06-05 12:23:40 UTC (rev 8909)
@@ -0,0 +1,17 @@
+/**
+ *
+ */
+package org.richfaces.model;
+
+import java.util.List;
+
+import org.ajax4jsf.model.ExtendedDataModel;
+
+/**
+ * @author Konstantin Mishin
+ *
+ */
+public abstract class AbstractModifiableModel extends ExtendedDataModel{
+
+ public abstract void modify(List<FilterField> filterFields, List<SortField2> sortFields);
+}
Modified: trunk/framework/impl/src/main/java/org/richfaces/model/ModifiableModel.java
===================================================================
--- trunk/framework/impl/src/main/java/org/richfaces/model/ModifiableModel.java 2008-06-05 12:22:07 UTC (rev 8908)
+++ trunk/framework/impl/src/main/java/org/richfaces/model/ModifiableModel.java 2008-06-05 12:23:40 UTC (rev 8909)
@@ -7,6 +7,7 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Map;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModelListener;
@@ -27,113 +28,162 @@
* @author Konstantin Mishin
*
*/
-public class ModifiableModel extends ExtendedDataModel{
+public class ModifiableModel extends AbstractModifiableModel{
+ private class RowKeyWrapperFactory extends ObjectWrapperFactory {
+
+ private class ExtendedJavaBeanWrapper extends JavaBeanWrapper {
+
+ private Object key;
+
+ public ExtendedJavaBeanWrapper(Object key, Object o, Map<String, Object> props) {
+ super(o, props);
+ this.key = key;
+ }
+
+ public Object getKey() {
+ return key;
+ }
+ }
+
+ public RowKeyWrapperFactory(FacesContext context, String var,
+ List<? extends Field> sortOrder) {
+ super(context, var, sortOrder);
+ }
+
+ @Override
+ public JavaBeanWrapper wrapObject(Object key) {
+ originalModel.setRowKey(key);
+ JavaBeanWrapper wrapObject = super.wrapObject(originalModel.getRowData());
+ return new ExtendedJavaBeanWrapper(key, wrapObject.getWrappedObject(), wrapObject.getProperties());
+ }
+
+ @Override
+ public Object unwrapObject(Object wrapper) {
+ return ((ExtendedJavaBeanWrapper) wrapper).getKey();
+ }
+ }
+
private static final Log log = LogFactory.getLog(ModifiableModel.class);
+
+ private List<Object> rowKeys;
- private ExtendedDataModel delegate;
-
private ExtendedDataModel originalModel;
- private ExtendedDataModel modifiedModel;
-
private String var;
- private List<FilterField> filterFields;
- private List<SortField2> sortFields;
-
- public ModifiableModel(ExtendedDataModel originalModel, String var,
- List<FilterField> filterFields, List<SortField2> sortFields) {
+ public ModifiableModel(ExtendedDataModel originalModel, String var) {
this.originalModel = originalModel;
- delegate = originalModel;
this.var = var;
- this.filterFields = filterFields;
- this.sortFields = sortFields;
}
+ @Override
public void addDataModelListener(DataModelListener listener) {
originalModel.addDataModelListener(listener);
}
+ @Override
public DataModelListener[] getDataModelListeners() {
return originalModel.getDataModelListeners();
}
- public int getRowCount() {
- return delegate.getRowCount();
+ @Override
+ public Object getRowKey() {
+ return rowKeys.indexOf(originalModel.getRowKey());
}
- public Object getRowData() {
- return delegate.getRowData();
+ @Override
+ public void setRowKey(Object key) {
+ Object originalKey = null;
+ if(key != null){
+ int i = (Integer)key;
+ if (i >= 0 && i < rowKeys.size()) {
+ originalKey = rowKeys.get(i);
+ }
+ }
+ originalModel.setRowKey(originalKey);
}
- public int getRowIndex() {
- return delegate.getRowIndex();
+ @Override
+ public void walk(FacesContext context, DataVisitor visitor, Range range,
+ Object argument) throws IOException {
+ final SequenceRange seqRange = (SequenceRange) range;
+ int rows = seqRange.getRows();
+ int rowCount = rowKeys !=null ? rowKeys.size() : -1;
+ int currentRow = seqRange.getFirstRow();
+ if(rows > 0){
+ rows += currentRow;
+ rows = Math.min(rows, rowCount);
+ } else {
+ rows = rowCount;
+ }
+ for (; currentRow < rows; currentRow++) {
+ visitor.process(context, rowKeys.get(currentRow), argument);
+ }
}
- public Object getRowKey() {
- return delegate.getRowKey();
+ @Override
+ public int getRowCount() {
+ if (rowKeys == null) {
+ return -1;
+ } else {
+ return rowKeys.size();
+ }
}
- public SerializableDataModel getSerializableModel(Range range) {
- return delegate.getSerializableModel(range);
+ @Override
+ public Object getRowData() {
+ return originalModel.getRowData();
}
+ @Override
+ public int getRowIndex() {
+ return rowKeys.indexOf(originalModel.getRowKey());
+ }
+
+ @Override
public Object getWrappedData() {
- return delegate.getWrappedData();
+ return originalModel.getWrappedData();
}
+ @Override
public boolean isRowAvailable() {
- return delegate.isRowAvailable();
+ return originalModel.isRowAvailable();
}
- public void removeDataModelListener(DataModelListener listener) {
- delegate.removeDataModelListener(listener);
- }
-
+ @Override
public void setRowIndex(int rowIndex) {
- delegate.setRowIndex(rowIndex);
+ Object originalKey = null;
+ if (rowIndex >= 0 && rowIndex < rowKeys.size()) {
+ originalKey = rowKeys.get(rowIndex);
+ }
+ originalModel.setRowKey(originalKey);
}
- public void setRowKey(Object key) {
- delegate.setRowKey(key);
- }
-
+ @Override
public void setWrappedData(Object data) {
- delegate.setWrappedData(data);
+ originalModel.setWrappedData(data);
}
-
- public void walk(FacesContext context, DataVisitor visitor, Range range,
- Object argument) throws IOException {
-
- if (shouldSort() || shouldFilter()) {
- if (modifiedModel == null) {
- modifiedModel = new ListSequenceDataModel(prepareCollection());
- }
- delegate = modifiedModel;
- } else {
- delegate = originalModel;
- }
-
- delegate.walk(context, visitor, range, argument);
- }
- private boolean shouldSort() {
- return sortFields != null && !sortFields.isEmpty();
+ @Override
+ public SerializableDataModel getSerializableModel(Range range) {
+ return originalModel.getSerializableModel(range);
}
-
- private boolean shouldFilter() {
- return filterFields != null && !filterFields.isEmpty();
+
+ @Override
+ public void removeDataModelListener(DataModelListener listener) {
+ originalModel.removeDataModelListener(listener);
}
-
- private List<?> prepareCollection() {
+
+
+ @Override
+ public void modify(List<FilterField> filterFields, List<SortField2> sortFields) {
int rowCount = originalModel.getRowCount();
- final List<Object> collection;
if (rowCount > 0) {
- collection = new ArrayList<Object>(rowCount);
+ rowKeys = new ArrayList<Object>(rowCount);
} else {
- collection = new ArrayList<Object>();
+ rowKeys = new ArrayList<Object>();
}
FacesContext context = FacesContext.getCurrentInstance();
@@ -144,7 +194,7 @@
Object argument) throws IOException {
originalModel.setRowKey(rowKey);
if (originalModel.isRowAvailable()) {
- collection.add(originalModel.getRowData());
+ rowKeys.add(rowKey);
}
}
}, new SequenceRange(0, -1),
@@ -152,34 +202,40 @@
} catch (IOException e) {
log.error(e.getMessage(), e);
}
-
- List<Object> modifedcollection = collection;
-
- if (shouldFilter()) {
+
+ filter(filterFields);
+ sort(sortFields);
+
+ }
+
+ private List<Object> filter(List<FilterField> filterFields) {
+ if (filterFields != null && !filterFields.isEmpty()) {
+ FacesContext context = FacesContext.getCurrentInstance();
List <Object> filteredCollection = new ArrayList<Object>();
- ObjectWrapperFactory wrapperFactory = new ObjectWrapperFactory(
- context, var, filterFields);
+ ObjectWrapperFactory wrapperFactory = new RowKeyWrapperFactory(context, var, filterFields);
WrappedBeanFilter wrappedBeanFilter = new WrappedBeanFilter(filterFields);
- wrapperFactory.wrapList(modifedcollection);
- for (Object object : modifedcollection) {
+ wrapperFactory.wrapList(rowKeys);
+ for (Object object : rowKeys) {
if(wrappedBeanFilter.accept((JavaBeanWrapper)object)) {
filteredCollection.add(object);
}
}
- modifedcollection = filteredCollection;
- wrapperFactory.unwrapList(modifedcollection);
+ rowKeys = filteredCollection;
+ wrapperFactory.unwrapList(rowKeys);
}
+ return rowKeys;
+ }
- if (shouldSort()) {
- ObjectWrapperFactory wrapperFactory = new ObjectWrapperFactory(
+ private void sort(List<SortField2> sortFields) {
+ if (sortFields != null && !sortFields.isEmpty()) {
+ FacesContext context = FacesContext.getCurrentInstance();
+ ObjectWrapperFactory wrapperFactory = new RowKeyWrapperFactory(
context, var, sortFields);
WrappedBeanComparator2 wrappedBeanComparator = new WrappedBeanComparator2(
sortFields);
- wrapperFactory.wrapList(modifedcollection);
- Collections.sort(modifedcollection, wrappedBeanComparator);
- wrapperFactory.unwrapList(modifedcollection);
+ wrapperFactory.wrapList(rowKeys);
+ Collections.sort(rowKeys, wrappedBeanComparator);
+ wrapperFactory.unwrapList(rowKeys);
}
- return modifedcollection;
-
}
}
Modified: trunk/framework/impl/src/main/java/org/richfaces/model/impl/expressive/JavaBeanWrapper.java
===================================================================
--- trunk/framework/impl/src/main/java/org/richfaces/model/impl/expressive/JavaBeanWrapper.java 2008-06-05 12:22:07 UTC (rev 8908)
+++ trunk/framework/impl/src/main/java/org/richfaces/model/impl/expressive/JavaBeanWrapper.java 2008-06-05 12:23:40 UTC (rev 8909)
@@ -40,6 +40,10 @@
return properties.get(expression);
}
+ public Map<String, Object> getProperties() {
+ return properties;
+ }
+
public Object getWrappedObject() {
return wrappedObject;
}
Modified: trunk/framework/test/src/test/java/org/richfaces/model/ModifiableModelTest.java
===================================================================
--- trunk/framework/test/src/test/java/org/richfaces/model/ModifiableModelTest.java 2008-06-05 12:22:07 UTC (rev 8908)
+++ trunk/framework/test/src/test/java/org/richfaces/model/ModifiableModelTest.java 2008-06-05 12:23:40 UTC (rev 8909)
@@ -46,7 +46,8 @@
originalModel = new MockDataModel();
filterFields = new LinkedList<FilterField>();
sortFields = new LinkedList<SortField2>();
- model = new ModifiableModel(originalModel, var, filterFields, sortFields);
+ model = new ModifiableModel(originalModel, var);
+ model.modify(filterFields, sortFields);
}
/* (non-Javadoc)
@@ -144,7 +145,7 @@
* Test method for {@link org.richfaces.model.ModifiableModel#ModifiableModel(org.ajax4jsf.model.ExtendedDataModel, java.lang.String, java.util.List, java.util.List)}.
*/
public final void testModifiableModel() {
- ModifiableModel modifiableModel = new ModifiableModel(originalModel, var, filterFields, sortFields);;
+ ModifiableModel modifiableModel = new ModifiableModel(originalModel, var);;
assertNotNull(modifiableModel);
}
Modified: trunk/ui/dataTable/src/test/java/org/richfaces/renderkit/SortableHeaderRenderingTest.java
===================================================================
--- trunk/ui/dataTable/src/test/java/org/richfaces/renderkit/SortableHeaderRenderingTest.java 2008-06-05 12:22:07 UTC (rev 8908)
+++ trunk/ui/dataTable/src/test/java/org/richfaces/renderkit/SortableHeaderRenderingTest.java 2008-06-05 12:23:40 UTC (rev 8909)
@@ -61,6 +61,8 @@
javaScripts.add("scripts/utils.js");
}
+ ListDataModel model;
+
private UIDataTable dataTable;
private UIColumn column1;
@@ -98,7 +100,8 @@
for (int i = 0; i < ROWS_COUNT; i++) {
list.add(new Date((long) Math.random()));
}
- dataTable.setValue(new ListDataModel(list));
+ model = new ListDataModel(list);
+ dataTable.setValue(model);
dataTable.setVar("var");
column1 = (UIColumn) application.createComponent("org.richfaces.Column");
@@ -134,6 +137,7 @@
@Override
public void tearDown() throws Exception {
+ model = null;
form = null;
column1 = null;
column2 = null;
@@ -313,7 +317,7 @@
@Override
public Object getValue(ELContext context) {
- return ((Date)dataTable.getRowData()).getTime();
+ return ((Date)model.getRowData()).getTime();
}
@Override
@@ -353,7 +357,7 @@
@Override
public Object getValue(ELContext context) {
- return ((Date)dataTable.getRowData()).getTimezoneOffset();
+ return ((Date)model.getRowData()).getTimezoneOffset();
}
}
16 years, 4 months