You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2005/08/25 21:43:06 UTC

cvs commit: jakarta-tapestry/framework/src/test/org/apache/tapestry TestTapestryUtils.java

hlship      2005/08/25 12:43:06

  Modified:    framework/src/java/org/apache/tapestry/form Form.js
                        FormComponentContributorContext.java
                        FormComponentContributorContextImpl.java
                        FormSupportImpl.java FormEventType.java
               .        status.xml
               framework/src/java/org/apache/tapestry/form/translator
                        AbstractTranslator.java NumberTranslator.java
                        NumberTranslator.js
               framework/src/test/org/apache/tapestry/form/validator
                        TestMax.java TestMinLength.java TestRequired.java
                        BaseValidatorTestCase.java TestPattern.java
                        TestMaxLength.java TestMin.java TestEmail.java
               framework/src/java/org/apache/tapestry/form/validator
                        MaxLength.java Email.java Min.java Pattern.java
                        StringValidator.js Required.java RegExValidator.js
                        Max.java MinLength.java NumberValidator.js
               framework/src/test/org/apache/tapestry/form
                        TestValidatableFieldSupportImpl.java
                        TestTranslatedFieldSupportImpl.java
                        TestFormComponentContributorContext.java
                        TestFormSupport.java
                        FormComponentContributorTestCase.java
               framework/src/java/org/apache/tapestry TapestryUtils.java
               framework/src/test/org/apache/tapestry/form/translator
                        TestStringTranslator.java TestNumberTranslator.java
                        TestDateTranslator.java
               framework/src/test/org/apache/tapestry
                        TestTapestryUtils.java
  Log:
  TAPESTRY-592: Optimize generated JavaScript to reduce the verbosity
  
  Revision  Changes    Path
  1.11      +98 -43    jakarta-tapestry/framework/src/java/org/apache/tapestry/form/Form.js
  
  Index: Form.js
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/Form.js,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- Form.js	23 Aug 2005 23:21:21 -0000	1.10
  +++ Form.js	25 Aug 2005 19:43:04 -0000	1.11
  @@ -16,11 +16,8 @@
   
   var Tapestry = new Object();
   
  -function default_invalid_field_handler(event, field, message)
  +Tapestry.default_invalid_field_handler = function(event, field, message)
   {
  -  // Temporary, while all the event logic is getting munged together
  -  // inside one big handler.
  -  
     if (!event.abort && !field.disabled)
     {
       Tapestry.set_focus(field);
  @@ -28,12 +25,69 @@
       window.alert(message);
       
       event.abort = true;
  -    event.cancelListeners = true;
  +    event.cancel_handlers = true;
     }
   }
   
  +Tapestry.find = function(elementId)
  +{
  +  return document.getElementById(elementId);
  +}
  +
  +Tapestry.register_form = function(formId)
  +{
  +  var form = this.find(formId);
  +  
  +  form.events = new FormEventManager(form);
  +}
  +
  +Tapestry.onpresubmit = function(formId, handler)
  +{
  +  var form = this.find(formId);
  +  
  +  form.events.add_presubmit_handler(handler);
  +}
  +
  +Tapestry.onsubmit = function(formId, handler)
  +{
  +  var form = this.find(formId);
  +  
  +  form.events.add_submit_handler(handler);
  +}
  +
  +Tapestry.onpostsubmit = function(formId, handler)
  +{
  +  var form = this.find(formId);
  +  
  +  form.events.add_postsubmit_handler(handler);
  +}
  +
  +Tapestry.onreset = function(formId, handler)
  +{
  +  var form = this.find(formId);
  +  
  +  form.events.add_reset_handler(handler);
  +}
  +
  +Tapestry.onrefresh  = function(formId, handler)
  +{
  +  var form = this.find(formId);
  +  
  +  form.events.add_refresh_handler(handler);
  +}
  +
  +Tapestry.oncancel = function(formId, handler)
  +{
  +  var form = this.find(formId);
  +  
  +  form.events.add_cancel_handler(handler);
  +}
  +
   Tapestry.set_focus = function (field)
   {
  +	if (typeof field == "string")
  +	  field = this.find(field);
  +	  
   	if (field.focus)
   		field.focus();
       
  @@ -41,13 +95,17 @@
           field.select();
   }
   
  -Tapestry.trim_field_value = function(field)
  +Tapestry.trim_field_value = function(fieldId)
   {
  +	var field = this.find(fieldId);
  +	
   	field.value = field.value.replace(/^\s+/g, '').replace(/\s+$/g, '');
   }
   
  -Tapestry.require_field = function(event, field, message)
  +Tapestry.require_field = function(event, fieldId, message)
   {
  +    var field = this.find(fieldId);
  +    
       if (field.value.length == 0)
         event.invalid_field(field, message);
   }
  @@ -60,7 +118,7 @@
   // A listener may set the abort flag to true, which will prevent
   // the Form submit or reset from occuring, but will not prevent
   // other listeners from being invoked.  A listener may also set the
  -// cancelListeners flag, which will prevent further listeners from being 
  +// cancel_handlers flag, which will prevent further listeners from being 
   // invoked.
   // The invalid_field_handler is provided (by the FormEventManager)
   // to handle any invalid fields.
  @@ -70,7 +128,7 @@
     this.form = form;
     this.type = type;
     this.abort = false;
  -  this.cancelListeners = false;
  +  this.cancel_handlers = false;
     this.invalid_field_handler = invalid_field_handler;
   }
   
  @@ -93,9 +151,6 @@
   function FormEventManager(form)
   {
     this.form = form;
  -  
  -  // Add an events property to the form
  -  form.events = this;
      
     // Key is handler type ("submit", "refresh", "reset" or "cancel"), value
     // is an array of functions.
  @@ -113,15 +168,15 @@
     // The function should take three parameters:
     // the FormSubmitEvent, the field object, and the message
     
  -  this.invalid_field_handler = default_invalid_field_handler;
  +  this.invalid_field_handler = Tapestry.default_invalid_field_handler;
   }
   
  -// addListener(type, handler)
  +// add_handler(type, handler)
   //
   // type -- the handler type to add ("submit", "refresh", "reset" or "cancel"
   // handler -- a function to execute
   
  -FormEventManager.prototype.addListener = function(type, handler)
  +FormEventManager.prototype.add_handler = function(type, handler)
   {
     var array = this.handlers[type];
     if (array == null)
  @@ -133,14 +188,14 @@
     array.push(handler);
   }
   
  -// invokeListeners(type, eventObject)
  +// invoke_handlers(type, eventObject)
   //
   // type -- the type of handler to execute
  -// eventObject -- passed to the handler function
  +// eventObj -- passed to the handler function
   
  -FormEventManager.prototype.invokeListeners = function(type, eventObj)
  +FormEventManager.prototype.invoke_handlers = function(type, eventObj)
   {
  -  if (eventObj.cancelListeners) return;
  +  if (eventObj.cancel_handlers) return;
     
     var array = this.handlers[type];
      
  @@ -152,7 +207,7 @@
       var handler = array[i];
       handler.call(window, eventObj);
       
  -    if (eventObj.cancelListeners) return;
  +    if (eventObj.cancel_handlers) return;
     }
   }
   
  @@ -162,7 +217,7 @@
   
   FormEventManager.prototype.addCancelListener= function(handler)
   {
  -  this.addListener("cancel", handler);
  +  this.add_handler("cancel", handler);
   }
   
   // cancel()
  @@ -174,7 +229,7 @@
   {
   	var event = new FormSubmitEvent(this.form, "cancel", this.invalid_field_handler);
   	
  -	this.invokeListeners("cancel", event);
  +	this.invoke_handlers("cancel", event);
   	
   	if (event.abort == false)
   	{
  @@ -184,7 +239,7 @@
   	}
   }
   
  -// addPreSubmitListener(handler)
  +// add_presubmit_handler(handler)
   //
   // Typically used to setup state prior to the submit handlers being invoked.
   // Pre-submit listeners are invoked before submit handlers are invoked.  If
  @@ -195,12 +250,12 @@
   // form - the Form object for which a listener is added
   // handler - recieves notification when the form is submitted
   
  -FormEventManager.prototype.addPreSubmitListener = function(handler)
  +FormEventManager.prototype.add_presubmit_handler = function(handler)
   {
  -  this.addListener("presubmit", handler);
  +  this.add_handler("presubmit", handler);
   }
   
  -// addSubmitListener(handler)
  +// add_submit_handler(handler)
   //
   // Typically used for input validations; normal submit listeners are skipped when
   // a form is submitted to refresh some of its values.  If a handler sets
  @@ -210,21 +265,21 @@
   // form - the Form object for which a listener is added
   // handler - receives notifications when the form is submitted
   
  -FormEventManager.prototype.addSubmitListener = function(handler)
  +FormEventManager.prototype.add_submit_handler = function(handler)
   {
  -  this.addListener("submit", handler);
  +  this.add_handler("submit", handler);
   }
   
  -// addPostSubmitListener(handler)
  +// add_postsubmit_handler(handler)
   // 
   // Used to perform final cleanup after all submit listeners have been invoked.
   //
   // form - the Form object for which a listener is added
   // handler - receives notifications when the form is submitted
   
  -FormEventManager.prototype.addPostSubmitListener = function(handler)
  +FormEventManager.prototype.add_postsubmit_handler = function(handler)
   {
  -  this.addListener("postsubmit", handler);
  +  this.add_handler("postsubmit", handler);
   }
   
   // submit()
  @@ -240,9 +295,9 @@
   {
   	var event = new FormSubmitEvent(this.form, "submit", this.invalid_field_handler);
   
  -    this.invokeListeners("presubmit", event);
  -	this.invokeListeners("submit", event);	
  -	this.invokeListeners("postsubmit", event);
  +    this.invoke_handlers("presubmit", event);
  +	this.invoke_handlers("submit", event);	
  +	this.invoke_handlers("postsubmit", event);
   		
   	if (event.abort)
         return false;
  @@ -252,7 +307,7 @@
   	return true;
   }
   
  -// addRefreshListener(handler)
  +// add_refresh_handler(handler)
   //
   // Used for a limited number of situations where some logic is necessary even
   // when a form is submitted for refresh.  Normal submit listeners are skipped, but
  @@ -261,10 +316,10 @@
   //
   // handler - receives notifications when the form is submitted (normally, or for refresh)
   
  -FormEventManager.prototype.addRefreshListener = function(handler)
  +FormEventManager.prototype.add_refresh_handler = function(handler)
   {
  -  this.addListener("submit", handler);
  -  this.addListener("refresh", handler);
  +  this.add_handler("submit", handler);
  +  this.add_handler("refresh", handler);
   }
   
   // refresh()
  @@ -278,7 +333,7 @@
   {
   	var event = new FormSubmitEvent(this.form, "refresh", this.invalid_field_handler);
   	
  -	this.invokeListeners("refresh", event);
  +	this.invoke_handlers("refresh", event);
   	
   	if (event.abort)
   	  return;
  @@ -288,15 +343,15 @@
   	this.form.submit();
   }
   
  -// addResetListener(handler)
  +// add_reset_handler(handler)
   //
   // Allow for special behavior when a form is reset, intended as the
   // form's onreset .  Listeners are invoked
   // before the form is reset.
   
  -FormEventManager.prototype.addResetListener = function(handler)
  +FormEventManager.prototype.add_reset_handler = function(handler)
   {
  -  this.addListener("reset", handler);
  +  this.add_handler("reset", handler);
   }
   
   // reset()
  @@ -309,7 +364,7 @@
   {
     var event = new FormSubmitEvent(this.form, "reset", this.invalid_field_handler);
     
  -  this.invokeListeners("reset", event);
  +  this.invoke_handlers("reset", event);
     
     return ! event.abort;
   }
  
  
  
  1.4       +2 -2      jakarta-tapestry/framework/src/java/org/apache/tapestry/form/FormComponentContributorContext.java
  
  Index: FormComponentContributorContext.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/FormComponentContributorContext.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FormComponentContributorContext.java	21 Jul 2005 13:17:55 -0000	1.3
  +++ FormComponentContributorContext.java	25 Aug 2005 19:43:04 -0000	1.4
  @@ -43,7 +43,7 @@
       public void includeClasspathScript(String path);
   
       /**
  -     * Adds initialization to register a submitListener on the client side. A submitListener is a
  +     * Adds initialization to register a submit handler on the client side. A submit handler is a
        * JavaScript method that accepts a single parameter, a (JavaScript) FormSubmitEvent.
        * 
        * @param submitListener
  @@ -51,7 +51,7 @@
        *            of a listener function ("function(event) { ... } ").
        */
   
  -    public void addSubmitListener(String submitListener);
  +    public void addSubmitHandler(String handler);
   
       /**
        * Registers a field for automatic focus. The goal is for the first field that is in error to
  
  
  
  1.4       +7 -7      jakarta-tapestry/framework/src/java/org/apache/tapestry/form/FormComponentContributorContextImpl.java
  
  Index: FormComponentContributorContextImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/FormComponentContributorContextImpl.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- FormComponentContributorContextImpl.java	2 Aug 2005 14:59:41 -0000	1.3
  +++ FormComponentContributorContextImpl.java	25 Aug 2005 19:43:04 -0000	1.4
  @@ -35,8 +35,6 @@
   {
       private final ClassResolver _resolver;
   
  -    private final String _formDOM;
  -
       private final String _fieldDOM;
   
       private final PageRenderSupport _pageRenderSupport;
  @@ -45,6 +43,8 @@
   
       private final IForm _form;
   
  +    private final String _formId;
  +
       /**
        * Used for testing.
        */
  @@ -55,7 +55,7 @@
   
           _field = field;
           _resolver = null;
  -        _formDOM = null;
  +        _formId = null;
           _fieldDOM = null;
           _pageRenderSupport = null;
           _form = null;
  @@ -68,11 +68,11 @@
   
           _field = field;
           _form = field.getForm();
  +        _formId = _form.getName();
   
           _resolver = cycle.getInfrastructure().getClassResolver();
   
  -        _formDOM = "document." + _form.getName();
  -        _fieldDOM = _formDOM + "." + field.getName();
  +        _fieldDOM = "Tapestry.find('" + field.getClientId() + "')";
   
           _pageRenderSupport = TapestryUtils.getPageRenderSupport(cycle, field);
       }
  @@ -89,9 +89,9 @@
           _pageRenderSupport.addExternalScript(resource);
       }
   
  -    public void addSubmitListener(String submitListener)
  +    public void addSubmitHandler(String submitListener)
       {
  -        _pageRenderSupport.addInitializationScript(_formDOM + ".events.addSubmitListener("
  +        _pageRenderSupport.addInitializationScript("Tapestry.onsubmit('" + _formId + "', "
                   + submitListener + ");");
       }
   
  
  
  
  1.13      +7 -11     jakarta-tapestry/framework/src/java/org/apache/tapestry/form/FormSupportImpl.java
  
  Index: FormSupportImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/FormSupportImpl.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- FormSupportImpl.java	24 Aug 2005 14:45:33 -0000	1.12
  +++ FormSupportImpl.java	25 Aug 2005 19:43:04 -0000	1.13
  @@ -301,13 +301,11 @@
               FormEventType type = (FormEventType) entry.getKey();
               Object value = entry.getValue();
   
  -            buffer.append(TapestryUtils.buildClientElementReference(formId));
  -            buffer.append(".events.");
  -            buffer.append(type.getAddListenerMethodName());
  -
  -            // Build a composite function in-place
  -
  -            buffer.append("(function (event)\n{");
  +            buffer.append("Tapestry.");
  +            buffer.append(type.getAddHandlerFunctionName());
  +            buffer.append("('");
  +            buffer.append(formId);
  +            buffer.append("', function (event)\n{");
   
               List l = (List) value;
               int count = l.size();
  @@ -510,8 +508,7 @@
           if (!_form.getFocus() || _cycle.getAttribute(FIELD_FOCUS_ATTRIBUTE) != null)
               return;
   
  -        _pageRenderSupport.addInitializationScript("Tapestry.set_focus("
  -                + TapestryUtils.buildClientElementReference(fieldId) + ");");
  +        _pageRenderSupport.addInitializationScript("Tapestry.set_focus('" + fieldId + "');");
   
           _cycle.setAttribute(FIELD_FOCUS_ATTRIBUTE, Boolean.TRUE);
       }
  @@ -527,8 +524,7 @@
   
           _pageRenderSupport.addExternalScript(_script);
   
  -        _pageRenderSupport.addInitializationScript("new FormEventManager("
  -                + TapestryUtils.buildClientElementReference(formId) + ");");
  +        _pageRenderSupport.addInitializationScript("Tapestry.register_form('" + formId + "');");
       }
   
       public String rewind()
  
  
  
  1.6       +12 -10    jakarta-tapestry/framework/src/java/org/apache/tapestry/form/FormEventType.java
  
  Index: FormEventType.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/FormEventType.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- FormEventType.java	16 Jun 2005 18:27:11 -0000	1.5
  +++ FormEventType.java	25 Aug 2005 19:43:04 -0000	1.6
  @@ -20,7 +20,8 @@
    * 
    * @author Howard Lewis Ship
    * @since 1.0.2
  - * @deprecated Managing of form events is now done on the client side; this class may be removed in a future release of Tapestry.
  + * @deprecated Managing of form events is now done on the client side; this class may be removed in
  + *             a future release of Tapestry.
    */
   
   public class FormEventType
  @@ -33,23 +34,23 @@
        * are multiple event handlers for the form they will be combined using the binary and operator (<code>&amp;&amp;</code>).
        */
   
  -    public static final FormEventType SUBMIT = new FormEventType("SUBMIT", "addSubmitListener");
  +    public static final FormEventType SUBMIT = new FormEventType("SUBMIT", "onsubmit");
   
       /**
        * Form event triggered when the form is reset; this allows an event handler to deal with any
        * special cases related to resetting.
        */
   
  -    public static final FormEventType RESET = new FormEventType("RESET", "addResetListener");
  +    public static final FormEventType RESET = new FormEventType("RESET", "onreset");
   
       private final String _name;
   
  -    private final String _addListenerMethodName;
  +    private final String _addHandlerFunctionName;
   
  -    private FormEventType(String name, String addListenerMethodName)
  +    private FormEventType(String name, String addHandlerFunctionName)
       {
           _name = name;
  -        _addListenerMethodName = addListenerMethodName;
  +        _addHandlerFunctionName = addHandlerFunctionName;
       }
   
       public String toString()
  @@ -58,12 +59,13 @@
       }
   
       /**
  -     * Returns the DOM property corresponding to event type (used when generating client-side
  -     * scripting).
  +     * Returns the name of the function, on the Tapestry object (see Form.js), which should be
  +     * invoked. The first parameter will be the id of the form, the second will be the handler
  +     * itself.
        */
   
  -    public String getAddListenerMethodName()
  +    public String getAddHandlerFunctionName()
       {
  -        return _addListenerMethodName;
  +        return _addHandlerFunctionName;
       }
   }
  \ No newline at end of file
  
  
  
  1.228     +1 -0      jakarta-tapestry/status.xml
  
  Index: status.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/status.xml,v
  retrieving revision 1.227
  retrieving revision 1.228
  diff -u -r1.227 -r1.228
  --- status.xml	24 Aug 2005 15:32:05 -0000	1.227
  +++ status.xml	25 Aug 2005 19:43:04 -0000	1.228
  @@ -78,6 +78,7 @@
         <action type="fix" dev="HLS" fixes-bug="TAPESTRY-222">IE Error in DataPicker.js</action>
         <action type="fix" dev="PF" fixes-bug="TAPESTRY-586">Do not bind form component values unless all validators succeed.</action>
         <action type="fix" dev="HLS" fixes-bug="TAPESTRY-588">Including the tapestry-portlet jar in the classpath for a servlet application causes exceptions</action>
  +      <action type="fix" dev="HLS" fixes-bug="TAPESTRY-592">Optimize generated JavaScript to reduce the verbosity</action>    
       </release>
       <release version="4.0-beta-4" date="Aug 10 2005">
         <action type="fix" dev="HLS">Add getComponent() method to IComponent.</action>
  
  
  
  1.7       +1 -1      jakarta-tapestry/framework/src/java/org/apache/tapestry/form/translator/AbstractTranslator.java
  
  Index: AbstractTranslator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/translator/AbstractTranslator.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- AbstractTranslator.java	19 Aug 2005 13:28:16 -0000	1.6
  +++ AbstractTranslator.java	25 Aug 2005 19:43:04 -0000	1.7
  @@ -108,7 +108,7 @@
           super.renderContribution(writer, cycle, context, field);
   
           if (_trim)
  -            context.addSubmitListener("function (event) { Tapestry.trim_field_value(" + context.getFieldDOM() + "); }");
  +            context.addSubmitHandler("function (event) { Tapestry.trim_field_value('" + field.getClientId() + "'); }");
       }
   
       public boolean isTrim()
  
  
  
  1.11      +2 -2      jakarta-tapestry/framework/src/java/org/apache/tapestry/form/translator/NumberTranslator.java
  
  Index: NumberTranslator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/translator/NumberTranslator.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- NumberTranslator.java	19 Aug 2005 15:46:59 -0000	1.10
  +++ NumberTranslator.java	25 Aug 2005 19:43:04 -0000	1.11
  @@ -123,8 +123,8 @@
   
           String message = TapestryUtils.enquote(buildMessage(context, field, getMessageKey()));
   
  -        context.addSubmitListener("function(event) { Tapestry.validate_number(event, "
  -                + context.getFieldDOM() + ", " + message + "); }");
  +        context.addSubmitHandler("function(event) { Tapestry.validate_number(event, '"
  +                + field.getClientId() + "', " + message + "); }");
       }
   
       /**
  
  
  
  1.5       +3 -1      jakarta-tapestry/framework/src/java/org/apache/tapestry/form/translator/NumberTranslator.js
  
  Index: NumberTranslator.js
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/translator/NumberTranslator.js,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- NumberTranslator.js	19 Aug 2005 13:58:38 -0000	1.4
  +++ NumberTranslator.js	25 Aug 2005 19:43:04 -0000	1.5
  @@ -12,8 +12,10 @@
   // See the License for the specific language governing permissions and
   // limitations under the License.
   
  -Tapestry.validate_number = function(event, field, message)
  +Tapestry.validate_number = function(event, fieldId, message)
   {
  +	var field = this.find(fieldId);
  +	
   	if (field.value == "") return;
   	
   	if (isNaN(field.value))
  
  
  
  1.4       +4 -10     jakarta-tapestry/framework/src/test/org/apache/tapestry/form/validator/TestMax.java
  
  Index: TestMax.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/form/validator/TestMax.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestMax.java	19 Aug 2005 13:28:16 -0000	1.3
  +++ TestMax.java	25 Aug 2005 19:43:05 -0000	1.4
  @@ -97,7 +97,7 @@
       {
           IMarkupWriter writer = newWriter();
           IRequestCycle cycle = newCycle();
  -        IFormComponent field = newField("My Field");
  +        IFormComponent field = newField("My Field", "myfield");
           MockControl contextc = newControl(FormComponentContributorContext.class);
           FormComponentContributorContext context = (FormComponentContributorContext) contextc
                   .getMock();
  @@ -107,11 +107,8 @@
           trainFormatMessage(contextc, context, null, ValidationStrings.VALUE_TOO_LARGE, new Object[]
           { "My Field", new Double(20) }, "default message");
   
  -        context.getFieldDOM();
  -        contextc.setReturnValue("document.myform.myfield");
  -
           context
  -                .addSubmitListener("function(event) { Tapestry.validate_max_number(event, document.myform.myfield, 20.0, 'default message'); }");
  +                .addSubmitHandler("function(event) { Tapestry.validate_max_number(event, 'myfield', 20.0, 'default message'); }");
   
           replayControls();
   
  @@ -124,7 +121,7 @@
       {
           IMarkupWriter writer = newWriter();
           IRequestCycle cycle = newCycle();
  -        IFormComponent field = newField("My Field");
  +        IFormComponent field = newField("My Field", "myfield");
           MockControl contextc = newControl(FormComponentContributorContext.class);
           FormComponentContributorContext context = (FormComponentContributorContext) contextc
                   .getMock();
  @@ -140,11 +137,8 @@
                   { "My Field", new Double(20) },
                   "custom\\message");
   
  -        context.getFieldDOM();
  -        contextc.setReturnValue("document.myform.myfield");
  -
           context
  -                .addSubmitListener("function(event) { Tapestry.validate_max_number(event, document.myform.myfield, 20.0, 'custom\\\\message'); }");
  +                .addSubmitHandler("function(event) { Tapestry.validate_max_number(event, 'myfield', 20.0, 'custom\\\\message'); }");
   
           replayControls();
   
  
  
  
  1.6       +4 -10     jakarta-tapestry/framework/src/test/org/apache/tapestry/form/validator/TestMinLength.java
  
  Index: TestMinLength.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/form/validator/TestMinLength.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- TestMinLength.java	19 Aug 2005 13:28:16 -0000	1.5
  +++ TestMinLength.java	25 Aug 2005 19:43:05 -0000	1.6
  @@ -96,21 +96,18 @@
       {
           IMarkupWriter writer = newWriter();
           IRequestCycle cycle = newCycle();
  -        IFormComponent field = newField("My Field");
  +        IFormComponent field = newField("My Field", "myfield");
           MockControl contextc = newControl(FormComponentContributorContext.class);
           FormComponentContributorContext context = (FormComponentContributorContext) contextc
                   .getMock();
   
           context.includeClasspathScript("/org/apache/tapestry/form/validator/StringValidator.js");
   
  -        context.getFieldDOM();
  -        contextc.setReturnValue("document.myform.myfield");
  -
           trainFormatMessage(contextc, context, null, ValidationStrings.VALUE_TOO_SHORT, new Object[]
           { new Integer(20), "My Field" }, "default message");
   
           context
  -                .addSubmitListener("function(event) { Tapestry.validate_min_length(event, document.myform.myfield, 20, 'default message'); }");
  +                .addSubmitHandler("function(event) { Tapestry.validate_min_length(event, 'myfield', 20, 'default message'); }");
   
           replayControls();
   
  @@ -123,16 +120,13 @@
       {
           IMarkupWriter writer = newWriter();
           IRequestCycle cycle = newCycle();
  -        IFormComponent field = newField("My Field");
  +        IFormComponent field = newField("My Field", "customField");
           MockControl contextc = newControl(FormComponentContributorContext.class);
           FormComponentContributorContext context = (FormComponentContributorContext) contextc
                   .getMock();
   
           context.includeClasspathScript("/org/apache/tapestry/form/validator/StringValidator.js");
   
  -        context.getFieldDOM();
  -        contextc.setReturnValue("document.myform.myfield");
  -
           trainFormatMessage(
                   contextc,
                   context,
  @@ -143,7 +137,7 @@
                   "custom\\message");
   
           context
  -                .addSubmitListener("function(event) { Tapestry.validate_min_length(event, document.myform.myfield, 25, 'custom\\\\message'); }");
  +                .addSubmitHandler("function(event) { Tapestry.validate_min_length(event, 'customField', 25, 'custom\\\\message'); }");
   
           replayControls();
   
  
  
  
  1.9       +2 -5      jakarta-tapestry/framework/src/test/org/apache/tapestry/form/validator/TestRequired.java
  
  Index: TestRequired.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/form/validator/TestRequired.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- TestRequired.java	19 Aug 2005 13:28:16 -0000	1.8
  +++ TestRequired.java	25 Aug 2005 19:43:05 -0000	1.9
  @@ -162,13 +162,10 @@
           FormComponentContributorContext context = (FormComponentContributorContext) contextc
                   .getMock();
   
  -        IFormComponent field = newField("Fred");
  +        IFormComponent field = newField("Fred", "fred");
   
           context.registerForFocus(ValidationConstants.REQUIRED_FIELD);
   
  -        context.getFieldDOM();
  -        contextc.setReturnValue("document.fred.barney");
  -
           trainFormatMessage(
                   contextc,
                   context,
  @@ -179,7 +176,7 @@
                   "Default\\Message for Fred.");
   
           context
  -                .addSubmitListener("function(event) { Tapestry.require_field(event, document.fred.barney, 'Default\\\\Message for Fred.'); }");
  +                .addSubmitHandler("function(event) { Tapestry.require_field(event, 'fred', 'Default\\\\Message for Fred.'); }");
   
           replayControls();
   
  
  
  
  1.4       +22 -4     jakarta-tapestry/framework/src/test/org/apache/tapestry/form/validator/BaseValidatorTestCase.java
  
  Index: BaseValidatorTestCase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/form/validator/BaseValidatorTestCase.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- BaseValidatorTestCase.java	18 Jun 2005 19:56:26 -0000	1.3
  +++ BaseValidatorTestCase.java	25 Aug 2005 19:43:05 -0000	1.4
  @@ -39,6 +39,22 @@
           return field;
       }
   
  +    protected IFormComponent newField(String displayName, String clientId)
  +    {
  +        MockControl control = MockControl.createNiceControl(IFormComponent.class);
  +        addControl(control);
  +        
  +        IFormComponent field = (IFormComponent) control.getMock();
  +
  +        field.getClientId();
  +        control.setReturnValue(clientId);
  +
  +        field.getDisplayName();
  +        control.setReturnValue(displayName);
  +        
  +        return field;
  +    }
  +
       protected IFormComponent newField()
       {
           return (IFormComponent) newMock(IFormComponent.class);
  @@ -49,17 +65,19 @@
           return (ValidationMessages) newMock(ValidationMessages.class);
       }
   
  -    protected ValidationMessages newMessages(String messageOverride, String messageKey, Object[] parameters, String result)
  +    protected ValidationMessages newMessages(String messageOverride, String messageKey,
  +            Object[] parameters, String result)
       {
           MockControl control = newControl(ValidationMessages.class);
           ValidationMessages messages = (ValidationMessages) control.getMock();
  -    
  +
           trainFormatMessage(control, messages, messageOverride, messageKey, parameters, result);
  -    
  +
           return messages;
       }
   
  -    protected void trainFormatMessage(MockControl control, ValidationMessages messages, String messageOverride, String messageKey, Object[] parameters, String result)
  +    protected void trainFormatMessage(MockControl control, ValidationMessages messages,
  +            String messageOverride, String messageKey, Object[] parameters, String result)
       {
           messages.formatValidationMessage(messageOverride, messageKey, parameters);
           control.setMatcher(MockControl.ARRAY_MATCHER);
  
  
  
  1.4       +4 -10     jakarta-tapestry/framework/src/test/org/apache/tapestry/form/validator/TestPattern.java
  
  Index: TestPattern.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/form/validator/TestPattern.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestPattern.java	19 Aug 2005 13:28:16 -0000	1.3
  +++ TestPattern.java	25 Aug 2005 19:43:05 -0000	1.4
  @@ -111,16 +111,13 @@
   
           context.includeClasspathScript("/org/apache/tapestry/form/validator/RegExValidator.js");
   
  -        IFormComponent field = newField("Fred");
  +        IFormComponent field = newField("Fred", "myfield");
   
           trainFormatMessage(contextc, context, null, ValidationStrings.REGEX_MISMATCH, new Object[]
           { "Fred" }, "default message");
   
  -        context.getFieldDOM();
  -        contextc.setReturnValue("document.fred.barney");
  -
           context
  -                .addSubmitListener("function(event) { Tapestry.validate_regexp(event, document.fred.barney, '"
  +                .addSubmitHandler("function(event) { Tapestry.validate_regexp(event, 'myfield', '"
                           + pattern + "', 'default message'); }");
   
           replayControls();
  @@ -143,7 +140,7 @@
   
           context.includeClasspathScript("/org/apache/tapestry/form/validator/RegExValidator.js");
   
  -        IFormComponent field = newField("Fred");
  +        IFormComponent field = newField("Fred", "myfield");
   
           trainFormatMessage(
                   contextc,
  @@ -154,11 +151,8 @@
                   { "Fred" },
                   "custom\\message");
   
  -        context.getFieldDOM();
  -        contextc.setReturnValue("document.fred.barney");
  -
           context
  -                .addSubmitListener("function(event) { Tapestry.validate_regexp(event, document.fred.barney, '"
  +                .addSubmitHandler("function(event) { Tapestry.validate_regexp(event, 'myfield', '"
                           + pattern + "', 'custom\\\\message'); }");
   
           replayControls();
  
  
  
  1.5       +2 -5      jakarta-tapestry/framework/src/test/org/apache/tapestry/form/validator/TestMaxLength.java
  
  Index: TestMaxLength.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/form/validator/TestMaxLength.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TestMaxLength.java	19 Aug 2005 13:28:16 -0000	1.4
  +++ TestMaxLength.java	25 Aug 2005 19:43:05 -0000	1.5
  @@ -95,21 +95,18 @@
       {
           IMarkupWriter writer = newWriter();
           IRequestCycle cycle = newCycle();
  -        IFormComponent field = newField("My Field");
  +        IFormComponent field = newField("My Field", "myfield");
           MockControl contextc = newControl(FormComponentContributorContext.class);
           FormComponentContributorContext context = (FormComponentContributorContext) contextc
                   .getMock();
   
           context.includeClasspathScript("/org/apache/tapestry/form/validator/StringValidator.js");
   
  -        context.getFieldDOM();
  -        contextc.setReturnValue("document.myform.myfield");
  -
           trainFormatMessage(contextc, context, null, ValidationStrings.VALUE_TOO_LONG, new Object[]
           { new Integer(20), "My Field" }, "default\\message");
   
           context
  -                .addSubmitListener("function(event) { Tapestry.validate_max_length(event, document.myform.myfield, 20, 'default\\\\message'); }");
  +                .addSubmitHandler("function(event) { Tapestry.validate_max_length(event, 'myfield', 20, 'default\\\\message'); }");
   
           replayControls();
   
  
  
  
  1.4       +4 -10     jakarta-tapestry/framework/src/test/org/apache/tapestry/form/validator/TestMin.java
  
  Index: TestMin.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/form/validator/TestMin.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TestMin.java	19 Aug 2005 13:28:16 -0000	1.3
  +++ TestMin.java	25 Aug 2005 19:43:05 -0000	1.4
  @@ -96,7 +96,7 @@
       {
           IMarkupWriter writer = newWriter();
           IRequestCycle cycle = newCycle();
  -        IFormComponent field = newField("My Field");
  +        IFormComponent field = newField("My Field", "myfield");
           MockControl contextc = newControl(FormComponentContributorContext.class);
           FormComponentContributorContext context = (FormComponentContributorContext) contextc
                   .getMock();
  @@ -106,11 +106,8 @@
           trainFormatMessage(contextc, context, null, ValidationStrings.VALUE_TOO_SMALL, new Object[]
           { "My Field", new Double(20) }, "default message");
   
  -        context.getFieldDOM();
  -        contextc.setReturnValue("document.myform.myfield");
  -
           context
  -                .addSubmitListener("function(event) { Tapestry.validate_min_number(event, document.myform.myfield, 20.0, 'default message'); }");
  +                .addSubmitHandler("function(event) { Tapestry.validate_min_number(event, 'myfield', 20.0, 'default message'); }");
   
           replayControls();
   
  @@ -123,7 +120,7 @@
       {
           IMarkupWriter writer = newWriter();
           IRequestCycle cycle = newCycle();
  -        IFormComponent field = newField("My Field");
  +        IFormComponent field = newField("My Field", "myfield");
           MockControl contextc = newControl(FormComponentContributorContext.class);
           FormComponentContributorContext context = (FormComponentContributorContext) contextc
                   .getMock();
  @@ -139,11 +136,8 @@
                   { "My Field", new Double(20) },
                   "custom\\message");
   
  -        context.getFieldDOM();
  -        contextc.setReturnValue("document.myform.myfield");
  -
           context
  -                .addSubmitListener("function(event) { Tapestry.validate_min_number(event, document.myform.myfield, 20.0, 'custom\\\\message'); }");
  +                .addSubmitHandler("function(event) { Tapestry.validate_min_number(event, 'myfield', 20.0, 'custom\\\\message'); }");
   
           replayControls();
   
  
  
  
  1.5       +6 -14     jakarta-tapestry/framework/src/test/org/apache/tapestry/form/validator/TestEmail.java
  
  Index: TestEmail.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/form/validator/TestEmail.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TestEmail.java	19 Aug 2005 13:28:16 -0000	1.4
  +++ TestEmail.java	25 Aug 2005 19:43:05 -0000	1.5
  @@ -110,17 +110,13 @@
   
           context.includeClasspathScript("/org/apache/tapestry/form/validator/RegExValidator.js");
   
  -        IFormComponent field = newField("Fred");
  +        IFormComponent field = newField("Fred", "myfield");
   
           trainFormatMessage(contextc, context, null, ValidationStrings.INVALID_EMAIL, new Object[]
           { "Fred" }, "default\\message");
   
  -        context.getFieldDOM();
  -        contextc.setReturnValue("document.fred.barney");
  -
  -        context
  -                .addSubmitListener("function(event) { Tapestry.validate_regex(event, document.fred.barney, '"
  -                        + pattern + "', 'default\\\\message'); }");
  +        context.addSubmitHandler("function(event) { Tapestry.validate_regex(event, 'myfield', '"
  +                + pattern + "', 'default\\\\message'); }");
   
           replayControls();
   
  @@ -143,7 +139,7 @@
   
           context.includeClasspathScript("/org/apache/tapestry/form/validator/RegExValidator.js");
   
  -        IFormComponent field = newField("Fred");
  +        IFormComponent field = newField("Fred", "barney");
   
           trainFormatMessage(
                   contextc,
  @@ -154,12 +150,8 @@
                   { "Fred" },
                   "custom message");
   
  -        context.getFieldDOM();
  -        contextc.setReturnValue("document.fred.barney");
  -
  -        context
  -                .addSubmitListener("function(event) { Tapestry.validate_regex(event, document.fred.barney, '"
  -                        + pattern + "', 'custom message'); }");
  +        context.addSubmitHandler("function(event) { Tapestry.validate_regex(event, 'barney', '"
  +                + pattern + "', 'custom message'); }");
   
           replayControls();
   
  
  
  
  1.7       +4 -4      jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/MaxLength.java
  
  Index: MaxLength.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/MaxLength.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- MaxLength.java	19 Aug 2005 13:28:16 -0000	1.6
  +++ MaxLength.java	25 Aug 2005 19:43:05 -0000	1.7
  @@ -73,15 +73,15 @@
       {
           context.includeClasspathScript("/org/apache/tapestry/form/validator/StringValidator.js");
   
  -        StringBuffer buffer = new StringBuffer("function(event) { Tapestry.validate_max_length(event, ");
  -        buffer.append(context.getFieldDOM());
  -        buffer.append(", ");
  +        StringBuffer buffer = new StringBuffer("function(event) { Tapestry.validate_max_length(event, '");
  +        buffer.append(field.getClientId());
  +        buffer.append("', ");
           buffer.append(_maxLength);
           buffer.append(", ");
           buffer.append(TapestryUtils.enquote(buildMessage(context, field)));
           buffer.append("); }");
   
  -        context.addSubmitListener(buffer.toString());
  +        context.addSubmitHandler(buffer.toString());
       }
   
   }
  
  
  
  1.8       +4 -4      jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/Email.java
  
  Index: Email.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/Email.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Email.java	23 Aug 2005 23:21:10 -0000	1.7
  +++ Email.java	25 Aug 2005 19:43:05 -0000	1.8
  @@ -77,14 +77,14 @@
           String pattern = _matcher.getEscapedPatternString(PATTERN);
           String message = TapestryUtils.enquote(buildMessage(context, field));
   
  -        StringBuffer buffer = new StringBuffer("function(event) { Tapestry.validate_regex(event, ");
  -        buffer.append(context.getFieldDOM());
  -        buffer.append(", '");
  +        StringBuffer buffer = new StringBuffer("function(event) { Tapestry.validate_regex(event, '");
  +        buffer.append(field.getClientId());
  +        buffer.append("', '");
           buffer.append(pattern);
           buffer.append("', ");
           buffer.append(message);
           buffer.append("); }");
   
  -        context.addSubmitListener(buffer.toString());
  +        context.addSubmitHandler(buffer.toString());
       }
   }
  
  
  
  1.7       +4 -4      jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/Min.java
  
  Index: Min.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/Min.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- Min.java	19 Aug 2005 13:28:16 -0000	1.6
  +++ Min.java	25 Aug 2005 19:43:05 -0000	1.7
  @@ -73,15 +73,15 @@
   
           String message = buildMessage(context, field);
   
  -        StringBuffer buffer = new StringBuffer("function(event) { Tapestry.validate_min_number(event, ");
  -        buffer.append(context.getFieldDOM());
  -        buffer.append(", ");
  +        StringBuffer buffer = new StringBuffer("function(event) { Tapestry.validate_min_number(event, '");
  +        buffer.append(field.getClientId());
  +        buffer.append("', ");
           buffer.append(_min);
           buffer.append(", ");
           buffer.append(TapestryUtils.enquote(message));
           buffer.append("); }");
   
  -        context.addSubmitListener(buffer.toString());
  +        context.addSubmitHandler(buffer.toString());
       }
   
       public void setMin(double min)
  
  
  
  1.6       +4 -4      jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/Pattern.java
  
  Index: Pattern.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/Pattern.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Pattern.java	19 Aug 2005 13:28:16 -0000	1.5
  +++ Pattern.java	25 Aug 2005 19:43:05 -0000	1.6
  @@ -77,15 +77,15 @@
           String pattern = _matcher.getEscapedPatternString(_pattern);
           String message = buildMessage(context, field);
   
  -        StringBuffer buffer = new StringBuffer("function(event) { Tapestry.validate_regexp(event, ");
  -        buffer.append(context.getFieldDOM());
  -        buffer.append(", '");
  +        StringBuffer buffer = new StringBuffer("function(event) { Tapestry.validate_regexp(event, '");
  +        buffer.append(field.getClientId());
  +        buffer.append("', '");
           buffer.append(pattern);
           buffer.append("', ");
           buffer.append(TapestryUtils.enquote(message));
           buffer.append("); }");
   
  -        context.addSubmitListener(buffer.toString());
  +        context.addSubmitHandler(buffer.toString());
       }
   
       public void setPattern(String pattern)
  
  
  
  1.6       +4 -2      jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/StringValidator.js
  
  Index: StringValidator.js
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/StringValidator.js,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- StringValidator.js	19 Aug 2005 13:28:16 -0000	1.5
  +++ StringValidator.js	25 Aug 2005 19:43:05 -0000	1.6
  @@ -12,16 +12,18 @@
   // See the License for the specific language governing permissions and
   // limitations under the License.
   
  -Tapestry.validate_min_length = function(event, field, min, message)
  +Tapestry.validate_min_length = function(event, fieldId, min, message)
   {
  +	var field = this.find(fieldId);
   	if (field.value == "") return;
   	
       if (field.value.length < min)
         event.invalid_field(field, message)
   }
   
  -Tapestry.validate_max_length = function(event, field, max, message)
  +Tapestry.validate_max_length = function(event, fieldId, max, message)
   {
  +	var field = this.find(fieldId);
   	if (field.value == "") return;
   	
       if (field.value.length > max)
  
  
  
  1.10      +4 -4      jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/Required.java
  
  Index: Required.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/Required.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Required.java	19 Aug 2005 13:28:16 -0000	1.9
  +++ Required.java	25 Aug 2005 19:43:05 -0000	1.10
  @@ -75,13 +75,13 @@
       {
           context.registerForFocus(ValidationConstants.REQUIRED_FIELD);
   
  -        StringBuffer buffer = new StringBuffer("function(event) { Tapestry.require_field(event, ");
  -        buffer.append(context.getFieldDOM());
  -        buffer.append(", ");
  +        StringBuffer buffer = new StringBuffer("function(event) { Tapestry.require_field(event, '");
  +        buffer.append(field.getClientId());
  +        buffer.append("', ");
           buffer.append(TapestryUtils.enquote(buildMessage(context, field)));
           buffer.append("); }");
   
  -        context.addSubmitListener(buffer.toString());
  +        context.addSubmitHandler(buffer.toString());
       }
   
       /**
  
  
  
  1.6       +2 -1      jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/RegExValidator.js
  
  Index: RegExValidator.js
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/RegExValidator.js,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- RegExValidator.js	19 Aug 2005 13:28:16 -0000	1.5
  +++ RegExValidator.js	25 Aug 2005 19:43:05 -0000	1.6
  @@ -12,8 +12,9 @@
   // See the License for the specific language governing permissions and
   // limitations under the License.
   
  -Tapestry.validate_regex = function(event, field, pattern, message)
  +Tapestry.validate_regex = function(event, fieldId, pattern, message)
   {
  +	var field = this.find(fieldId);
   	var value = field.value;
   	
   	if (value == "") return;
  
  
  
  1.6       +4 -4      jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/Max.java
  
  Index: Max.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/Max.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Max.java	19 Aug 2005 13:28:16 -0000	1.5
  +++ Max.java	25 Aug 2005 19:43:05 -0000	1.6
  @@ -73,15 +73,15 @@
   
           String message = TapestryUtils.enquote(buildMessage(context, field));
   
  -        StringBuffer buffer = new StringBuffer("function(event) { Tapestry.validate_max_number(event, ");
  -        buffer.append(context.getFieldDOM());
  -        buffer.append(", ");
  +        StringBuffer buffer = new StringBuffer("function(event) { Tapestry.validate_max_number(event, '");
  +        buffer.append(field.getClientId());
  +        buffer.append("', ");
           buffer.append(_max);
           buffer.append(", ");
           buffer.append(message);
           buffer.append("); }");
   
  -        context.addSubmitListener(buffer.toString());
  +        context.addSubmitHandler(buffer.toString());
       }
   
       public void setMax(double max)
  
  
  
  1.7       +4 -4      jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/MinLength.java
  
  Index: MinLength.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/MinLength.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- MinLength.java	19 Aug 2005 13:28:16 -0000	1.6
  +++ MinLength.java	25 Aug 2005 19:43:05 -0000	1.7
  @@ -77,14 +77,14 @@
       {
           context.includeClasspathScript("/org/apache/tapestry/form/validator/StringValidator.js");
   
  -        StringBuffer buffer = new StringBuffer("function(event) { Tapestry.validate_min_length(event, ");
  -        buffer.append(context.getFieldDOM());
  -        buffer.append(", ");
  +        StringBuffer buffer = new StringBuffer("function(event) { Tapestry.validate_min_length(event, '");
  +        buffer.append(field.getClientId());
  +        buffer.append("', ");
           buffer.append(_minLength);
           buffer.append(", ");
           buffer.append(TapestryUtils.enquote(buildMessage(context, field)));
           buffer.append("); }");
   
  -        context.addSubmitListener(buffer.toString());
  +        context.addSubmitHandler(buffer.toString());
       }
   }
  \ No newline at end of file
  
  
  
  1.6       +4 -2      jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/NumberValidator.js
  
  Index: NumberValidator.js
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/form/validator/NumberValidator.js,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- NumberValidator.js	19 Aug 2005 13:58:39 -0000	1.5
  +++ NumberValidator.js	25 Aug 2005 19:43:05 -0000	1.6
  @@ -12,8 +12,9 @@
   // See the License for the specific language governing permissions and
   // limitations under the License.
   
  -Tapestry.validate_min_number = function(event, field, min, message)
  +Tapestry.validate_min_number = function(event, fieldId, min, message)
   {
  +	var field = this.find(fieldId);
   	var value = field.value;
   	
   	if (value == "") return;
  @@ -22,8 +23,9 @@
         event.invalid_field(field, message)
   }
   
  -Tapestry.validate_max_number = function(event, field, max, message)
  +Tapestry.validate_max_number = function(event, fieldId, max, message)
   {
  +	var field = this.find(fieldId);
   	var value = field.value;
   	
   	if (value == "") return;
  
  
  
  1.8       +2 -2      jakarta-tapestry/framework/src/test/org/apache/tapestry/form/TestValidatableFieldSupportImpl.java
  
  Index: TestValidatableFieldSupportImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/form/TestValidatableFieldSupportImpl.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- TestValidatableFieldSupportImpl.java	10 Aug 2005 06:02:50 -0000	1.7
  +++ TestValidatableFieldSupportImpl.java	25 Aug 2005 19:43:05 -0000	1.8
  @@ -140,7 +140,7 @@
           form.getName();
           formControl.setReturnValue("myform");
   
  -        field.getName();
  +        field.getClientId();
           fieldControl.setReturnValue("myfield");
   
           field.getValidators();
  @@ -189,7 +189,7 @@
           form.getName();
           formControl.setReturnValue("myform");
   
  -        field.getName();
  +        field.getClientId();
           fieldControl.setReturnValue("myfield");
   
           field.getValidators();
  
  
  
  1.3       +1 -1      jakarta-tapestry/framework/src/test/org/apache/tapestry/form/TestTranslatedFieldSupportImpl.java
  
  Index: TestTranslatedFieldSupportImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/form/TestTranslatedFieldSupportImpl.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- TestTranslatedFieldSupportImpl.java	18 Aug 2005 21:56:06 -0000	1.2
  +++ TestTranslatedFieldSupportImpl.java	25 Aug 2005 19:43:05 -0000	1.3
  @@ -133,7 +133,7 @@
           form.getName();
           formControl.setReturnValue("myform");
   
  -        field.getName();
  +        field.getClientId();
           fieldControl.setReturnValue("myfield");
   
           field.getTranslator();
  
  
  
  1.2       +7 -7      jakarta-tapestry/framework/src/test/org/apache/tapestry/form/TestFormComponentContributorContext.java
  
  Index: TestFormComponentContributorContext.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/form/TestFormComponentContributorContext.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- TestFormComponentContributorContext.java	18 Jun 2005 12:54:39 -0000	1.1
  +++ TestFormComponentContributorContext.java	25 Aug 2005 19:43:05 -0000	1.2
  @@ -46,7 +46,7 @@
           return form;
       }
   
  -    private IFormComponent newField(IForm form, String name)
  +    private IFormComponent newField(IForm form, String clientId)
       {
           MockControl control = newControl(IFormComponent.class);
           IFormComponent field = (IFormComponent) control.getMock();
  @@ -54,8 +54,8 @@
           field.getForm();
           control.setReturnValue(form);
   
  -        field.getName();
  -        control.setReturnValue(name);
  +        field.getClientId();
  +        control.setReturnValue(clientId);
   
           return field;
       }
  @@ -99,7 +99,7 @@
           FormComponentContributorContext context = new FormComponentContributorContextImpl(
                   Locale.ENGLISH, cycle, field);
   
  -        assertEquals("document.myform.myfield", context.getFieldDOM());
  +        assertEquals("Tapestry.find('myfield')", context.getFieldDOM());
   
           verifyControls();
       }
  @@ -136,7 +136,7 @@
           verifyControls();
       }
   
  -    public void testAddSubmitListener()
  +    public void testAddSubmitHandler()
       {
   
           IForm form = newForm("myform");
  @@ -153,7 +153,7 @@
   
           PageRenderSupport prs = newSupport();
   
  -        prs.addInitializationScript("document.myform.events.addSubmitListener(foo);");
  +        prs.addInitializationScript("Tapestry.onsubmit('myform', foo);");
   
           trainGetAttribute(cyclec, cycle, TapestryUtils.PAGE_RENDER_SUPPORT_ATTRIBUTE, prs);
   
  @@ -162,7 +162,7 @@
           FormComponentContributorContext context = new FormComponentContributorContextImpl(
                   Locale.ENGLISH, cycle, field);
   
  -        context.addSubmitListener("foo");
  +        context.addSubmitHandler("foo");
   
           verifyControls();
       }
  
  
  
  1.14      +35 -52    jakarta-tapestry/framework/src/test/org/apache/tapestry/form/TestFormSupport.java
  
  Index: TestFormSupport.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/form/TestFormSupport.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- TestFormSupport.java	24 Aug 2005 14:45:33 -0000	1.13
  +++ TestFormSupport.java	25 Aug 2005 19:43:05 -0000	1.14
  @@ -157,10 +157,7 @@
   
           IRender render = (IRender) newMock(IRender.class);
   
  -        support.addExternalScript(new ClasspathResource(getClassResolver(),
  -                "/org/apache/tapestry/form/Form.js"));
  -
  -        support.addInitializationScript("new FormEventManager(document.getElementById('myform'));");
  +        trainRegister(support);
   
           link.getParameterNames();
           linkc.setReturnValue(new String[]
  @@ -198,7 +195,7 @@
           trainGetFocusField(delegatec, delegate, "wilma");
           trainGetFieldFocus(cyclec, cycle, null);
   
  -        support.addInitializationScript("Tapestry.set_focus(document.getElementById('wilma'));");
  +        trainFocus(support);
   
           trainSetFieldFocus(cycle);
   
  @@ -209,6 +206,19 @@
           verifyControls();
       }
   
  +    private void trainRegister(PageRenderSupport support)
  +    {
  +        support.addExternalScript(new ClasspathResource(getClassResolver(),
  +                "/org/apache/tapestry/form/Form.js"));
  +
  +        support.addInitializationScript("Tapestry.register_form('myform');");
  +    }
  +
  +    private void trainFocus(PageRenderSupport support)
  +    {
  +        support.addInitializationScript("Tapestry.set_focus('wilma');");
  +    }
  +
       private void trainSetFieldFocus(IRequestCycle cycle)
       {
           cycle.setAttribute(FormSupportImpl.FIELD_FOCUS_ATTRIBUTE, Boolean.TRUE);
  @@ -338,10 +348,7 @@
   
           IRender render = (IRender) newMock(IRender.class);
   
  -        support.addExternalScript(new ClasspathResource(getClassResolver(),
  -                "/org/apache/tapestry/form/Form.js"));
  -
  -        support.addInitializationScript("new FormEventManager(document.getElementById('myform'));");
  +        trainRegister(support);
   
           link.getParameterNames();
           linkc.setReturnValue(new String[]
  @@ -363,7 +370,7 @@
   
           writer.attribute("name", "myform");
           writer.attribute("id", "myform");
  -        
  +
           render.render(writer, cycle);
   
           writer.println();
  @@ -377,7 +384,7 @@
           writer.end();
   
           support
  -                .addInitializationScript("document.getElementById('myform').events.addSubmitListener(function (event)\n{\n  mySubmit1();\n  mySubmit2();\n  mySubmit3();\n});\n");
  +                .addInitializationScript("Tapestry.onsubmit('myform', function (event)\n{\n  mySubmit1();\n  mySubmit2();\n  mySubmit3();\n});\n");
   
           // Side test: what if no focus field?
   
  @@ -441,10 +448,7 @@
   
           IRender render = (IRender) newMock(IRender.class);
   
  -        support.addExternalScript(new ClasspathResource(getClassResolver(),
  -                "/org/apache/tapestry/form/Form.js"));
  -
  -        support.addInitializationScript("new FormEventManager(document.getElementById('myform'));");
  +        trainRegister(support);
   
           link.getParameterNames();
           linkc.setReturnValue(new String[]
  @@ -464,7 +468,7 @@
           writer.attribute("method", "post");
           writer.attribute("action", "/app");
           writer.attribute("name", "myform");
  -        writer.attribute("id", "myform");        
  +        writer.attribute("id", "myform");
           writer.attribute("enctype", "foo/bar");
   
           render.render(writer, cycle);
  @@ -540,10 +544,7 @@
   
           IRender render = (IRender) newMock(IRender.class);
   
  -        support.addExternalScript(new ClasspathResource(getClassResolver(),
  -                "/org/apache/tapestry/form/Form.js"));
  -
  -        support.addInitializationScript("new FormEventManager(document.getElementById('myform'));");
  +        trainRegister(support);
   
           link.getParameterNames();
           linkc.setReturnValue(new String[]
  @@ -565,7 +566,7 @@
   
           writer.attribute("name", "myform");
           writer.attribute("id", "myform");
  -        
  +
           render.render(writer, cycle);
   
           writer.println();
  @@ -638,10 +639,7 @@
   
           IRender render = (IRender) newMock(IRender.class);
   
  -        support.addExternalScript(new ClasspathResource(getClassResolver(),
  -                "/org/apache/tapestry/form/Form.js"));
  -
  -        support.addInitializationScript("new FormEventManager(document.getElementById('myform'));");
  +        trainRegister(support);
   
           link.getParameterNames();
           linkc.setReturnValue(new String[]
  @@ -721,10 +719,7 @@
   
           IRender render = (IRender) newMock(IRender.class);
   
  -        support.addExternalScript(new ClasspathResource(getClassResolver(),
  -                "/org/apache/tapestry/form/Form.js"));
  -
  -        support.addInitializationScript("new FormEventManager(document.getElementById('myform'));");
  +        trainRegister(support);
   
           link.getParameterNames();
           linkc.setReturnValue(new String[]
  @@ -746,7 +741,7 @@
   
           writer.attribute("name", "myform");
           writer.attribute("id", "myform");
  -        
  +
           render.render(writer, cycle);
   
           writer.println();
  @@ -821,10 +816,7 @@
   
           IRender render = (IRender) newMock(IRender.class);
   
  -        support.addExternalScript(new ClasspathResource(getClassResolver(),
  -                "/org/apache/tapestry/form/Form.js"));
  -
  -        support.addInitializationScript("new FormEventManager(document.getElementById('myform'));");
  +        trainRegister(support);
   
           link.getParameterNames();
           linkc.setReturnValue(new String[]
  @@ -846,7 +838,7 @@
   
           writer.attribute("name", "myform");
           writer.attribute("id", "myform");
  -        
  +
           render.render(writer, cycle);
   
           writer.println();
  @@ -860,7 +852,7 @@
           writer.end();
   
           support
  -                .addInitializationScript("document.getElementById('myform').events.addResetListener(function (event)\n{\n  myReset1();\n  myReset2();\n});\n");
  +                .addInitializationScript("Tapestry.onreset('myform', function (event)\n{\n  myReset1();\n  myReset2();\n});\n");
   
           trainGetFocusField(delegatec, delegate, null);
   
  @@ -1173,10 +1165,7 @@
   
           IRender render = (IRender) newMock(IRender.class);
   
  -        support.addExternalScript(new ClasspathResource(getClassResolver(),
  -                "/org/apache/tapestry/form/Form.js"));
  -
  -        support.addInitializationScript("new FormEventManager(document.getElementById('myform'));");
  +        trainRegister(support);
   
           link.getParameterNames();
           linkc.setReturnValue(new String[]
  @@ -1198,7 +1187,7 @@
   
           writer.attribute("name", "myform");
           writer.attribute("id", "myform");
  -        
  +
           render.render(writer, cycle);
   
           writer.println();
  @@ -1287,10 +1276,7 @@
   
           IRender render = (IRender) newMock(IRender.class);
   
  -        support.addExternalScript(new ClasspathResource(getClassResolver(),
  -                "/org/apache/tapestry/form/Form.js"));
  -
  -        support.addInitializationScript("new FormEventManager(document.getElementById('myform'));");
  +        trainRegister(support);
   
           link.getParameterNames();
           linkc.setReturnValue(new String[]
  @@ -1312,7 +1298,7 @@
   
           writer.attribute("name", "myform");
           writer.attribute("id", "myform");
  -        
  +
           render.render(writer, cycle);
   
           writer.println();
  @@ -1598,10 +1584,7 @@
   
           IRender render = (IRender) newMock(IRender.class);
   
  -        support.addExternalScript(new ClasspathResource(getClassResolver(),
  -                "/org/apache/tapestry/form/Form.js"));
  -
  -        support.addInitializationScript("new FormEventManager(document.getElementById('myform'));");
  +        trainRegister(support);
   
           link.getParameterNames();
           linkc.setReturnValue(new String[]
  @@ -1623,7 +1606,7 @@
   
           writer.attribute("name", "myform");
           writer.attribute("id", "myform");
  -        
  +
           render.render(writer, cycle);
   
           writer.println();
  @@ -1637,7 +1620,7 @@
           writer.end();
   
           support
  -                .addInitializationScript("document.getElementById('myform').events.addSubmitListener(function (event)\n{\n  mySubmit();\n});\n");
  +                .addInitializationScript("Tapestry.onsubmit('myform', function (event)\n{\n  mySubmit();\n});\n");
   
           trainGetFocusField(delegatec, delegate, null);
   
  
  
  
  1.7       +31 -3     jakarta-tapestry/framework/src/test/org/apache/tapestry/form/FormComponentContributorTestCase.java
  
  Index: FormComponentContributorTestCase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/form/FormComponentContributorTestCase.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- FormComponentContributorTestCase.java	19 Aug 2005 13:28:17 -0000	1.6
  +++ FormComponentContributorTestCase.java	25 Aug 2005 19:43:05 -0000	1.7
  @@ -130,6 +130,34 @@
           return field;
       }
   
  +    protected IFormComponent newField(String displayName, String clientId, int count)
  +    {
  +        MockControl control = MockControl.createNiceControl(IFormComponent.class);
  +
  +        addControl(control);
  +
  +        IFormComponent field = (IFormComponent) control.getMock();
  +
  +        field.getDisplayName();
  +        control.setReturnValue(displayName);
  +
  +        field.getClientId();
  +        control.setReturnValue(clientId, count);
  +
  +        return field;
  +    }
  +    
  +    protected IFormComponent newFieldWithClientId(String clientId)
  +    {
  +        MockControl control = newControl(IFormComponent.class);
  +        IFormComponent field = (IFormComponent)control.getMock();
  +        
  +        field.getClientId();
  +        control.setReturnValue(clientId);
  +        
  +        return field;        
  +    }
  +
       protected void trainGetFieldDOM(MockControl control, FormComponentContributorContext context,
               String result)
       {
  @@ -177,9 +205,9 @@
           return messages;
       }
   
  -    protected void trainTrim(FormComponentContributorContext context, String fieldDOM)
  +    protected void trainTrim(FormComponentContributorContext context, String fieldId)
       {
  -        context.addSubmitListener("function (event) { Tapestry.trim_field_value(" + fieldDOM
  -                + "); }");
  +        context.addSubmitHandler("function (event) { Tapestry.trim_field_value('" + fieldId
  +                + "'); }");
       }
   }
  
  
  
  1.9       +10 -8     jakarta-tapestry/framework/src/java/org/apache/tapestry/TapestryUtils.java
  
  Index: TapestryUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/java/org/apache/tapestry/TapestryUtils.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- TapestryUtils.java	24 Aug 2005 12:19:15 -0000	1.8
  +++ TapestryUtils.java	25 Aug 2005 19:43:06 -0000	1.9
  @@ -250,24 +250,26 @@
        * [A-Za-z][A-Za-z0-9:_.-]*, but a component id might include a leading dollar sign (for an
        * anonymous component with a fabricated id).
        */
  -    
  +
       public static String convertTapestryIdToNMToken(String baseId)
       {
  -        while (baseId.startsWith("$"))
  -            baseId = baseId.substring(1);
  -    
  -        return baseId.replace('$', '_');
  +        String result = baseId.replace('$', '_');
  +
  +        while (result.startsWith("_"))
  +            result = result.substring(1);
  +
  +        return result;
       }
   
       /**
        * Converts a clientId into a client-side DOM reference; i.e.
  -     * <code>document.getElementById('<i>id</i>')</code>
  +     * <code>document.getElementById('<i>id</i>')</code>.  
        */
  -    
  +
       public static String buildClientElementReference(String clientId)
       {
           Defense.notNull(clientId, "clientId");
  -    
  +
           return "document.getElementById('" + clientId + "')";
       }
   }
  \ No newline at end of file
  
  
  
  1.7       +2 -5      jakarta-tapestry/framework/src/test/org/apache/tapestry/form/translator/TestStringTranslator.java
  
  Index: TestStringTranslator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/form/translator/TestStringTranslator.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- TestStringTranslator.java	19 Aug 2005 13:28:17 -0000	1.6
  +++ TestStringTranslator.java	25 Aug 2005 19:43:06 -0000	1.7
  @@ -155,12 +155,9 @@
           FormComponentContributorContext context = (FormComponentContributorContext) contextc
                   .getMock();
   
  -        context.getFieldDOM();
  -        contextc.setReturnValue("field_dom");
  +        IFormComponent field = newFieldWithClientId("myfield");
   
  -        trainTrim(context, "field_dom");
  -
  -        IFormComponent field = newField();
  +        trainTrim(context, "myfield");
   
           replayControls();
   
  
  
  
  1.11      +9 -16     jakarta-tapestry/framework/src/test/org/apache/tapestry/form/translator/TestNumberTranslator.java
  
  Index: TestNumberTranslator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/form/translator/TestNumberTranslator.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- TestNumberTranslator.java	19 Aug 2005 13:28:17 -0000	1.10
  +++ TestNumberTranslator.java	25 Aug 2005 19:43:06 -0000	1.11
  @@ -210,12 +210,10 @@
           trainBuildMessage(contextc, context, null, ValidationStrings.INVALID_NUMBER, new Object[]
           { "Number Field", "#" }, "invalid number message");
   
  -        trainGetFieldDOM(contextc, context, "field_dom");
  -
           context
  -                .addSubmitListener("function(event) { Tapestry.validate_number(event, field_dom, 'invalid number message'); }");
  +                .addSubmitHandler("function(event) { Tapestry.validate_number(event, 'numberField', 'invalid number message'); }");
   
  -        IFormComponent field = newField("Number Field");
  +        IFormComponent field = newField("Number Field", "numberField", 1);
   
           replayControls();
   
  @@ -250,12 +248,10 @@
                   { "Number Field", "#" },
                   "Blah Blah 'Field Name' Blah.");
   
  -        trainGetFieldDOM(contextc, context, "field_dom");
  -
           context
  -                .addSubmitListener("function(event) { Tapestry.validate_number(event, field_dom, 'Blah Blah \\'Field Name\\' Blah.'); }");
  +                .addSubmitHandler("function(event) { Tapestry.validate_number(event, 'myfield', 'Blah Blah \\'Field Name\\' Blah.'); }");
   
  -        IFormComponent field = newField("Number Field");
  +        IFormComponent field = newField("Number Field", "myfield", 1);
   
           replayControls();
   
  @@ -268,6 +264,9 @@
   
       public void testTrimRenderContribution()
       {
  +
  +        IFormComponent field = newField("Number Field", "myfield", 2);
  +
           NumberTranslator translator = new NumberTranslator();
   
           IMarkupWriter writer = newWriter();
  @@ -279,21 +278,15 @@
   
           context.includeClasspathScript(translator.defaultScript());
   
  -        trainGetFieldDOM(contextc, context, "field_dom");
  -
  -        trainTrim(context, "field_dom");
  +        trainTrim(context, "myfield");
   
           trainGetLocale(contextc, context, Locale.ENGLISH);
   
           trainBuildMessage(contextc, context, null, ValidationStrings.INVALID_NUMBER, new Object[]
           { "Number Field", "#" }, "invalid number message");
   
  -        trainGetFieldDOM(contextc, context, "field_dom");
  -
           context
  -                .addSubmitListener("function(event) { Tapestry.validate_number(event, field_dom, 'invalid number message'); }");
  -
  -        IFormComponent field = newField("Number Field");
  +                .addSubmitHandler("function(event) { Tapestry.validate_number(event, 'myfield', 'invalid number message'); }");
   
           replayControls();
   
  
  
  
  1.9       +3 -8      jakarta-tapestry/framework/src/test/org/apache/tapestry/form/translator/TestDateTranslator.java
  
  Index: TestDateTranslator.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/form/translator/TestDateTranslator.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- TestDateTranslator.java	19 Aug 2005 13:28:17 -0000	1.8
  +++ TestDateTranslator.java	25 Aug 2005 19:43:06 -0000	1.9
  @@ -235,16 +235,11 @@
           IMarkupWriter writer = newWriter();
           IRequestCycle cycle = newCycle();
   
  -        IFormComponent field = newField();
  +        IFormComponent field = newFieldWithClientId("foo");
   
  -        MockControl contextc = newControl(FormComponentContributorContext.class);
  -        FormComponentContributorContext context = (FormComponentContributorContext) contextc
  -                .getMock();
  +        FormComponentContributorContext context = (FormComponentContributorContext) newMock(FormComponentContributorContext.class);
   
  -        context.getFieldDOM();
  -        contextc.setReturnValue("field_dom");
  -
  -        trainTrim(context, "field_dom");
  +        trainTrim(context, "foo");
   
           replayControls();
   
  
  
  
  1.6       +13 -0     jakarta-tapestry/framework/src/test/org/apache/tapestry/TestTapestryUtils.java
  
  Index: TestTapestryUtils.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tapestry/framework/src/test/org/apache/tapestry/TestTapestryUtils.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- TestTapestryUtils.java	19 Aug 2005 13:28:17 -0000	1.5
  +++ TestTapestryUtils.java	25 Aug 2005 19:43:06 -0000	1.6
  @@ -272,4 +272,17 @@
           assertEquals("'this is a \\'single quote\\''", TapestryUtils
                   .enquote("this is a 'single quote'"));
       }
  +
  +    public void testConvertTapestryIdToNMToken()
  +    {
  +        assertEquals("abc", TapestryUtils.convertTapestryIdToNMToken("abc"));
  +        assertEquals("abc", TapestryUtils.convertTapestryIdToNMToken("$abc"));
  +        assertEquals("a_b_c", TapestryUtils.convertTapestryIdToNMToken("$a$b$c"));
  +    }
  +
  +    public void testBuildClientElementReference()
  +    {
  +        assertEquals("document.getElementById('foo')", TapestryUtils
  +                .buildClientElementReference("foo"));
  +    }
   }
  \ No newline at end of file
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: tapestry-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tapestry-dev-help@jakarta.apache.org