Author: hlship
Date: Sun Nov 26 09:39:39 2006
New Revision: 479384
URL: http://svn.apache.org/viewvc?view=rev&rev=479384
Log:
Add a disabled parameter to field components.
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Field.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/AbstractField.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Checkbox.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/TextArea.java
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/TextField.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/IntegrationTests.java
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/SimpleForm.java
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/SimpleForm.html
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Field.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Field.java?view=diff&rev=479384&r1=479383&r2=479384
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Field.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/Field.java
Sun Nov 26 09:39:39 2006
@@ -40,4 +40,13 @@
* @return the label
*/
String getLabel();
+
+ /**
+ * Returns true if the field is disabled; A disabled field will render a
disabled attribute so
+ * that it is non-responsive on the client (at least, until its disabled
status is changed on
+ * the client using JavaScript). A disabled field will ignore any value
passed up in a form
+ * submit request. Care must be taken if the disabled status of a field
can change between the
+ * time the field is rendered and the time the enclosing form is submitted.
+ */
+ boolean isDisabled();
}
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/AbstractField.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/AbstractField.java?view=diff&rev=479384&r1=479383&r2=479384
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/AbstractField.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/AbstractField.java
Sun Nov 26 09:39:39 2006
@@ -19,11 +19,13 @@
import org.apache.tapestry.ComponentAction;
import org.apache.tapestry.ComponentResources;
import org.apache.tapestry.Field;
+import org.apache.tapestry.MarkupWriter;
import org.apache.tapestry.annotations.ComponentClass;
import org.apache.tapestry.annotations.Environmental;
import org.apache.tapestry.annotations.Inject;
import org.apache.tapestry.annotations.Mixin;
import org.apache.tapestry.annotations.Parameter;
+import org.apache.tapestry.annotations.PostBeginRender;
import org.apache.tapestry.annotations.SetupRender;
import org.apache.tapestry.corelib.mixins.RenderInformals;
import org.apache.tapestry.ioc.internal.util.InternalUtils;
@@ -45,6 +47,9 @@
@Parameter
private String _label;
+ @Parameter
+ private boolean _disabled;
+
@SuppressWarnings("unused")
@Mixin
private RenderInformals _renderInformals;
@@ -110,6 +115,13 @@
_formSupport.store(this, PROCESS_SUBMISSION_ACTION);
}
+ @PostBeginRender
+ final void renderDisabledAttribute(MarkupWriter writer)
+ {
+ if (_disabled)
+ writer.attributes("disabled", "disabled");
+ }
+
public final String getClientId()
{
return _clientId;
@@ -120,6 +132,11 @@
return _elementName;
}
+ public final boolean isDisabled()
+ {
+ return _disabled;
+ }
+
private void setupElementName(String elementName)
{
_elementName = elementName;
@@ -127,20 +144,24 @@
private final void processSubmission()
{
- processSubmission(_request);
+ if (!_disabled)
+ processSubmission(_request, _elementName);
}
/**
* Method implemented by subclasses to actually do the work of processing
the submission of the
- * form. The element's elementName property will already have been set.
+ * form. The element's elementName property will already have been set.
This method is only
+ * invoked if the field is <strong>not [EMAIL PROTECTED] #isDisabled()
disabled}</strong>.
*
* @param request
* the current request, presumably so that the component may
extract a quert
* parameter value that matches the component's element name.
+ * @param elementName
+ * the name of the element (used to find the correct parameter
in the request)
*/
- protected abstract void processSubmission(WebRequest request);
+ protected abstract void processSubmission(WebRequest request, String
elementName);
- public String getLabel()
+ public final String getLabel()
{
if (_label != null)
return _label;
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Checkbox.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Checkbox.java?view=diff&rev=479384&r1=479383&r2=479384
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Checkbox.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/Checkbox.java
Sun Nov 26 09:39:39 2006
@@ -49,9 +49,9 @@
}
@Override
- protected void processSubmission(WebRequest request)
+ protected void processSubmission(WebRequest request, String elementName)
{
- String postedValue = request.getParameter(getElementName());
+ String postedValue = request.getParameter(elementName);
_value = postedValue != null;
}
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/TextArea.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/TextArea.java?view=diff&rev=479384&r1=479383&r2=479384
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/TextArea.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/TextArea.java
Sun Nov 26 09:39:39 2006
@@ -56,9 +56,9 @@
}
@Override
- protected void processSubmission(WebRequest request)
+ protected void processSubmission(WebRequest request, String elementName)
{
- _value = request.getParameter(getElementName());
+ _value = request.getParameter(elementName);
}
}
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/TextField.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/TextField.java?view=diff&rev=479384&r1=479383&r2=479384
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/TextField.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/main/java/org/apache/tapestry/corelib/components/TextField.java
Sun Nov 26 09:39:39 2006
@@ -52,9 +52,9 @@
}
@Override
- protected void processSubmission(WebRequest request)
+ protected void processSubmission(WebRequest request, String elementName)
{
- _value = request.getParameter(getElementName());
+ _value = request.getParameter(elementName);
}
}
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/IntegrationTests.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/IntegrationTests.java?view=diff&rev=479384&r1=479383&r2=479384
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/IntegrationTests.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/IntegrationTests.java
Sun Nov 26 09:39:39 2006
@@ -272,9 +272,10 @@
clickAndWait("link=SimpleForm");
- assertText("//label[1]", "Email");
- assertText("//label[2]", "Incident Message");
- assertText("//label[3]", "Urgent");
+ assertText("//label[1]", "Disable");
+ assertText("//label[2]", "Email");
+ assertText("//label[3]", "Incident Message");
+ assertText("//label[4]", "Urgent");
assertValue("email", "");
assertValue("message", "");
@@ -295,6 +296,8 @@
assertTextPresent("[EMAIL PROTECTED]");
assertTextPresent("[Message for you, sir!]");
assertTextPresent("[true]");
+
+ // Haven't figured out how to get selenium to check that fields are
disabled.
}
@Test
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/SimpleForm.java
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/SimpleForm.java?view=diff&rev=479384&r1=479383&r2=479384
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/SimpleForm.java
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/java/org/apache/tapestry/integration/app1/pages/SimpleForm.java
Sun Nov 26 09:39:39 2006
@@ -12,28 +12,41 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package org.apache.tapestry.integration.app1.pages;
-
-import org.apache.tapestry.annotations.ComponentClass;
-import org.apache.tapestry.annotations.OnEvent;
-import org.apache.tapestry.annotations.Persist;
-import org.apache.tapestry.integration.app1.data.IncidentData;
-
[EMAIL PROTECTED]
-public class SimpleForm
-{
- @Persist
- private IncidentData _incident;
-
- public IncidentData getIncident()
- {
- return _incident;
- }
-
- @OnEvent("prepare")
- void prepare()
- {
- if (_incident == null)
- _incident = new IncidentData();
- }
-}
+package org.apache.tapestry.integration.app1.pages;
+
+import org.apache.tapestry.annotations.ComponentClass;
+import org.apache.tapestry.annotations.OnEvent;
+import org.apache.tapestry.annotations.Persist;
+import org.apache.tapestry.integration.app1.data.IncidentData;
+
[EMAIL PROTECTED]
+public class SimpleForm
+{
+ @Persist
+ private IncidentData _incident;
+
+ @Persist
+ private boolean _disabled;
+
+ public boolean isDisabled()
+ {
+ return _disabled;
+ }
+
+ public void setDisabled(boolean disable)
+ {
+ _disabled = disable;
+ }
+
+ public IncidentData getIncident()
+ {
+ return _incident;
+ }
+
+ @OnEvent("prepare")
+ void prepare()
+ {
+ if (_incident == null)
+ _incident = new IncidentData();
+ }
+}
Modified:
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/SimpleForm.html
URL:
http://svn.apache.org/viewvc/tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/SimpleForm.html?view=diff&rev=479384&r1=479383&r2=479384
==============================================================================
---
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/SimpleForm.html
(original)
+++
tapestry/tapestry5/tapestry-core/trunk/src/test/resources/org/apache/tapestry/integration/app1/pages/SimpleForm.html
Sun Nov 26 09:39:39 2006
@@ -3,14 +3,19 @@
<p> This is the <em>very early</em> start to Tapestry 5 form support. </p>
- <t:comp type="Form">
+ <t:comp type="Form">
+ <t:comp type="Checkbox" id="disable" value="disabled"/>
+ <t:comp type="Label" field="component:disable"/>
+
+ <hr/>
+
<t:comp type="Label" field="component:email">This isn't
used</t:comp>: <t:comp
- type="TextField" id="email" value="incident.email" size="50"/>
+ type="TextField" id="email" value="incident.email" size="50"
disabled="disabled"/>
<br/>
<t:comp type="Label" field="component:message"/>: <t:comp
type="TextArea" id="message" label="literal:Incident Message"
- value="incident.message" cols="50" rows="10"> You can put text
here, but it isn't used. </t:comp>
+ value="incident.message" cols="50" rows="10" disabled="disabled">
You can put text here, but it isn't used. </t:comp>
<br/>
- <t:comp type="Checkbox" id="urgent" value="incident.urgent"/>
+ <t:comp type="Checkbox" id="urgent" value="incident.urgent"
disabled="disabled"/>
<t:comp type="Label" field="component:urgent"/>
<br/>
<input type="submit"/>