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"/>


Reply via email to