From 46adabc789a536c6481d2fbaa4e24fe42beb1861 Mon Sep 17 00:00:00 2001 From: Artur Signell Date: Mon, 25 Aug 2008 08:50:11 +0000 Subject: [PATCH] Fixed #677 for Form svn changeset:5253/svn branch:trunk --- .../toolkit/tests/tickets/Ticket677.java | 29 +++++++++++++++-- src/com/itmill/toolkit/ui/Form.java | 32 ++++++++++++++++--- 2 files changed, 55 insertions(+), 6 deletions(-) diff --git a/src/com/itmill/toolkit/tests/tickets/Ticket677.java b/src/com/itmill/toolkit/tests/tickets/Ticket677.java index 07c66cfced..f3803393c6 100644 --- a/src/com/itmill/toolkit/tests/tickets/Ticket677.java +++ b/src/com/itmill/toolkit/tests/tickets/Ticket677.java @@ -2,6 +2,8 @@ package com.itmill.toolkit.tests.tickets; import com.itmill.toolkit.Application; import com.itmill.toolkit.ui.Button; +import com.itmill.toolkit.ui.DateField; +import com.itmill.toolkit.ui.Form; import com.itmill.toolkit.ui.GridLayout; import com.itmill.toolkit.ui.Label; import com.itmill.toolkit.ui.OrderedLayout; @@ -13,7 +15,12 @@ import com.itmill.toolkit.ui.Button.ClickListener; public class Ticket677 extends Application { + private static final Object P1 = new Object(); + private static final Object P2 = new Object(); + private static final Object P3 = new Object(); + private Panel panel; + private Form form; public void init() { Window w = new Window(getClass().getSimpleName()); @@ -25,12 +32,14 @@ public class Ticket677 extends Application { } private void createUI(GridLayout layout) { - panel = new Panel("panel caption"); - layout.addComponent(panel); + createPanel(layout); + createForm(layout); + layout.addComponent(new Button("Enable", new ClickListener() { public void buttonClick(ClickEvent event) { panel.setEnabled(true); + form.setEnabled(true); } })); @@ -39,10 +48,26 @@ public class Ticket677 extends Application { public void buttonClick(ClickEvent event) { panel.setEnabled(false); + form.setEnabled(false); } })); + } + + private void createForm(GridLayout layout) { + form = new Form(); + form.addField(P1, new TextField()); + form.addField(P2, new DateField()); + form.addField(P3, new DateField()); + + layout.addComponent(form); + } + + private void createPanel(GridLayout layout) { + panel = new Panel("panel caption"); + layout.addComponent(panel); + panel.addComponent(new Label("Label 1")); OrderedLayout innerLayout1 = new OrderedLayout( diff --git a/src/com/itmill/toolkit/ui/Form.java b/src/com/itmill/toolkit/ui/Form.java index d47c21cda0..6926916325 100644 --- a/src/com/itmill/toolkit/ui/Form.java +++ b/src/com/itmill/toolkit/ui/Form.java @@ -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); + } + } + + } + } -- 2.39.5