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