Author: vkorluzhenko
Date: 2007-10-16 11:24:13 -0400 (Tue, 16 Oct 2007)
New Revision: 3399
Modified:
trunk/docs/userguide/en/src/main/docbook/included/jQuery.desc.xml
trunk/docs/userguide/en/src/main/docbook/included/jQuery.xml
Log:
http://jira.jboss.com/jira/browse/RF-1123 -added description
Modified: trunk/docs/userguide/en/src/main/docbook/included/jQuery.desc.xml
===================================================================
--- trunk/docs/userguide/en/src/main/docbook/included/jQuery.desc.xml 2007-10-16 15:00:44
UTC (rev 3398)
+++ trunk/docs/userguide/en/src/main/docbook/included/jQuery.desc.xml 2007-10-16 15:24:13
UTC (rev 3399)
@@ -7,23 +7,22 @@
</sectioninfo>
<section>
<title>Description</title>
-
+ <para>The <emphasis role="bold">
+ <property><rich:jQuery></property>
+ </emphasis> allows to apply styles and behaviour to the DOM
object.</para>
- <mediaobject>
+ <!--mediaobject>
<imageobject>
<imagedata fileref="images/jQuery.png"/>
</imageobject>
- </mediaobject>
+ </mediaobject-->
</section>
<section>
<title>Key Features</title>
- <!--itemizedlist>
- <listitem>Highly customizable look and feel</listitem>
- <listitem>Popup representation</listitem>
- <listitem>Disablement support</listitem>
- <listitem>Smart and user-defined positioning</listitem>
- <listitem>Cells customization</listitem>
- <listitem>Macro substitution based on tool bars
customization</listitem>
- </itemizedlist-->
+ <itemizedlist>
+ <listitem>No developer JavaScript code needed to use the component on a
page</listitem>
+ <listitem>Presents jQuery JavaScript framework
functionality</listitem>
+ <listitem>Works without conflicts with prototype.js
library</listitem>
+ </itemizedlist>
</section>
</section>
Modified: trunk/docs/userguide/en/src/main/docbook/included/jQuery.xml
===================================================================
--- trunk/docs/userguide/en/src/main/docbook/included/jQuery.xml 2007-10-16 15:00:44 UTC
(rev 3398)
+++ trunk/docs/userguide/en/src/main/docbook/included/jQuery.xml 2007-10-16 15:24:13 UTC
(rev 3399)
@@ -57,13 +57,12 @@
<para>To create the simplest variant on a page use the following
syntax:</para>
-
<para>
<emphasis role="bold">Example:</emphasis>
</para>
- <!--programlisting role="XML"><![CDATA[...
- <rich:jQuery name="makeFat" timing="onJScall"
query="stop().animate({width:param.ewidth})" />
-...]]></programlisting-->
+ <programlisting role="XML"><![CDATA[...
+ <rich:jQuery selector="#customList tr:odd" timing="onload"
query="addClass(odd)" />
+...]]></programlisting>
</section>
<section>
@@ -81,5 +80,265 @@
<section>
<title>Details of Usage</title>
+ <para><emphasis role="bold">
+ <property><rich:jQuery></property>
+ </emphasis> can be used in two major modes:</para>
+ <itemizedlist>
+ <listitem>as a one-time query applied immediately or on document ready
event</listitem>
+ <listitem>as a JavaScript function that can be invoked from the JavaScript
code</listitem>
+ </itemizedlist>
+ <para>The mode is chosen with <emphasis>
+ <property>"timing"</property>
+ </emphasis> attribute that has following options:</para>
+ <itemizedlist>
+ <listitem>immediate - execution a query immediately</listitem>
+ <listitem>onload - execution a query when a document is
loaded</listitem>
+ <listitem>onJScall - execution a query by invoked JavaScript function defined
with the <emphasis>
+ <property>"name"</property>
+ </emphasis> attribute</listitem>
+ </itemizedlist>
+ <para>Definition the <emphasis>
+ <property>"name"</property>
+ </emphasis> attribute is mandatory when the value of <emphasis>
+ <property>"timing"</property>
+ </emphasis> attribute is
<property>"onJScall"</property>. If the<emphasis>
+ <property>"name"</property>
+ </emphasis> attribute is defined when <emphasis>
+ <property>"timing"</property>
+ </emphasis> value equals to
<property>"immediate"</property> or
+ <property>"onload"</property>, the query is applied
according to this
+ value, but you still have an opportunity to invoke it by function
name.</para>
+ <para>The <emphasis>
+ <property>"selector"</property>
+ </emphasis> attribute define an object or a list of objects. The query is
defined with the <emphasis>
+ <property>"query"</property>
+ </emphasis>attribute.</para>
+ <para>There is an example how to highlight odd rows in a table:</para>
+ <para>
+ <emphasis role="bold">Example:</emphasis>
+ </para>
+ <programlisting role="XML"><![CDATA[...
+ <style>
+ .odd {
+ background-color: #FFC;
+ }
+ </style>
+ ...
+
+ <rich:table id="customList" ...>
+ ...
+ </rich:table>
+ ...
+ <rich:jQuery selector="#customList tr:odd" timing="onload"
query="addClass(odd)" />
+...]]></programlisting>
+ <para>The <emphasis>
+ <property>"selector"</property>
+ </emphasis> attribute uses defined by w3c consortium syntax for CSS rule
<ulink
+
url="http://www.w3.org/TR/REC-CSS2/selector.html">selector&l... with
some jQuery
+ extensions. </para>
+ <para>Those are typical examples of using selector in the <emphasis
role="bold">
+ <property><rich:jQuery></property>
+ </emphasis> component.</para>
+
+ <table>
+ <title>Examples of using selector</title>
+
+ <tgroup cols="2">
+ <thead>
+ <row>
+ <entry>Selector</entry>
+
+ <entry>Comment</entry>
+ </row>
+ </thead>
+
+ <tbody>
+
+ <row>
+ <entry>"p[a]"</entry>
+ <entry>In a document find all "p" tags with
"a" tag
+ inside</entry>
+ </row>
+
+ <row>
+ <entry>"ul/li"</entry>
+ <entry>All "li" elements of unordered
"ul" lists
+ </entry>
+ </row>
+
+ <row>
+ <entry>"p.foo[a]"</entry>
+ <entry>All "p" tags with "foo"
class and inserted
+ "a" tag </entry>
+ </row>
+
+ <row>
+ <entry>"input[@name=bar]"</entry>
+ <entry>All "input" tags with "name"
attribute which
+ value is "bar"</entry>
+ </row>
+
+ <row>
+ <entry>"input[@type=radio][@checked]"</entry>
+ <entry>Find all "input" tags with attribute
+ "type"="radio" and attribute value =
+ "chekced"</entry>
+ </row>
+
+ <row>
+ <entry>"p,span,td"</entry>
+ <entry>All tag elements "p"
or"span" or
+ "td" </entry>
+ </row>
+
+ <row>
+ <entry>"p#secret"</entry>
+ <entry>"p" paragraph element with
"id"
+ identification = "secret" </entry>
+ </row>
+
+ <row>
+ <entry>"p span"</entry>
+ <entry>"span" tag is a (direct or non-direct) child
of
+ "p" tag. If it's necessary, use "p
>
+ span" or "p/span" </entry>
+ </row>
+
+ <row>
+ <entry>"p[@foo^=bar]"</entry>
+ <entry>"p" tag containing "foo"
attribute with
+ textual value beginning with "bar" word </entry>
+ </row>
+
+ <row>
+ <entry>"p[@foo$=bar] "</entry>
+ <entry>"p" tag containing "foo"
attribute with
+ textual value ending with "bar" word</entry>
+ </row>
+
+ <row>
+ <entry>"p[@foo*=bar] "</entry>
+ <entry>"p" tag with "foo" attribute
containing
+ substring "bar" in any place</entry>
+ </row>
+
+ <row>
+ <entry>"p//span "</entry>
+ <entry>"span" tag is a (direct or non-direct) child
of
+ "p" tag </entry>
+ </row>
+
+ <row>
+ <entry>"p/../span "</entry>
+ <entry>"span" tag is a grandchild of
"p" tag</entry>
+ </row>
+
+ </tbody>
+ </tgroup>
+ </table>
+
+ <para>In addition, RichFaces allows using either component id or client id if
you apply the
+ query to the JSF component. When you define a selector, RichFaces examines its
content and
+ tries to replace the defined in the selector id with component id if
found.</para>
+ <para>For example, you have the following code:</para>
+
+ <programlisting role="XML"><![CDATA[...
+ <h:form id="form">
+ ...
+ <h:panelGrid id="menu">
+ <h:graphicImage ... />
+ <h:graphicImage ... />
+ ...
+ </h:panelGrid>
+ </h:form>
+...]]></programlisting>
+
+ <para>The actual id of the <emphasis role="bold">
+ <property><h:panelGrid></property>
+ </emphasis> table in the browser DOM is "form:menu".
However, you still can
+ reference to images inside this table using the following selector: </para>
+
+ <programlisting role="XML"><![CDATA[...
+ <rich:jQuery selector="#menu img" query="..." />
+...]]></programlisting>
+
+ <para>You can define the exact id in the selector if you want. The following
code reference to
+ the same set of DOM object:</para>
+
+ <programlisting role="XML"><![CDATA[...
+ <rich:jQuery selector="#form\\:menu img" query="..." />
+...]]></programlisting>
+
+ <para>Pay attention to the double slashes that escapes the colon in the
id.</para>
+
+ <para>In case when the <emphasis>
+ <property>"name"</property>
+ </emphasis> attribute is defined, <emphasis role="bold">
+ <property><rich:jQuery></property>
+ </emphasis> generates a JavaScript function that might be used from any place
of JavaScript
+ code on a page.</para>
+
+ <para>There is an example how to enlarge the picture smoothly on mouse over
event and return
+ back to the normal size on mouse out:</para>
+
+ <programlisting role="XML"><![CDATA[...
+ <h:graphicImage onmouseover="enlargePic(this)" width="50"
value=""/images/price.gif"
+ onmouseover="enlargePic(this, {pwidth:'60px'})"
onmouseover="releasePic(this)" />
+ <h:graphicImage onmouseover="enlargePic(this)" width="50"
value="/images/discount.gif"
+ onmouseover="enlargePic(this, {pwidth:'100px'})"
onmouseover="releasePic(this)" />
+ ...
+ <rich:jQuery name="enlargePic" timing="onJScall"
query="animate({width:param.pwidth})" />
+ <rich:jQuery name="releasePic" timing="onJScall"
query="animate({width:'50px'})"/>
+...]]></programlisting>
+
+ <para>The JavaScript could use two parameters. The first parameter is a
replacement for the
+ selector attribute. Thus, you can share the same query execution it to the
different DOM
+ objects. You can use the literal value or the direct reference to the existing DOM
object. The
+ second parameter can be used to path the specific value inside the query. The JSON
syntax is
+ used for the second parameter. The "param." namespace is used
for
+ referencing to data inside the parameter value.</para>
+
+ <para><emphasis role="bold">
+ <property><rich:jQuery></property>
+ </emphasis> adds styles and behavior to the DOM object dynamically. This
means if you replace
+ something on a page during an Ajax response, the applied artifacts will be
overwritten. You
+ are resistible to apply them again after the Ajax response is
complete.</para>
+ <para>Normally, it could be done with reRendering the <emphasis
role="bold">
+ <property><rich:jQuery></property>
+ </emphasis> components in the same Ajax interaction with the components those
queries are
+ applied to. Note, that queries with <emphasis>
+ <property>"timing"</property>
+ </emphasis> attribute set to
<property>"onload"</property> will not be
+ invoked even the query is reRendered because, the DOM document is not fully
reloaded during
+ the Ajax interaction. If you need to re-applies query with
+ <property>"onload"</property> value of
<emphasis>
+ <property>"timing"</property>
+ </emphasis> attribute , define the <emphasis>
+ <property>"name</property>
+ </emphasis> attribute and invoke the query by name in the <emphasis>
+ <property>"oncomplete"</property>
+ </emphasis> attribute of the Ajax component.</para>
+
+ <para>RichFaces includes jQuery JavaScript framework. You can use the futures
of jQuery directly
+ without defining the <emphasis role="bold">
+ <property><rich:jQuery></property>
+ </emphasis> component on a page if it is convenient for you. To start using
the jQuery feature
+ on the page, include the library to the page with the following code:</para>
+
+ <programlisting role="XML"><![CDATA[...
+ <a4j:loadScript src="resource://jquery.js"/>
+...]]></programlisting>
+
+ <para>Refer to the <ulink
url="http://docs.jquery.com/">jQuery
documentation </ulink> for the
+ right sintax. Remember to use jQuery() function instead of $(), as soon as jQuery
works
+ without conflicts with prototype.js.</para>
</section>
+ <section>
+ <title>Relevant Resources Links</title>
+ <para>More information about jQuery framework and its features you can read
<ulink
+
url="http://jquery.com/">here</ulink>.</para>
+ <para>How to use jQuery with other libraries see <ulink
+
url="http://docs.jquery.com/Using_jQuery_with_Other_Libraries"&...
+
+ </section>
</section>