]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fixed #677 for Form
authorArtur Signell <artur.signell@itmill.com>
Mon, 25 Aug 2008 08:50:11 +0000 (08:50 +0000)
committerArtur Signell <artur.signell@itmill.com>
Mon, 25 Aug 2008 08:50:11 +0000 (08:50 +0000)
svn changeset:5253/svn branch:trunk

src/com/itmill/toolkit/tests/tickets/Ticket677.java
src/com/itmill/toolkit/ui/Form.java

index 07c66cfced74ae61688b6d0853a8581be8a5e402..f3803393c6abbd6635f3b4a4e5bbd784b7e89323 100644 (file)
@@ -2,6 +2,8 @@ package com.itmill.toolkit.tests.tickets;
 \r
 import com.itmill.toolkit.Application;\r
 import com.itmill.toolkit.ui.Button;\r
+import com.itmill.toolkit.ui.DateField;\r
+import com.itmill.toolkit.ui.Form;\r
 import com.itmill.toolkit.ui.GridLayout;\r
 import com.itmill.toolkit.ui.Label;\r
 import com.itmill.toolkit.ui.OrderedLayout;\r
@@ -13,7 +15,12 @@ import com.itmill.toolkit.ui.Button.ClickListener;
 \r
 public class Ticket677 extends Application {\r
 \r
+    private static final Object P1 = new Object();\r
+    private static final Object P2 = new Object();\r
+    private static final Object P3 = new Object();\r
+\r
     private Panel panel;\r
+    private Form form;\r
 \r
     public void init() {\r
         Window w = new Window(getClass().getSimpleName());\r
@@ -25,12 +32,14 @@ public class Ticket677 extends Application {
     }\r
 \r
     private void createUI(GridLayout layout) {\r
-        panel = new Panel("panel caption");\r
-        layout.addComponent(panel);\r
+        createPanel(layout);\r
+        createForm(layout);\r
+\r
         layout.addComponent(new Button("Enable", new ClickListener() {\r
 \r
             public void buttonClick(ClickEvent event) {\r
                 panel.setEnabled(true);\r
+                form.setEnabled(true);\r
             }\r
 \r
         }));\r
@@ -39,10 +48,26 @@ public class Ticket677 extends Application {
 \r
             public void buttonClick(ClickEvent event) {\r
                 panel.setEnabled(false);\r
+                form.setEnabled(false);\r
             }\r
 \r
         }));\r
 \r
+    }\r
+\r
+    private void createForm(GridLayout layout) {\r
+        form = new Form();\r
+        form.addField(P1, new TextField());\r
+        form.addField(P2, new DateField());\r
+        form.addField(P3, new DateField());\r
+\r
+        layout.addComponent(form);\r
+    }\r
+\r
+    private void createPanel(GridLayout layout) {\r
+        panel = new Panel("panel caption");\r
+        layout.addComponent(panel);\r
+\r
         panel.addComponent(new Label("Label 1"));\r
 \r
         OrderedLayout innerLayout1 = new OrderedLayout(\r
index d47c21cda0436038042daeb55859991b820c124c..6926916325edad7d49ef757e1ad5ba74166ffc13 100644 (file)
@@ -234,8 +234,9 @@ public class Form extends AbstractField implements Item.Editor, Buffered, Item,
      * the implicit setting by setting this property as false.
      * 
      * @param makeVisible
-     *            If true (default), validation is made visible when commit() is
-     *            called. If false, the visibility is left as it is.
+     *                If true (default), validation is made visible when
+     *                commit() is called. If false, the visibility is left as it
+     *                is.
      */
     public void setValidationVisibleOnCommit(boolean makeVisible) {
         validationVisibleOnCommit = makeVisible;
@@ -244,14 +245,14 @@ public class Form extends AbstractField implements Item.Editor, Buffered, Item,
     /**
      * Is validation made automatically visible on commit?
      * 
-     *  See setValidationVisibleOnCommit().
+     * See setValidationVisibleOnCommit().
      * 
      * @return true if validation is made automatically visible on commit.
      */
     public boolean isValidationVisibleOnCommit() {
         return validationVisibleOnCommit;
     }
-    
+
     /*
      * Commit changes to the data source Don't add a JavaDoc comment here, we
      * use the default one from the interface.
@@ -1074,4 +1075,27 @@ public class Form extends AbstractField implements Item.Editor, Buffered, Item,
         formFooter.setParent(this);
     }
 
+    public void setEnabled(boolean enabled) {
+        super.setEnabled(enabled);
+
+        updateComponentDisabledState(!enabled);
+    }
+
+    public void setDisabledByContainer(boolean disabledByContainer) {
+        super.setDisabledByContainer(disabledByContainer);
+
+        updateComponentDisabledState(disabledByContainer);
+    }
+
+    private void updateComponentDisabledState(boolean disabled) {
+        // Update the disabledByContainer state for all subcomponents
+        for (Iterator i = fields.values().iterator(); i.hasNext();) {
+            Component c = (Component) i.next();
+            if (c instanceof AbstractComponent) {
+                ((AbstractComponent) c).setDisabledByContainer(disabled);
+            }
+        }
+
+    }
+
 }