tapestry-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jkuhn...@apache.org
Subject svn commit: r543957 [1/5] - in /tapestry/tapestry4/trunk: ./ src/site/ src/site/resources/images/ComponentReference/ src/site/xdoc/components/dojo/ src/site/xdoc/components/general/ src/site/xdoc/components/link/ src/site/xdoc/components/scriptaculous/...
Date Sun, 03 Jun 2007 18:51:11 GMT
Author: jkuhnert
Date: Sun Jun  3 11:51:08 2007
New Revision: 543957

URL: http://svn.apache.org/viewvc?view=rev&rev=543957
Log:
Resolves TAPESTRY-1531. 

-) Added prototype / scriptaculous javascript libraries to the framework core and updated appropriate license notices. 

-) Added new PrototypeResponseBuilder/contributor services for handling Prototype based XHR requests. 

-) Added a new @Suggest component which provides scriptaculous based auto completion of form text input (or textarea) input fields. 

-) Updated the documentation to cover the new componnet.

-) Added new example page to the TimeTracker demo covering usage of the component as well as an example of providing a custom ListItemRenderer to render a custom autocompleting html response.

Added:
    tapestry/tapestry4/trunk/MIT-LICENSE-scriptaculous.txt   (with props)
    tapestry/tapestry4/trunk/src/site/resources/images/ComponentReference/Suggest.png   (with props)
    tapestry/tapestry4/trunk/src/site/xdoc/components/scriptaculous/
    tapestry/tapestry4/trunk/src/site/xdoc/components/scriptaculous/index.xml   (with props)
    tapestry/tapestry4/trunk/src/site/xdoc/components/scriptaculous/suggest.xml   (with props)
    tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/LocaleSuggest.html   (with props)
    tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/LocaleListItemRenderer.java   (with props)
    tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/LocaleSuggest.java   (with props)
    tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/log4j.properties
      - copied, changed from r542656, tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/log4j.properties
    tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/ConfigurationServlet.java
      - copied, changed from r542656, tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/servlet/ConfigurationServlet.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/DefaultListItemRenderer.java   (with props)
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ListItemRenderer.java   (with props)
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ScriptaculousMessages.java   (with props)
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ScriptaculousStrings.properties   (with props)
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/Suggest.java   (with props)
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/Suggest.jwc
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/Suggest.script
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/PrototypeResponseBuilder.java   (with props)
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/PrototypeResponseContributorImpl.java   (with props)
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/util/SizeRestrictingIterator.java   (with props)
    tapestry/tapestry4/trunk/tapestry-framework/src/js/scriptaculous-1.7.1/
    tapestry/tapestry4/trunk/tapestry-framework/src/js/scriptaculous-1.7.1/MIT-LICENSE
    tapestry/tapestry4/trunk/tapestry-framework/src/js/scriptaculous-1.7.1/builder.js   (with props)
    tapestry/tapestry4/trunk/tapestry-framework/src/js/scriptaculous-1.7.1/controls.js   (with props)
    tapestry/tapestry4/trunk/tapestry-framework/src/js/scriptaculous-1.7.1/dragdrop.js   (with props)
    tapestry/tapestry4/trunk/tapestry-framework/src/js/scriptaculous-1.7.1/effects.js   (with props)
    tapestry/tapestry4/trunk/tapestry-framework/src/js/scriptaculous-1.7.1/prototype.js   (with props)
    tapestry/tapestry4/trunk/tapestry-framework/src/js/scriptaculous-1.7.1/scriptaculous.js   (with props)
    tapestry/tapestry4/trunk/tapestry-framework/src/js/scriptaculous-1.7.1/slider.js   (with props)
    tapestry/tapestry4/trunk/tapestry-framework/src/js/scriptaculous-1.7.1/sound.js   (with props)
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/scriptaculous/
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/scriptaculous/TestSuggest.java   (with props)
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/PrototypeResponseBuilderTest.java   (with props)
Modified:
    tapestry/tapestry4/trunk/NOTICE.txt
    tapestry/tapestry4/trunk/pom.xml
    tapestry/tapestry4/trunk/src/site/site.xml
    tapestry/tapestry4/trunk/src/site/xdoc/components/dojo/autocompleter.xml
    tapestry/tapestry4/trunk/src/site/xdoc/components/general/for.xml
    tapestry/tapestry4/trunk/src/site/xdoc/components/link/directlink.xml
    tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/Border.html
    tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/css/timetracker.css
    tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/Border.jwc
    tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/LocaleList.html
    tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/web.xml
    tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/table/LocaleList.java
    tapestry/tapestry4/trunk/tapestry-framework/pom.xml
    tapestry/tapestry4/trunk/tapestry-framework/src/descriptor/META-INF/tapestry.asset.xml
    tapestry/tapestry4/trunk/tapestry-framework/src/descriptor/META-INF/tapestry.services.xml
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/Framework.library
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/TapestryUtils.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/engine/DirectServiceParameter.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/PropertySelection.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/TextArea.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/ResponseBuilder.java
    tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/services/impl/JSONResponseContributorImpl.java
    tapestry/tapestry4/trunk/tapestry-framework/src/test/org/apache/tapestry/services/impl/DojoAjaxResponseBuilderTest.java

Added: tapestry/tapestry4/trunk/MIT-LICENSE-scriptaculous.txt
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/MIT-LICENSE-scriptaculous.txt?view=auto&rev=543957
==============================================================================
--- tapestry/tapestry4/trunk/MIT-LICENSE-scriptaculous.txt (added)
+++ tapestry/tapestry4/trunk/MIT-LICENSE-scriptaculous.txt Sun Jun  3 11:51:08 2007
@@ -0,0 +1,20 @@
+Copyright (c) 2005-2007 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/MIT-LICENSE-scriptaculous.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/MIT-LICENSE-scriptaculous.txt
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/MIT-LICENSE-scriptaculous.txt
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: tapestry/tapestry4/trunk/NOTICE.txt
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/NOTICE.txt?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/NOTICE.txt (original)
+++ tapestry/tapestry4/trunk/NOTICE.txt Sun Jun  3 11:51:08 2007
@@ -2,4 +2,6 @@
 The Apache Software Foundation (http://www.apache.org/).
 
 This product additionally includes script code developed by the Dojo Foundation under
-the BSD license. (http://opensource.org/licenses/bsd-license.php).
+the BSD or Academic Free License v2.1 licenses. (http://opensource.org/licenses/bsd-license.php or http://opensource.org/licenses/afl-2.1.php).
+
+The Scriptaculous javascript library is also included in Tapestry - which is licensed with the MIT License. (http://www.opensource.org/licenses/mit-license.php)

Modified: tapestry/tapestry4/trunk/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/pom.xml?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/pom.xml (original)
+++ tapestry/tapestry4/trunk/pom.xml Sun Jun  3 11:51:08 2007
@@ -245,7 +245,7 @@
                 <plugin>
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-surefire-plugin</artifactId>
-                    <version>2.4-SNAPSHOT</version>
+                    <version>2.4-collab-SNAPSHOT</version>
                     <inherited>true</inherited>
                     <configuration>
                         <systemProperties>

Added: tapestry/tapestry4/trunk/src/site/resources/images/ComponentReference/Suggest.png
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/src/site/resources/images/ComponentReference/Suggest.png?view=auto&rev=543957
==============================================================================
Binary file - no diff available.

Propchange: tapestry/tapestry4/trunk/src/site/resources/images/ComponentReference/Suggest.png
------------------------------------------------------------------------------
    svn:mime-type = image/png

Modified: tapestry/tapestry4/trunk/src/site/site.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/src/site/site.xml?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/src/site/site.xml (original)
+++ tapestry/tapestry4/trunk/src/site/site.xml Sun Jun  3 11:51:08 2007
@@ -167,7 +167,11 @@
                 <item name="DropdownTimePicker" href="/components/dojo/dropdowntimepicker.html" />
                 <item name="InlineEditBox" href="/components/dojo/inlineeditbox.html" />
             </item>
-            
+
+            <item name="script.aculo.us" href="/components/scriptaculous/index.html" collapse="true">
+                <item name="Suggest" href="/components/scriptaculous/suggest.html" />
+            </item>
+
         </menu>
 
         <menu name="Modules">

Modified: tapestry/tapestry4/trunk/src/site/xdoc/components/dojo/autocompleter.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/src/site/xdoc/components/dojo/autocompleter.xml?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/src/site/xdoc/components/dojo/autocompleter.xml (original)
+++ tapestry/tapestry4/trunk/src/site/xdoc/components/dojo/autocompleter.xml Sun Jun  3 11:51:08 2007
@@ -14,6 +14,8 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN"
+    "http://maven.apache.org/dtd/xdoc_1_0.dtd">
 <document>
     <properties>
         <title>Autocompleter</title>

Modified: tapestry/tapestry4/trunk/src/site/xdoc/components/general/for.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/src/site/xdoc/components/general/for.xml?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/src/site/xdoc/components/general/for.xml (original)
+++ tapestry/tapestry4/trunk/src/site/xdoc/components/general/for.xml Sun Jun  3 11:51:08 2007
@@ -59,7 +59,7 @@
                         <td>source</td>
                         <td>Iterator, Collection, Object[], or Object</td>
                         <td>yes</td>
-                        <td></td>
+                        <td> </td>
                         <td>
                             The source of objects to be iterated, which may be a Collection, an
                             Iterator, an array of Objects, or a even a single Object (which is

Modified: tapestry/tapestry4/trunk/src/site/xdoc/components/link/directlink.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/src/site/xdoc/components/link/directlink.xml?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/src/site/xdoc/components/link/directlink.xml (original)
+++ tapestry/tapestry4/trunk/src/site/xdoc/components/link/directlink.xml Sun Jun  3 11:51:08 2007
@@ -61,20 +61,16 @@
                     <tr>
                         <td>listener</td>
                         <td>
-                            <a
-                                href="../../apidocs/org/apache/tapestry/IActionListener.html">
+                            <a href="../../apidocs/org/apache/tapestry/IActionListener.html">
                                 IActionListener
                             </a>
                         </td>
-                        
                         <td>yes</td>
-
-                        <td></td>
+                        <td> </td>
                         <td>
                             Specifies an object that is notified when the link is clicked, which is
                             typically a listener method of its container (for example, listeners.
-                            <em>method</em>
-                            ).
+                            <em>method</em>).
                         </td>
                     </tr>
                     <tr>
@@ -88,7 +84,7 @@
                             List
                         </td>
                         <td>no</td>
-                        <td></td>
+                        <td> </td>
                         <td>
                             <p>
                                 An array of objects to be encoded into the URL. These parameters
@@ -185,7 +181,7 @@
                         <td>scheme</td>
                         <td>String</td>
                         <td>no</td>
-                        <td></td>
+                        <td> </td>
                         <td>
                             The required scheme ("http" or "https", typically) for the URL. This
                             will force the creation of an absolute URL when the current request's
@@ -200,7 +196,7 @@
                         <td>port</td>
                         <td>Integer</td>
                         <td>no</td>
-                        <td></td>
+                        <td> </td>
                         <td>
                             The required port (80, 443, 8080. 8443, typically) for the URL. This
                             will force the creation of an absolute URL when the current request's
@@ -222,7 +218,7 @@
                         </td>
                         <td>no</td>
 
-                        <td></td>
+                        <td> </td>
 
                         <td>The object which will actually render the link.</td>
                     </tr>
@@ -230,7 +226,7 @@
                         <td>updateComponents</td>
                         <td>String[],Collection</td>
                         <td>no</td>
-                        <td></td>
+                        <td> </td>
                         <td>
                             In an asynchronous request, specifies which components should have their content
                             rendered back to the client. These are expected to be unique component ids. 

Added: tapestry/tapestry4/trunk/src/site/xdoc/components/scriptaculous/index.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/src/site/xdoc/components/scriptaculous/index.xml?view=auto&rev=543957
==============================================================================
--- tapestry/tapestry4/trunk/src/site/xdoc/components/scriptaculous/index.xml (added)
+++ tapestry/tapestry4/trunk/src/site/xdoc/components/scriptaculous/index.xml Sun Jun  3 11:51:08 2007
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright 2007 The Apache Software Foundation
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN"
+    "http://maven.apache.org/dtd/xdoc_1_0.dtd">
+<document>
+    <properties>
+        <title>Script.aculo.us Components</title>
+    </properties>
+    <body>
+        <section name="Script.aculo.us Components">
+            <p>
+                This set of components wraps/extends/relies on the <a href="http://script.aculo.us/">script.acuulo.us</a>
+                javascript toolkit to provide ajax / dhtml enhancenced behavior.
+            </p>
+
+            <subsection name="Documentation">
+                <p>
+                    Most of the documentation for using the majority of <a href="http://script.aculo.us/">script.acuulo.us</a>
+                    controls can be found on their wiki <a href="http://wiki.script.aculo.us/scriptaculous/">here</a>. 
+                </p>
+                <p>
+                    <b>Script.aculo.us Documentation:</b> <a href="http://wiki.script.aculo.us/scriptaculous/">http://wiki.script.aculo.us/scriptaculous/</a>.
+                </p>
+            </subsection>
+        </section>
+    </body>
+</document>

Propchange: tapestry/tapestry4/trunk/src/site/xdoc/components/scriptaculous/index.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/src/site/xdoc/components/scriptaculous/index.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/src/site/xdoc/components/scriptaculous/index.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: tapestry/tapestry4/trunk/src/site/xdoc/components/scriptaculous/suggest.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/src/site/xdoc/components/scriptaculous/suggest.xml?view=auto&rev=543957
==============================================================================
--- tapestry/tapestry4/trunk/src/site/xdoc/components/scriptaculous/suggest.xml (added)
+++ tapestry/tapestry4/trunk/src/site/xdoc/components/scriptaculous/suggest.xml Sun Jun  3 11:51:08 2007
@@ -0,0 +1,493 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+    Copyright 2007 The Apache Software Foundation
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.2//EN"
+        "http://maven.apache.org/dtd/xdoc_1_0.dtd">
+<document>
+    <properties>
+        <title>Suggest</title>
+    </properties>
+    <body>
+
+        <section name="Suggest">
+
+            <p>
+                The exact same thing as the standard <a href="../form/textfield.html">TextField</a> component - with the additional
+                client side behavior of providing a dynamic autocompletion suggestion list drop down below the field as input
+                is typed in.
+            </p>
+            <img src="../../images/ComponentReference/Suggest.png" alt="Suggest Example" />
+            <p>
+                The main distinction between this and <a href="../form/textfield.html">TextField</a> is that this component needs some
+                additional parameters such as the source of the dynamic list that will be generated - as well as a listener method to invoke
+                on your page / component when something has been typed in on the client side input field. 
+            </p>
+            <p>
+                In addition to the regular client side enhancements this component can optionally render either a <code>&lt;input type="text" /&gt;</code> standard
+                form input field <em>or</em> it can render a <code>&lt;textarea&gt;Paragraph text...&lt;/textarea&gt;</code>.  The type rendered depends on how you
+                define the component in your html template.  Following is a small example of defining it as a <b>textarea</b> or <b>input</b>:
+            </p>
+<source><![CDATA[<input jwcid="@Suggest" listener="listener:filterSearch" listSource="ognl:listValues" />
+
+...
+
+<textarea jwcid="@Suggest" listener="listener:filterSearch" listSource="ognl:listValues" />
+]]></source>
+            <p>
+                <strong>
+                    See also:
+                    <a href="../../apidocs/org/apache/tapestry/scriptaculous/Suggest.html">Suggest</a>
+                    ,
+                    <a href="../../apidocs/org/apache/tapestry/scriptaculous/ListItemRenderer.html">ListItemRenderer</a>
+                    ,
+                    <a href="../../apidocs/org/apache/tapestry/scriptaculous/DefaultListItemRenderer.html">DefaultListItemRenderer</a>
+                    ,
+                    <a href="http://wiki.script.aculo.us/scriptaculous/show/Ajax.Autocompleter">Script.aculo.us Ajax.Autocompleter</a>
+                    ,
+                    <a href="../form/textfield.html">TextField</a>
+                </strong>
+
+            </p>
+
+            <subsection name="Parameters">
+                <table>
+                    <tr>
+                        <th>Name</th>
+                        <th>Type</th>
+                        <th>Required</th>
+                        <th>Default</th>
+                        <th>Description</th>
+                    </tr>
+                    <tr>
+                        <td>value</td>
+                        <td>string</td>
+                        <td>yes</td>
+                        <td> </td>
+                        <td>
+                            The value to be editted, which is is usually a string. Tapestry has
+                            limited ability to convert to and from strings.
+                        </td>
+                    </tr>
+                    <tr>
+                        <td>disabled</td>
+                        <td>boolean</td>
+                        <td>no</td>
+                        <td>false</td>
+                        <td>
+                            If true, then a disabled attribute will be rendered as part of the
+                            <code>&lt;input&gt;</code> or <code>&lt;textarea&gt;</code> tag, and the component will not update its value parameter
+                            when the form is submitted.
+                        </td>
+                    </tr>
+                    <tr>
+                        <td>displayName</td>
+                        <td>string</td>
+                        <td>no</td>
+                        <td> </td>
+                        <td>
+                            The user-presentable name for the component, which will be used by a
+                            <a href="fieldlabel.html">FieldLabel</a>
+                            connected to the component.
+                        </td>
+                    </tr>
+                    <tr>
+                        <td>validators</td>
+                        <td>
+                            Array or collection of
+                            <a
+                                href="../../apidocs/org/apache/tapestry/form/validator/Validator.html">
+                                Validator
+                            </a>
+                        </td>
+                        <td>no</td>
+                        <td> </td>
+                        <td>
+                            The validators to apply to the component. Something along the lines of:
+                            <code>validators:required</code> .<br/><br/>
+
+                            <strong>See also:</strong> <a href="../../usersguide/validation.html">Validation</a>
+                        </td>
+                    </tr>
+                    <tr>
+                        <td>translator</td>
+                        <td>
+                            <a
+                                href="../../tapestry/apidocs/org/apache/tapestry/form/translator/Translator.html">
+                                Translator
+                            </a>
+                        </td>
+                        <td>no</td>
+                        <td> </td>
+                        <td>
+                            The translator to use when displaying and parsing the date.
+                            <br/><br/>
+                            <strong>See also:</strong> <a href="../../usersguide/validation.html">Validation</a>
+                        </td>
+                    </tr>
+                    <tr>
+                        <td>hidden</td>
+                        <td>boolean</td>
+                        <td>no</td>
+                        <td>false</td>
+                        <td>
+                            If true, then the type attribute will be "password", not "text", and
+                            user input in the browser will be masked.
+                        </td>
+                    </tr>
+                    <tr>
+                        <td>listener</td>
+                        <td>
+                            <a href="../../apidocs/org/apache/tapestry/IActionListener.html">
+                                IActionListener
+                            </a>
+                        </td>
+                        <td>yes</td>
+                        <td> </td>
+                        <td>
+                            Specifies an object that is notified when input is typed in to the field, which is
+                            typically a listener method of its container (for example, listeners.
+                            <em>method</em>).  This listener method will by default contain exactly one parameter of type String when
+                            invoked - which wil be the value that was typed in to the field in the browser.  You may add other
+                            additional parameters using the <b>parameters</b> parameter of this component.
+                            
+                            <br /><br />
+
+                            <strong>See also:</strong> <a href="../../usersguide/listenermethods.html">Users Guide - Listeners</a>
+                        </td>
+                    </tr>
+                    <tr>
+                        <td>parameters</td>
+                        <td>
+                            Object or
+                            <br />
+                            Object[] or
+                            <br />
+                            List
+                        </td>
+                        <td>no</td>
+                        <td> </td>
+                        <td>
+                            <p>
+                                An array of objects to be encoded into the URL. These parameters
+                                will be decoded when the listener method is executed.
+                            </p>
+                            <p>
+                                In a web application built onto of Enterprise JavaBeans, the context
+                                is often the primary key of some Entity bean; typically such keys
+                                are Strings or Integers.
+                            </p>
+                            <p>
+                                A listener method can retrieve the parameters three ways:
+                                <br />
+                                parameters are declared in the method itself, e.g. - listenerMethod(
+                                <em>parameters</em>
+                                )
+                                <br />
+                                parameters are declared along with the IRequestCycle, e.g. -
+                                listenerMethod(IRequestCycle cycle,
+                                <em>parameters</em>
+                                )
+
+                                <br />
+                                or through the request cycle, e.g. - listenerMethod(IReuqestCycle
+                                cycle), using IRequestCycle.getServiceParameters()
+                            </p>
+                            <p>
+                                Prior to release 2.2, the parameters were always type String. They
+                                may now be of any type; type will be maintained when the parameters
+                                are later retrieved by a listener. See
+                                <a
+                                    href="../../apidocs/org/apache/tapestry/util/io/SqueezeAdaptor.html">
+                                    SqueezeAdaptor
+                                </a>
+                                for more details.
+                            </p>
+                        </td>
+                    </tr>
+                    <tr>
+                        <td>stateful</td>
+                        <td>boolean</td>
+                        <td>no</td>
+                        <td>false</td>
+                        <td>
+                            If true, then the component requires an active (i.e.,
+                            non-new) HttpSession when triggered. Failing that, it throws a
+                            <a href="../../apidocs/org/apache/tapestry/StaleLinkException.html">
+                                StaleLinkException
+                            </a>
+                            . If false, then no check is necessary. The latter works well with links
+                            that encode all necessary state inside the URL itself.
+                        </td>
+                    </tr>
+                    <tr>
+                        <td>listSource</td>
+                        <td>Iterator, Collection, Object[], or Object</td>
+                        <td>yes</td>
+                        <td> </td>
+                        <td>
+                            The source of objects to be iterated, which may be a Collection, an
+                            Iterator, an array of Objects, or a even a single Object (which is
+                            treated as a singleton collection).
+
+                            <br /><br />
+                            This list is used as the source for all dynamic autocompletions and is expected to be appropriately
+                            filtered by you when the corresponding listener method is invoked to filter the list of available options.
+                        </td>
+                    </tr>
+                    
+                    <tr>
+                        <td>listItemRenderer</td>
+                        <td><a href="../../apidocs/org/apache/tapestry/scriptaculous/ListItemRenderer.html">ListItemRenderer</a></td>
+                        <td>yes</td>
+                        <td><a href="../../apidocs/org/apache/tapestry/scriptaculous/DefaultListItemRenderer.html">DefaultListItemRenderer</a></td>
+                        <td>
+                            This is the object that the component will defer actual rendering of the dynamic html list to.  According to the
+                            <a href="http://wiki.script.aculo.us/scriptaculous/show/Ajax.Autocompleter">Script.aculo.us Ajax.Autocompleter</a> documentation
+                            it is expected that this renderer return an unordered html list at the very least:
+
+ <source><![CDATA[<ul>
+    <li>First Option</li>
+    <li>Second Option</li>
+    <li>Third Option</li>
+</ul>]]></source>
+                           <br />
+                            More elaborate options are of course possible - such as the
+                            <a href="http://opencomponentry.com:8080/timetracker/LocaleSuggest.html">TimeTracker demo</a> where the options returned
+                            contain image references to render the flag associated with different countries using a custom <a href="../../apidocs/org/apache/tapestry/scriptaculous/ListItemRenderer.html">ListItemRenderer</a>
+                            implementation.  The source for this custom implementation example can be found
+                            <a href="http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/LocaleListItemRenderer.java?view=markup">here</a>. 
+                        </td>
+                    </tr>
+                    <tr>
+                        <td>maxResults</td>
+                        <td>int</td>
+                        <td>no</td>
+                        <td> </td>
+                        <td>
+                            Optionally specified the maximum number of autocomplete suggestions that will be displayed to users.
+                        </td>
+                    </tr>
+                    <tr>
+                        <td>updateElementClass</td>
+                        <td>String</td>
+                        <td>no</td>
+                        <td>autocomplete</td>
+                        <td>
+                            Specifies the html css class attribute that will be written to the hidden &lt;div&gt; that this component generates
+                            for the local client side javascript to populate the autocompletion results in to.  Override this parameter if you would
+                            like to change the css class name to another definition.
+
+                            The <a href="http://opencomponentry.com:8080/timetracker/LocaleSuggest.html">TimeTracker demo</a> page defines an inline
+                            css style block to style the autocompletion results <em>(something you will have to do for it to be usable at all)</em>
+                            using something like the following:
+
+ <source><![CDATA[<style type="text/css">
+        div.autocomplete {
+            position:absolute;
+            width:250px;
+            background-color:white;
+            border:1px solid #888;
+            margin:0px;
+            padding:0px;
+        }
+        div.autocomplete ul {
+            list-style-type:none;
+            margin:0px;
+            padding:0px;
+        }
+        div.autocomplete ul li.selected { background-color: #ffb;}
+        div.autocomplete ul li {
+            list-style-type:none;
+            display:block;
+            margin:0;
+            padding:4px 0 4px 4px;
+            cursor:pointer;
+        }
+        div.autocomplete ul li img { border:none; margin-right: 10px; vertical-align:middle;}
+    </style>]]></source>
+                            <br /><br />
+                            <span class="warn">
+                                <strong>Warning:</strong>
+                                <p>
+                                    This component provides no default css style rules for the returned list - so if you don't define any such as the example
+                                    above shows your copmonent is not likely to work very well or be very usable.
+                                </p>
+                                <p>
+                                    There are other examples of default styling provided in the
+                                    <a href="http://wiki.script.aculo.us/scriptaculous/show/Ajax.Autocompleter">Script.aculo.us Ajax.Autocompleter</a> documentation.
+                                </p>
+                            </span>
+                        </td>
+                    </tr>
+                    <tr>
+                        <td>options</td>
+                        <td>String</td>
+                        <td>no</td>
+                        <td>literal:{method: 'get', frequency: 0.2}</td>
+                        <td>
+                            There are additional options for configuring how the client side behavior of this component works covered in the
+                            <a href="http://wiki.script.aculo.us/scriptaculous/show/Ajax.Autocompleter">Script.aculo.us Ajax.Autocompleter</a> documentation. By
+                            default this component uses http get <em>(something highly reccomended, it probably wouldn't even work with post)</em> and configures
+                            the frequency with which results are grabbed for autocompletion when input changes as <b>0.2</b> seconds.  The configuration specified
+                            here is passed in directly to the client side script.aculo.us object so they must conform to
+                            <a href="http://json.org">JSON</a> syntax rules or it will result in a parse exception being generated when your html template is
+                            processed by tapestry. <em>(JSON = JavaScript Object Notation)</em>
+
+                            <br /><br />
+                            You can also pass in things like <code>afterUpdateElement:"nameOfClientSideJavascriptFuncion"</code>, which is a way of having your custom
+                            javascript functions called after an item has been selected from the autocompletion list.
+
+                            <br /><br />
+                            Please see the <a href="http://wiki.script.aculo.us/scriptaculous/show/Ajax.Autocompleter">Script.aculo.us Ajax.Autocompleter</a> documentation
+                            for more information on all the available options. 
+                        </td>
+                    </tr>
+                </table>
+
+                <p>
+                    Body: <strong>removed</strong>
+                </p>
+                <p>
+                    Informal parameters: <strong>allowed</strong>
+                </p>
+                <p>
+                    Reserved parameters: <em>name, autocomplete</em>
+                </p>
+
+            </subsection>
+
+        </section>
+
+        <section name="Example">
+            <p>
+                This example is a basic bare-minimum using the majority of built in defaults to do something similar to the
+                <a href="http://opencomponentry.com:8080/timetracker/LocaleSuggest.html">TimeTracker demo</a> - only without the custom
+                <a href="../../apidocs/org/apache/tapestry/scriptaculous/ListItemRenderer.html">ListItemRenderer</a> implementation.  There is
+                no .page file shown here as this example uses annotations to define the page properties used.
+            </p>
+
+            <subsection name="HTML Template">
+
+ <source><![CDATA[<span jwcid="@Border">
+
+<p>
+Autocompleting input suggestion fields using scriptaculous javascript library.
+</p>
+
+    <style type="text/css">
+        div.autocomplete {
+            position:absolute;
+            width:250px;
+            background-color:white;
+            border:1px solid #888;
+            margin:0px;
+            padding:0px;
+        }
+        div.autocomplete ul {
+            list-style-type:none;
+            margin:0px;
+            padding:0px;
+        }
+        div.autocomplete ul li.selected { background-color: #ffb;}
+        div.autocomplete ul li {
+            list-style-type:none;
+            display:block;
+            margin:0;
+            padding:4px 0 4px 4px;
+            cursor:pointer;
+        }
+        div.autocomplete ul li img { border:none; margin-right: 10px; vertical-align:middle;}
+    </style>
+
+    <form jwcid="@Form" class="container">
+        <h3>Locale suggestion</h3>
+
+        <fieldset>
+             <table width="90%" class="form" cellpadding="2" cellspacing="0" >
+                 <tbody>
+                     <tr>
+                         <td><label jwcid="@FieldLabel" field="component:suggest" /></td>
+                         <td><input jwcid="suggest" size="34" /></td>
+                     </tr>
+                 </tbody>
+             </table>
+        </fieldset>
+    </form>
+
+</span>]]></source>
+            </subsection>
+
+            <subsection name="Java Page">
+ <source><![CDATA[public abstract class LocaleSuggest extends BasePage {
+
+    @Component(bindings = {"value=inputLocale",
+            "displayName=literal:Locale",
+            "listSource=localeList",
+            "listener=listener:suggestLocale"})
+    public abstract Suggest getSuggest();
+
+    public abstract String getInputLocale();
+
+    public abstract String getFilterString();
+    public abstract void setFilterString(String filter);
+
+    public List getLocaleList()
+    {
+        String filter = getFilterString();
+        Locale[] locales = Locale.getAvailableLocales();
+
+        if (filter == null || filter.length() < 1)
+        {
+            return Arrays.asList(locales);
+        }
+
+        filter = filter.toUpperCase();
+
+        List<Locale> ret = new ArrayList<Locale>();
+        // used to ensure no duplicates are stored in the list as java.util.Locale doesn't
+        // provde an equals() method.
+        List temp = new ArrayList();
+
+        for (Locale locale : locales)
+        {
+            if (locale.getDisplayCountry().toUpperCase().indexOf(filter) > -1
+                    && !temp.contains(locale.getDisplayCountry()))
+            {
+                ret.add(locale);
+                temp.add(locale.getDisplayCountry());
+            }
+        }
+
+        return ret;
+    }
+
+    /**
+     * Invoked dynamically via XHR whenever input changes in the form input field. The method above - getLocaleList() -
+     * is what actually filters the list of suggested options displayed based on the characters they typed in to the input field.
+     */
+    public void suggestLocale(String filter)
+    {
+        setFilterString(filter);
+    }
+}
+
+]]></source>
+            </subsection>
+
+        </section>
+
+    </body>
+</document>

Propchange: tapestry/tapestry4/trunk/src/site/xdoc/components/scriptaculous/suggest.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/src/site/xdoc/components/scriptaculous/suggest.xml
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/src/site/xdoc/components/scriptaculous/suggest.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/LocaleSuggest.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/LocaleSuggest.html?view=auto&rev=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/LocaleSuggest.html (added)
+++ tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/LocaleSuggest.html Sun Jun  3 11:51:08 2007
@@ -0,0 +1,47 @@
+<span jwcid="@Border">
+
+<p>
+Autocompleting input suggestion fields using the <a href="http://script.aculo.us/">script.aculo.us</a> javascript library.
+</p>
+
+    <style type="text/css">
+        div.autocomplete {
+            position:absolute;
+            width:250px;
+            background-color:white;
+            border:1px solid #888;
+            margin:0px;
+            padding:0px;
+        }
+        div.autocomplete ul {
+            list-style-type:none;
+            margin:0px;
+            padding:0px;
+        }
+        div.autocomplete ul li.selected { background-color: #ffb;}
+        div.autocomplete ul li {
+            list-style-type:none;
+            display:block;
+            margin:0;
+            padding:4px 0 4px 4px;
+            cursor:pointer;
+        }
+        div.autocomplete ul li img { border:none; margin-right: 10px; vertical-align:middle;}
+    </style>
+
+    <form jwcid="@Form" class="container">
+        <h3>Locale suggestion</h3>
+        
+        <fieldset>
+             <table width="90%" class="form" cellpadding="2" cellspacing="0" >
+                 <tbody>
+                     <tr>
+                         <td><label jwcid="@FieldLabel" field="component:suggest" /></td>
+                         <td><input jwcid="suggest" size="34" /></td>
+                     </tr>
+                 </tbody>
+             </table>
+        </fieldset>
+    </form>
+
+</span>
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/LocaleSuggest.html
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/LocaleSuggest.html
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/LocaleSuggest.html
------------------------------------------------------------------------------
    svn:mime-type = text/html

Modified: tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/Border.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/Border.html?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/Border.html (original)
+++ tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/Border.html Sun Jun  3 11:51:08 2007
@@ -15,6 +15,7 @@
     <ul>
         <li><a class="here" jwcid="@PageLink" page="Home">home</a></li>
         <li><a jwcid="@PageLink" page="LocaleList">locale list</a></li>
+        <li><a jwcid="@PageLink" page="LocaleSuggest">suggest</a></li>
     </ul>
 </div>
 

Modified: tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/css/timetracker.css
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/css/timetracker.css?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/css/timetracker.css (original)
+++ tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/css/timetracker.css Sun Jun  3 11:51:08 2007
@@ -56,7 +56,7 @@
     display: block;
     float: left;
     list-style: none;
-    margin-right: 5px;
+    margin-right: 15px;
 }
 
 #navigation ul li {

Added: tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/LocaleListItemRenderer.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/LocaleListItemRenderer.java?view=auto&rev=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/LocaleListItemRenderer.java (added)
+++ tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/LocaleListItemRenderer.java Sun Jun  3 11:51:08 2007
@@ -0,0 +1,43 @@
+package org.apache.tapestry.timetracker.page;
+
+import org.apache.tapestry.IMarkupWriter;
+import org.apache.tapestry.IRequestCycle;
+import org.apache.tapestry.scriptaculous.ListItemRenderer;
+
+import java.util.Iterator;
+import java.util.Locale;
+
+/**
+ * Sample implementation of a html suggest response.
+ */
+public class LocaleListItemRenderer implements ListItemRenderer {
+
+    /**
+     * {@inheritDoc}
+     */
+    public void renderList(IMarkupWriter writer, IRequestCycle cycle, Iterator values)
+    {
+        if (cycle.isRewinding())
+            return;
+
+        //Write values out as simple strings
+        writer.begin("ul");
+
+        while (values.hasNext()) {
+            
+            Locale value = (Locale)values.next();
+            if (value == null)
+                continue;
+
+            writer.begin("li");
+
+            writer.beginEmpty("img");
+            writer.attribute("src", "http://setiathome.free.fr/images/flags/" + value.getCountry().toLowerCase() + ".gif");
+            writer.print(value.getDisplayCountry());
+            
+            writer.end("li");
+        }
+
+        writer.end();
+    }
+}

Propchange: tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/LocaleListItemRenderer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/LocaleListItemRenderer.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/LocaleListItemRenderer.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/LocaleSuggest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/LocaleSuggest.java?view=auto&rev=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/LocaleSuggest.java (added)
+++ tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/LocaleSuggest.java Sun Jun  3 11:51:08 2007
@@ -0,0 +1,69 @@
+package org.apache.tapestry.timetracker.page;
+
+import org.apache.tapestry.annotations.Component;
+import org.apache.tapestry.html.BasePage;
+import org.apache.tapestry.scriptaculous.ListItemRenderer;
+import org.apache.tapestry.scriptaculous.Suggest;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Locale;
+
+/**
+ * Demonstration of using the {@link org.apache.tapestry.scriptaculous.Suggest} component.
+ */
+public abstract class LocaleSuggest extends BasePage {
+
+    static ListItemRenderer ITEM_RENDERER = new LocaleListItemRenderer();
+
+    @Component(bindings = {"value=inputLocale",
+            "displayName=literal:Locale",
+            "listSource=localeList",
+            "listener=listener:suggestLocale",
+            "listItemRenderer=itemRenderer"})
+    public abstract Suggest getSuggest();
+
+    public abstract String getInputLocale();
+
+    public ListItemRenderer getItemRenderer()
+    {
+        return ITEM_RENDERER;
+    }
+
+    public abstract String getFilterString();
+    public abstract void setFilterString(String filter);
+    
+    public List getLocaleList()
+    {
+        String filter = getFilterString();
+        Locale[] locales = Locale.getAvailableLocales();
+
+        if (filter == null || filter.length() < 1)
+        {
+            return Arrays.asList(locales);
+        }
+
+        filter = filter.toUpperCase();
+
+        List<Locale> ret = new ArrayList<Locale>();
+        List temp = new ArrayList();
+
+        for (Locale locale : locales)
+        {
+            if (locale.getDisplayCountry().toUpperCase().indexOf(filter) > -1
+                    && !temp.contains(locale.getDisplayCountry()))
+            {
+                ret.add(locale);
+                temp.add(locale.getDisplayCountry());
+            }
+        }
+
+        return ret;
+    }
+    
+    public void suggestLocale(String filter)
+    {
+        setFilterString(filter);
+    }
+}

Propchange: tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/LocaleSuggest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/LocaleSuggest.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/LocaleSuggest.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/Border.jwc
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/Border.jwc?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/Border.jwc (original)
+++ tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/Border.jwc Sun Jun  3 11:51:08 2007
@@ -21,11 +21,6 @@
 
 <component-specification allow-informal-parameters="no">
 
-  <component id="tabCell" type="Any">
-  	<binding name="element" value="literal:td"/>
-  	<binding name="background" value="midTabAsset"/>
-  </component>
-
   <component id="pageLink" type="DirectLink">
     <binding name="listener" value="listener:selectPage"/>
     <binding name="parameters" value="pageName"/>

Modified: tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/LocaleList.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/LocaleList.html?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/LocaleList.html (original)
+++ tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/LocaleList.html Sun Jun  3 11:51:08 2007
@@ -31,12 +31,12 @@
 		<tr>
 			<td><span jwcid="controlCheckbox"/></td>
 			<td jwcid="tableColumns"/>
-		</tr>
+        </tr>
 		
 		<tr jwcid="tableFormRows">
 			<td><span jwcid="checkbox"/></td>
 			<td jwcid="tableValues" align="center"/>
-		</tr>
+        </tr>
 	</table>
     
     </span>

Copied: tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/log4j.properties (from r542656, tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/log4j.properties)
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/log4j.properties?view=diff&rev=543957&p1=tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/log4j.properties&r1=542656&p2=tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/log4j.properties&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/context/WEB-INF/log4j.properties (original)
+++ tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/log4j.properties Sun Jun  3 11:51:08 2007
@@ -28,10 +28,6 @@
 log4j.logger.timetracker=DEBUG
 log4j.logger.org.apache.tapestry=INFO
 
-log4j.logger.org.apache.tapestry.timetracker=DEBUG
-log4j.logger.org.apache.tapestry.form=DEBUG
-log4j.logger.org.apache.tapestry.form.FormSupportImpl=DEBUG
-
 #log4j.logger.org.apache.tapestry.services.impl.HiveMindExpressionCompiler=DEBUG
 #log4j.logger.tapestry.services.Asset=DEBUG
 #log4j.logger.tapestry.globals.ResponseBuilder=DEBUG

Modified: tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/web.xml?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/web.xml (original)
+++ tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/context/WEB-INF/web.xml Sun Jun  3 11:51:08 2007
@@ -16,63 +16,63 @@
 -->
 
 <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
- "http://java.sun.com/dtd/web-app_2_3.dtd">
+        "http://java.sun.com/dtd/web-app_2_3.dtd">
 <web-app>
-  <display-name>Tapestry Workbench Example</display-name>
-  
-	<filter>
-		<filter-name>redirect</filter-name>
-		<filter-class>org.apache.tapestry.RedirectFilter</filter-class>
-	</filter>
-	
-	<filter-mapping>
-		<filter-name>redirect</filter-name>
-		<url-pattern>/</url-pattern>
-	</filter-mapping>
-  
-  <servlet>
-  	<servlet-name>workbench</servlet-name>
-    <servlet-class>org.apache.tapestry.ApplicationServlet</servlet-class>
-  	<load-on-startup>0</load-on-startup>
-  </servlet>
-     
-  <servlet-mapping>
-  	<servlet-name>workbench</servlet-name>
-  	<url-pattern>/app</url-pattern>
-  </servlet-mapping>  
-  
-  <servlet-mapping>
-    <servlet-name>workbench</servlet-name>
-    <url-pattern>*.page</url-pattern>
-  </servlet-mapping>
-  
-  <servlet-mapping>
-    <servlet-name>workbench</servlet-name>
-    <url-pattern>*.external</url-pattern>
-  </servlet-mapping>
-    
-  <servlet-mapping>
-    <servlet-name>workbench</servlet-name>
-    <url-pattern>*.direct</url-pattern>
-  </servlet-mapping>
-  
-  <servlet-mapping>
-    <servlet-name>workbench</servlet-name>
-    <url-pattern>*.sdirect</url-pattern>
-  </servlet-mapping>  
-  
-  <servlet-mapping>
-    <servlet-name>workbench</servlet-name>
-    <url-pattern>*.svc</url-pattern>
-  </servlet-mapping>
-  
-  <servlet-mapping>
-    <servlet-name>workbench</servlet-name>
-    <url-pattern>/assets/*</url-pattern>
-  </servlet-mapping>
-
-  <session-config>
-  	<session-timeout>15</session-timeout>
-  </session-config>
-  
+    <display-name>Tapestry Workbench Example</display-name>
+
+    <filter>
+        <filter-name>redirect</filter-name>
+        <filter-class>org.apache.tapestry.RedirectFilter</filter-class>
+    </filter>
+
+    <filter-mapping>
+        <filter-name>redirect</filter-name>
+        <url-pattern>/</url-pattern>
+    </filter-mapping>
+
+    <servlet>
+        <servlet-name>workbench</servlet-name>
+        <servlet-class>org.apache.tapestry.workbench.ConfigurationServlet</servlet-class>
+        <load-on-startup>0</load-on-startup>
+    </servlet>
+
+    <servlet-mapping>
+        <servlet-name>workbench</servlet-name>
+        <url-pattern>/app</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>workbench</servlet-name>
+        <url-pattern>*.page</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>workbench</servlet-name>
+        <url-pattern>*.external</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>workbench</servlet-name>
+        <url-pattern>*.direct</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>workbench</servlet-name>
+        <url-pattern>*.sdirect</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>workbench</servlet-name>
+        <url-pattern>*.svc</url-pattern>
+    </servlet-mapping>
+
+    <servlet-mapping>
+        <servlet-name>workbench</servlet-name>
+        <url-pattern>/assets/*</url-pattern>
+    </servlet-mapping>
+
+    <session-config>
+        <session-timeout>15</session-timeout>
+    </session-config>
+
 </web-app>

Copied: tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/ConfigurationServlet.java (from r542656, tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/servlet/ConfigurationServlet.java)
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/ConfigurationServlet.java?view=diff&rev=543957&p1=tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/servlet/ConfigurationServlet.java&r1=542656&p2=tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/ConfigurationServlet.java&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/TimeTracker/src/java/org/apache/tapestry/timetracker/servlet/ConfigurationServlet.java (original)
+++ tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/ConfigurationServlet.java Sun Jun  3 11:51:08 2007
@@ -11,21 +11,21 @@
 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 // See the License for the specific language governing permissions and
 // limitations under the License.
-package org.apache.tapestry.timetracker.servlet;
-
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
+package org.apache.tapestry.workbench;
 
 import org.apache.log4j.PropertyConfigurator;
 import org.apache.tapestry.ApplicationServlet;
 
+import javax.servlet.ServletContextEvent;
+import javax.servlet.ServletContextListener;
+
 /**
  * Used to configure logging.
- * 
+ *
  * @author jkuhnert
  */
 public class ConfigurationServlet extends ApplicationServlet implements ServletContextListener {
-    
+
     /**
      * generated.
      */
@@ -37,8 +37,7 @@
     public void init() {
         try {
             // Use basic logging configuration until Log4j is properly configured
-            PropertyConfigurator.configure(getServletContext().getRealPath("/")
-                    + "/WEB-INF/log4j.properties");
+            PropertyConfigurator.configure(getServletContext().getRealPath("/") + "/WEB-INF/log4j.properties");
             super.init();
         } catch (Throwable t) {
             t.printStackTrace();
@@ -62,10 +61,10 @@
         org.apache.log4j.LogManager.shutdown();
     }
 
-    /** 
+    /**
      * {@inheritDoc}
      */
     public void contextInitialized(ServletContextEvent arg0)
     {
     }
-}
+}
\ No newline at end of file

Modified: tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/table/LocaleList.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/table/LocaleList.java?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/table/LocaleList.java (original)
+++ tapestry/tapestry4/trunk/tapestry-examples/Workbench/src/java/org/apache/tapestry/workbench/table/LocaleList.java Sun Jun  3 11:51:08 2007
@@ -14,16 +14,16 @@
 
 package org.apache.tapestry.workbench.table;
 
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Set;
-import java.util.StringTokenizer;
-
 import org.apache.tapestry.BaseComponent;
 import org.apache.tapestry.IRequestCycle;
 import org.apache.tapestry.annotations.Parameter;
 import org.apache.tapestry.contrib.table.model.IPrimaryKeyConvertor;
 
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Set;
+import java.util.StringTokenizer;
+
 /**
  * @author mindbridge
  */
@@ -70,7 +70,7 @@
 
     @Parameter(required = true)
     public abstract ILocaleSelectionListener getLocaleSelectionListener();
-    
+
     public IPrimaryKeyConvertor getLocaleConvertor()
     {
         return m_objLocaleConvertor;

Modified: tapestry/tapestry4/trunk/tapestry-framework/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/pom.xml?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/pom.xml (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/pom.xml Sun Jun  3 11:51:08 2007
@@ -157,6 +157,13 @@
                 <targetPath>dojo-0.4.3</targetPath>
             </resource>
             <resource>
+                <directory>src/js/scriptaculous-1.7.1/</directory>
+                <includes>
+                    <include>**/*</include>
+                </includes>
+                <targetPath>scriptaculous-1.7.1</targetPath>
+            </resource>
+            <resource>
                 <directory>src/js/tapestry</directory>
                 <includes>
                     <include>**/*</include>

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/descriptor/META-INF/tapestry.asset.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/descriptor/META-INF/tapestry.asset.xml?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/descriptor/META-INF/tapestry.asset.xml (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/descriptor/META-INF/tapestry.asset.xml Sun Jun  3 11:51:08 2007
@@ -179,6 +179,7 @@
         <unprotected-resource contains="^/org/apache/tapestry/.*.html" />
 
         <unprotected-resource contains="^/dojo.*/" />
+        <unprotected-resource contains="^/scriptaculous.*/" />
     </contribution>
 
     <service-point id="UnprotectedResourceMatcher" interface="ResourceMatcher" >

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/descriptor/META-INF/tapestry.services.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/descriptor/META-INF/tapestry.services.xml?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/descriptor/META-INF/tapestry.services.xml (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/descriptor/META-INF/tapestry.services.xml Sun Jun  3 11:51:08 2007
@@ -255,13 +255,30 @@
             </construct>
         </invoke-factory>
     </service-point>
-    
+
+    <service-point id="PrototypeResponseContributor" interface="org.apache.tapestry.services.ResponseContributor">
+
+        Contributor responsible for sniffing out and building an appropriate ResponseBuilder object for handling
+        prototype javascript XHR requests.
+
+        <invoke-factory>
+            <construct class="org.apache.tapestry.services.impl.PrototypeResponseContributorImpl" >
+                <set-service property="localeManager" service-id="tapestry.request.RequestLocaleManager"/>
+                <set-object property="markupWriterSource"  value="infrastructure:markupWriterSource"/>
+                <set-object property="webResponse" value="infrastructure:response"/>
+                <set-object property="webRequest" value="infrastructure:request"/>
+                <set-object property="assetFactory" value="infrastructure:assetFactory" />
+            </construct>
+        </invoke-factory>
+    </service-point>
+
     <contribution configuration-id="ResponseContributors">
         Order of addition is very important here, contributors may claim a particular response as
         belonging to a certain protocol, so no guarantees are made as to the
         friendlyness/compatibility between various implementations.
         <invoker object="service:JSONResponseContributor" />
         <invoker object="service:DojoAjaxResponseContributor" />
+        <invoker object="service:PrototypeResponseContributor" />
         <invoker object="service:DefaultResponseContributor" />
     </contribution>
 

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/Framework.library
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/Framework.library?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/Framework.library (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/Framework.library Sun Jun  3 11:51:08 2007
@@ -79,6 +79,7 @@
     <component-type type="Shell" specification-path="html/Shell.jwc"/>
 	<component-type type="Style" specification-path="html/Style.jwc"/>
     <component-type type="Submit" specification-path="form/Submit.jwc"/>
+    <component-type type="Suggest" specification-path="scriptaculous/Suggest.jwc" />
     <component-type type="TextArea" specification-path="form/TextArea.jwc"/>
     <component-type type="TextField" specification-path="form/TextField.jwc"/>
     <component-type type="Upload" specification-path="form/Upload.jwc"/>

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/TapestryUtils.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/TapestryUtils.java?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/TapestryUtils.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/TapestryUtils.java Sun Jun  3 11:51:08 2007
@@ -145,8 +145,7 @@
         IForm result = (IForm) cycle.getAttribute(FORM_ATTRIBUTE);
 
         if (result == null)
-            throw new ApplicationRuntimeException(TapestryMessages.noForm(component), component
-                    .getLocation(), null);
+            throw new ApplicationRuntimeException(TapestryMessages.noForm(component), component.getLocation(), null);
 
         return result;
     }

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/engine/DirectServiceParameter.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/engine/DirectServiceParameter.java?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/engine/DirectServiceParameter.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/engine/DirectServiceParameter.java Sun Jun  3 11:51:08 2007
@@ -14,12 +14,12 @@
 
 package org.apache.tapestry.engine;
 
-import java.util.Collection;
-
 import org.apache.hivemind.util.Defense;
 import org.apache.tapestry.IDirect;
 import org.apache.tapestry.IDynamicInvoker;
 
+import java.util.Collection;
+
 /**
  * Parameter object used by {@link org.apache.tapestry.engine.DirectService}.
  * 
@@ -81,7 +81,6 @@
         
         if (!_json && !_async && _updateParts.length > 0)
             _async = true;
-        
     }
     
     public IDirect getDirect()

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/PropertySelection.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/PropertySelection.java?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/PropertySelection.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/PropertySelection.java Sun Jun  3 11:51:08 2007
@@ -33,16 +33,13 @@
  * {@link IPropertySelectionModel} to provide the list of possible values.
  * <p>
  * Often, this is used to select a particular {@link java.lang.Enum} to assign to
- * a property; the {@link EnumPropertySelectionModel} class simplifies this.
+ * a property; the {@link org.apache.tapestry.form.EnumPropertySelectionModel} class simplifies this.
  * <p>
  * Often, a drop-down list will contain an initial option that serves both as a label and to represent 
  * that nothing is selected. This can behavior can easily be achieved by decorating an existing 
  * {@link IPropertySelectionModel} with a {@link LabeledPropertySelectionModel}.
  * <p>
- * As of 4.0, this component can be validated.
  * 
- * @author Howard Lewis Ship
- * @author Paul Ferraro
  */
 public abstract class PropertySelection extends AbstractFormComponent implements ValidatableField
 {   

Modified: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/TextArea.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/TextArea.java?view=diff&rev=543957&r1=543956&r2=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/TextArea.java (original)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/form/TextArea.java Sun Jun  3 11:51:08 2007
@@ -49,7 +49,8 @@
 
         writer.attribute("name", getName());
 
-        if (isDisabled()) writer.attribute("disabled", "disabled");
+        if (isDisabled())
+            writer.attribute("disabled", "disabled");
 
         renderIdAttribute(writer, cycle);
 
@@ -60,7 +61,8 @@
 
         renderInformalParameters(writer, cycle);
 
-        if (value != null) writer.print(value);
+        if (value != null)
+            writer.print(value);
 
         writer.end();
 

Added: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/DefaultListItemRenderer.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/DefaultListItemRenderer.java?view=auto&rev=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/DefaultListItemRenderer.java (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/DefaultListItemRenderer.java Sun Jun  3 11:51:08 2007
@@ -0,0 +1,46 @@
+package org.apache.tapestry.scriptaculous;
+
+import org.apache.tapestry.IMarkupWriter;
+import org.apache.tapestry.IRequestCycle;
+
+import java.util.Iterator;
+
+/**
+ * Default implementation of {@link ListItemRenderer}. Simply displays
+ * the values of each object supplied by invoking toString(). Other more
+ * advanced renderers may add html content to the <code>&lt;li&gt;</code> elements or
+ * similarly advanced UI displays.
+ */
+public class DefaultListItemRenderer implements ListItemRenderer {
+
+    /**
+     * Shared global instance default used by {@link Suggest} when no custom renderer
+     * is specified.
+     */
+    public static final ListItemRenderer SHARED_INSTANCE = new DefaultListItemRenderer();
+
+    /**
+     * {@inheritDoc}
+     */
+    public void renderList(IMarkupWriter writer, IRequestCycle cycle, Iterator values)
+    {
+        if (cycle.isRewinding())
+            return;
+
+        writer.begin("ul");
+        
+        while (values.hasNext())
+        {
+            Object value = values.next();
+            
+            if (value == null)
+                continue;
+
+            writer.begin("li");
+            writer.print(value.toString());
+            writer.end("li");
+        }
+
+        writer.end();
+    }
+}

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/DefaultListItemRenderer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/DefaultListItemRenderer.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/DefaultListItemRenderer.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ListItemRenderer.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ListItemRenderer.java?view=auto&rev=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ListItemRenderer.java (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ListItemRenderer.java Sun Jun  3 11:51:08 2007
@@ -0,0 +1,40 @@
+package org.apache.tapestry.scriptaculous;
+
+import org.apache.tapestry.IMarkupWriter;
+import org.apache.tapestry.IRequestCycle;
+
+import java.util.Iterator;
+
+/**
+ * Renderer used by {@link Suggest} component to render lists usable
+ * by the currently integrated
+ * <a href="http://wiki.script.aculo.us/scriptaculous/show/Ajax.Autocompleter">script.aculo.us</a>
+ * javascript library.
+ *
+ * <p/>This particular library expects the rendered contents of this class to
+ * be an unordered html list.
+ * <p/>
+ * <pre>
+ * <ul>
+ *   <li>Apple</li>
+ *   <li>Apricot</li>
+ * </ul>
+ * </pre>
+ */
+public interface ListItemRenderer {
+
+    /**
+     * Renders an unordered html list to the response, using the specified
+     * collection of values as the contents to fill in the <pre><li></pre> elements
+     * with.
+     * 
+     * @param writer
+     *          Markup writer to write content in to.
+     * @param cycle
+     *          Current request cycle.
+     * @param values
+     *          Values used to render list.
+     */
+    public void renderList(IMarkupWriter writer, IRequestCycle cycle, Iterator values);
+}
+

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ListItemRenderer.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ListItemRenderer.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ListItemRenderer.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ScriptaculousMessages.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ScriptaculousMessages.java?view=auto&rev=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ScriptaculousMessages.java (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ScriptaculousMessages.java Sun Jun  3 11:51:08 2007
@@ -0,0 +1,19 @@
+package org.apache.tapestry.scriptaculous;
+
+import org.apache.hivemind.impl.MessageFormatter;
+
+/**
+ * Error message formatter.
+ */
+public class ScriptaculousMessages {
+
+    private static final MessageFormatter _formatter = new MessageFormatter(ScriptaculousMessages.class);
+
+    // defeat instantiation
+    private ScriptaculousMessages() {}
+
+    public static String invalidOptions(String options, Throwable cause)
+    {
+        return _formatter.format("invalid-options", options, cause);
+    }
+}

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ScriptaculousMessages.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ScriptaculousMessages.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ScriptaculousMessages.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ScriptaculousStrings.properties
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ScriptaculousStrings.properties?view=auto&rev=543957
==============================================================================
--- tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ScriptaculousStrings.properties (added)
+++ tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ScriptaculousStrings.properties Sun Jun  3 11:51:08 2007
@@ -0,0 +1,15 @@
+# Copyright 2007 The Apache Software Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+invalid-options=Invalid JSON options string given: {0}. The options parameter must be properly formatted according to JSON object syntax rules. {1}

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ScriptaculousStrings.properties
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ScriptaculousStrings.properties
------------------------------------------------------------------------------
    svn:keywords = Date Revision

Propchange: tapestry/tapestry4/trunk/tapestry-framework/src/java/org/apache/tapestry/scriptaculous/ScriptaculousStrings.properties
------------------------------------------------------------------------------
    svn:mime-type = text/plain



Mime
View raw message