You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by jk...@apache.org on 2006/06/05 03:10:55 UTC

svn commit: r411633 - in /tapestry/tapestry4/trunk: examples/TimeTracker/src/context/ examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/ framework/src/java/org/apache/tapestry/dojo/html/ framework/src/java/org/apache/tapestry/event/ fr...

Author: jkuhnert
Date: Sun Jun  4 18:10:54 2006
New Revision: 411633

URL: http://svn.apache.org/viewvc?rev=411633&view=rev
Log:
Moved old Tapestry.<foo> functions to a form_compat package so as not to degrade all of my
pretty new dojo based package functions. Connected up form submissions to server calls. Stopping myself
now as I found I was actually starting to write code before testing!

Added:
    tapestry/tapestry4/trunk/framework/src/js/tapestry/form_compat.js   (with props)
Modified:
    tapestry/tapestry4/trunk/examples/TimeTracker/src/context/Home.html
    tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java
    tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/dojo/html/WidgetEvent.script
    tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/event/BrowserEvent.java
    tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/Form.java
    tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/Form.jwc
    tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/FormSupportImpl.java
    tapestry/tapestry4/trunk/framework/src/js/tapestry/form.js

Modified: tapestry/tapestry4/trunk/examples/TimeTracker/src/context/Home.html
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/examples/TimeTracker/src/context/Home.html?rev=411633&r1=411632&r2=411633&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/examples/TimeTracker/src/context/Home.html (original)
+++ tapestry/tapestry4/trunk/examples/TimeTracker/src/context/Home.html Sun Jun  4 18:10:54 2006
@@ -12,7 +12,7 @@
 	</span>
 </div>
 
-<form jwcid="taskForm@Form" listener="listener:addTask" >
+<form jwcid="taskForm@Form" >
     <fieldset>
     <legend><span jwcid="@Insert" value="message:new.task"/></legend>
     

Modified: tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java?rev=411633&r1=411632&r2=411633&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java (original)
+++ tapestry/tapestry4/trunk/examples/TimeTracker/src/java/org/apache/tapestry/timetracker/page/TaskEntryPage.java Sun Jun  4 18:10:54 2006
@@ -84,6 +84,6 @@
     public void projectSelected(IRequestCycle cycle)
     {
         _log.debug("projectSelected() " + getSelectedProject());
-        // cycle.getResponseBuilder().updateComponent("projectDescription");
+        cycle.getResponseBuilder().updateComponent("projectDescription");
     }
 }

Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/dojo/html/WidgetEvent.script
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/dojo/html/WidgetEvent.script?rev=411633&r1=411632&r2=411633&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/dojo/html/WidgetEvent.script (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/dojo/html/WidgetEvent.script Sun Jun  4 18:10:54 2006
@@ -29,10 +29,14 @@
         <if expression="formEvents">
             <foreach expression="formEvents" key="formEvent">
                 dojo.event.connect(dojo.widget.byId("${clientId}"), "${formEvent[0]}", function(e){
+                    var content={beventname:"${formEvent[0]}"};
+                    tapestry.event.buildEventProperties(e, content);
+                    if (!content["beventtarget.id"]) content["beventtarget.id"]="${clientId}";
+                    
                     dojo.log.debug("Connected to formEvent!");
                     
                     <foreach expression="formEvent[1]" key="formName">
-                    tapestry.form.submitAsync("${formName}", "test");
+                    tapestry.form.submitAsync("${formName}", "test", content);
                     dojo.log.debug("Need to submit to form ${formName}");
                     </foreach>
                 });

Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/event/BrowserEvent.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/event/BrowserEvent.java?rev=411633&r1=411632&r2=411633&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/event/BrowserEvent.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/event/BrowserEvent.java Sun Jun  4 18:10:54 2006
@@ -69,12 +69,12 @@
         _layerX = cycle.getParameter(LAYER_X);
         _layerY = cycle.getParameter(LAYER_Y);
         
+        Map props = new HashMap();
+        _target = new EventTarget(props);
+        
         String targetId = cycle.getParameter(TARGET + "." + TARGET_ATTR_ID);
         if (targetId != null) {
-            Map props = new HashMap();
             props.put(TARGET_ATTR_ID, targetId);
-            
-            _target = new EventTarget(props);
         }
     }
     

Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/Form.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/Form.java?rev=411633&r1=411632&r2=411633&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/Form.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/Form.java Sun Jun  4 18:10:54 2006
@@ -340,7 +340,7 @@
     {
         cycle.rewindForm(this);
     }
-
+    
     /**
      * Builds the EngineServiceLink for the form, using either the direct or action service.
      * 

Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/Form.jwc
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/Form.jwc?rev=411633&r1=411632&r2=411633&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/Form.jwc (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/Form.jwc Sun Jun  4 18:10:54 2006
@@ -127,5 +127,4 @@
   <inject property="actionService" object="engine-service:action"/>
   <inject property="response" object="infrastructure:response"/>
   <inject property="listenerInvoker" object="infrastructure:listenerInvoker"/>
-
 </component-specification>

Modified: tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/FormSupportImpl.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/FormSupportImpl.java?rev=411633&r1=411632&r2=411633&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/FormSupportImpl.java (original)
+++ tapestry/tapestry4/trunk/framework/src/java/org/apache/tapestry/form/FormSupportImpl.java Sun Jun  4 18:10:54 2006
@@ -39,6 +39,7 @@
 import org.apache.tapestry.Tapestry;
 import org.apache.tapestry.TapestryUtils;
 import org.apache.tapestry.engine.ILink;
+import org.apache.tapestry.event.BrowserEvent;
 import org.apache.tapestry.services.ServiceConstants;
 import org.apache.tapestry.util.IdAllocator;
 import org.apache.tapestry.valid.IValidationDelegate;
@@ -545,7 +546,7 @@
         _form.getDelegate().clear();
 
         String mode = _cycle.getParameter(SUBMIT_MODE);
-
+        
         // On a cancel, don't bother rendering the body or anything else at all.
 
         if (FormConstants.SUBMIT_CANCEL.equals(mode))
@@ -554,9 +555,14 @@
         reinitializeIdAllocatorForRewind();
 
         _form.renderBody(_writer, _cycle);
-
+        
+        // New, handles cases where an eventlistener
+        // causes a form submission.
+        BrowserEvent event = new BrowserEvent(_cycle);
+        _form.getEventInvoker().invokeListeners(_form, _cycle, event);
+        
         int expected = _allocatedIds.size();
-
+        
         // The other case, _allocatedIdIndex > expected, is
         // checked for inside getElementId(). Remember that
         // _allocatedIdIndex is incremented after allocating.
@@ -569,6 +575,7 @@
                     - _allocatedIdIndex, nextExpectedId), _form);
         }
 
+        
         runDeferredRunnables();
 
         if (_submitModes.contains(mode))

Modified: tapestry/tapestry4/trunk/framework/src/js/tapestry/form.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/tapestry/form.js?rev=411633&r1=411632&r2=411633&view=diff
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/js/tapestry/form.js (original)
+++ tapestry/tapestry4/trunk/framework/src/js/tapestry/form.js Sun Jun  4 18:10:54 2006
@@ -1,10 +1,21 @@
 dojo.provide("tapestry.form");
-dojo.provide("Tapestry");
 
 dojo.require("tapestry.core");
 
+/**
+ * Provides central handling of all client side form related logic.
+ * 
+ * Validation system to be replaced with {@link dojo.validate#check(form, profile)}.
+ */
 tapestry.form={
 	
+	/**
+	 * Generically displays a window alert for the 
+	 * given field when in error.
+	 * 
+	 * @param field The field element
+	 * @param message The message to display
+	 */
 	invalidField:function(field, message){
 		if (field.disabled) return;
 		
@@ -12,6 +23,12 @@
     	window.alert(message);
 	},
 	
+	/**
+	 * If possible, brings keyboard input focus
+	 * to the specified field.
+	 * 
+	 * @param field The field(field id) of the field to focus.
+	 */
 	focusField:function(field){
 		if (arguments.length < 1) return;
 		
@@ -28,6 +45,11 @@
         }
 	},
 	
+	/**
+	 * Trims whitespace from before/after field.
+	 * @param id The field(field id) of the field to trim
+	 * 			 whitespace input from.
+	 */
 	trimField:function(id){
 		if (arguments.length < 1) return;
 		
@@ -39,10 +61,18 @@
 		elem.value = elem.value.replace(/(^\s*|\s*$)/g, "");
 	},
 	
-	requireField:function(fieldId, message){
+	/**
+	 * Checks if the field specified has a non-null value
+	 * selected. This covers input fields/checkboxes/radio groups/etc..
+	 * 
+	 * @param field The field(field id) of the field to check for input.
+	 * @param message The message to be displayed if no value has been input/selected
+	 * 				  for the field.
+	 */
+	requireField:function(field, message){
 		if (arguments.length < 1) return;
 		
-		var elem=dojo.byId(fieldId);
+		var elem=dojo.byId(field);
 		if (!elem) return;
 		
 		// Are textbox, textarea, or password fields blank.
@@ -69,26 +99,57 @@
 		}
 	},
 	
-	submit:function(id, submitName){
+	registerForm:function(id){
 		var form=dojo.byId(id);
 		if (!form) {
 			dojo.raise("Form not found with id " + id);
 			return;
 		}
 		
+		dojo.log.warn("registerForm() not implemented yet.");
+	},
+	
+	/**
+	 * Submits the form specified, optionally setting the submitname
+	 * hidden input field to the value of submitName to let the Form 
+	 * component on server know which button caused the submission. (For
+	 * the case of submit button listeners).
+	 * 
+	 * @param form The form(form id) to submit.
+	 * @param submitName Optional submit name string to use when submitting.
+	 */
+	submit:function(form, submitName){
+		var form=dojo.byId(form);
+		if (!form) {
+			dojo.raise("Form not found with id " + form);
+			return;
+		}
+		
 		form.submitname.value=submitName;
 		form.submit();
 	},
 	
-	submitAsync:function(id, submitName){
-		var form=dojo.byId(id);
+	/**
+	 * Does almost the same thing as {@link tapestry.form#submit(form, submitName)}, 
+	 * but submits the request via XHR to the server asynchronously.
+	 * 
+	 * @param form The form(form id) to submit.
+	 * @param submitName Optional submit name string to use when submitting.
+	 * @param content Optional content map, mainly used to pass in browser
+	 * 				  event parameters to form submission, but can be any
+	 * 				  typical form/value pair.
+	 */
+	submitAsync:function(form, submitName, content){
+		var form=dojo.byId(form);
 		if (!form) {
 			dojo.raise("Form not found with id " + id);
 			return;
 		}
 		
+		form.submitname.value=submitName;
 		dojo.io.bind({
 			formNode:form,
+			content:content,
             headers:{"dojo-ajax-request":true},
             useCache:true,
             preventCache:true,
@@ -100,71 +161,4 @@
 	}
 }
 
-// Backwards compatibility functions, to be removed in 4.1.1 js version
-
-// global used to deprecate old event connection methods
-tapestry.form.deprecateConnect=function(){
-	dojo.deprecated("Tapestry.on<event>",
-					"use dojo.event.connect instead",
-					"4.1.1");
-}
-
-// BEGIN old function definitions
-
-Tapestry.default_invalid_field_handler=function(event, field, message){
-	dojo.deprecated("Tapestry.default_invalid_field_handler", 
-					"use tapestry.form.invalidField instead", 
-					"4.1.1");
-	tapestry.form.invalidField(field, message);
-}
-
-Tapestry.find=function(id){
-	dojo.deprecated("Tapestry.find",
-					"use dojo.byId instead",
-					"4.1.1");
-	return dojo.byId(id);
-}
-
-Tapestry.register_form=function(formId){
-	dojo.deprecated("Tapestry.register_form",
-					"use tapestry.form.registerForm instead",
-					"4.1.1");
-}
-
-Tapestry.onpresubmit=tapestry.form.deprecateConnect;
-Tapestry.onsubmit=tapestry.form.deprecateConnect;
-Tapestry.onpostsubmit=tapestry.form.deprecateConnect;
-Tapestry.onreset=tapestry.form.deprecateConnect;
-Tapestry.onrefresh=tapestry.form.deprecateConnect;
-Tapestry.oncancel=tapestry.form.deprecateConnect;
-
-Tapestry.set_focus=function (field){
-	dojo.deprecated("Tapestry.set_focus",
-					"use tapestry.form.focusField instead",
-					"4.1.1");
-	tapestry.form.focusField(field);
-}
-
-Tapestry.trim_field_value = function(fieldId)
-{
-	dojo.deprecated("Tapestry.trim_field_value",
-					"use tapestry.form.trimField instead",
-					"4.1.1");
-	tapestry.form.trimField(fieldId);
-}
-
-Tapestry.require_field = function(event, fieldId, message)
-{
-	dojo.deprecated("Tapestry.require_field",
-					"use tapestry.form.requireField instead",
-					"4.1.1");
-	tapestry.form.requireField(fieldId, message);
-}
-
-Tapestry.submit_form = function(form_id, field_name)
-{
-	dojo.deprecated("Tapestry.submit_form",
-					"use tapestry.form.submit instead",
-					"4.1.1");
-	tapestry.form.submit(form_id, field_name);
-}
\ No newline at end of file
+dojo.require("tapestry.form_compat");

Added: tapestry/tapestry4/trunk/framework/src/js/tapestry/form_compat.js
URL: http://svn.apache.org/viewvc/tapestry/tapestry4/trunk/framework/src/js/tapestry/form_compat.js?rev=411633&view=auto
==============================================================================
--- tapestry/tapestry4/trunk/framework/src/js/tapestry/form_compat.js (added)
+++ tapestry/tapestry4/trunk/framework/src/js/tapestry/form_compat.js Sun Jun  4 18:10:54 2006
@@ -0,0 +1,73 @@
+dojo.provide("tapestry.form_compat");
+dojo.provide("Tapestry");
+
+// Backwards compatibility functions, to be removed in 4.1.1 js version.
+// Should only be included by tapestry.form, don't dojo.require() this module.
+
+// global used to deprecate old event connection methods
+tapestry.form.deprecateConnect=function(){
+	dojo.deprecated("Tapestry.on<event>",
+					"use dojo.event.connect instead",
+					"4.1.1");
+}
+
+// BEGIN old function definitions
+
+Tapestry.default_invalid_field_handler=function(event, field, message){
+	dojo.deprecated("Tapestry.default_invalid_field_handler", 
+					"use tapestry.form.invalidField instead", 
+					"4.1.1");
+	tapestry.form.invalidField(field, message);
+}
+
+Tapestry.find=function(id){
+	dojo.deprecated("Tapestry.find",
+					"use dojo.byId instead",
+					"4.1.1");
+	return dojo.byId(id);
+}
+
+Tapestry.register_form=function(formId){
+	dojo.deprecated("Tapestry.register_form",
+					"use tapestry.form.registerForm instead",
+					"4.1.1");
+	tapestry.form.registerForm(formId);
+}
+
+Tapestry.onpresubmit=tapestry.form.deprecateConnect;
+Tapestry.onsubmit=tapestry.form.deprecateConnect;
+Tapestry.onpostsubmit=tapestry.form.deprecateConnect;
+Tapestry.onreset=tapestry.form.deprecateConnect;
+Tapestry.onrefresh=tapestry.form.deprecateConnect;
+Tapestry.oncancel=tapestry.form.deprecateConnect;
+
+Tapestry.set_focus=function (field){
+	dojo.deprecated("Tapestry.set_focus",
+					"use tapestry.form.focusField instead",
+					"4.1.1");
+	tapestry.form.focusField(field);
+}
+
+Tapestry.trim_field_value = function(fieldId)
+{
+	dojo.deprecated("Tapestry.trim_field_value",
+					"use tapestry.form.trimField instead",
+					"4.1.1");
+	tapestry.form.trimField(fieldId);
+}
+
+Tapestry.require_field = function(event, fieldId, message)
+{
+	dojo.deprecated("Tapestry.require_field",
+					"use tapestry.form.requireField instead",
+					"4.1.1");
+	tapestry.form.requireField(fieldId, message);
+}
+
+Tapestry.submit_form = function(form_id, field_name)
+{
+	dojo.deprecated("Tapestry.submit_form",
+					"use tapestry.form.submit instead",
+					"4.1.1");
+	tapestry.form.submit(form_id, field_name);
+}
\ No newline at end of file

Propchange: tapestry/tapestry4/trunk/framework/src/js/tapestry/form_compat.js
------------------------------------------------------------------------------
    svn:eol-style = native