From: Matti Tahvonen Date: Tue, 20 May 2008 11:30:01 +0000 (+0000) Subject: fixes #1668 X-Git-Tag: 6.7.0.beta1~4730 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=148b3b674ff3ddab760ecc13db0111eb493070c8;p=vaadin-framework.git fixes #1668 svn changeset:4564/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/ui/Form.java b/src/com/itmill/toolkit/ui/Form.java index 341b0c9a0c..332e3ce863 100644 --- a/src/com/itmill/toolkit/ui/Form.java +++ b/src/com/itmill/toolkit/ui/Form.java @@ -100,6 +100,17 @@ public class Form extends AbstractField implements Item.Editor, Buffered, Item, */ private Collection visibleItemProperties; + /** + * Form needs to repaint itself if child fields value changes due possible + * change in form validity. + */ + private ValueChangeListener fieldValueChangeListener = new ValueChangeListener() { + public void valueChange( + com.itmill.toolkit.data.Property.ValueChangeEvent event) { + requestRepaint(); + } + }; + /** * Contructs a new form with default layout. * @@ -371,6 +382,7 @@ public class Form extends AbstractField implements Item.Editor, Buffered, Item, if (propertyId != null && field != null) { fields.put(propertyId, field); + field.addListener(fieldValueChangeListener); propertyIds.addLast(propertyId); field.setReadThrough(readThrough); field.setWriteThrough(writeThrough); @@ -441,6 +453,7 @@ public class Form extends AbstractField implements Item.Editor, Buffered, Item, propertyIds.remove(id); fields.remove(id); layout.removeComponent(field); + field.removeListener(fieldValueChangeListener); return true; } @@ -674,6 +687,8 @@ public class Form extends AbstractField implements Item.Editor, Buffered, Item, // Replaces the old field with new one layout.replaceComponent(oldField, newField); fields.put(propertyId, newField); + newField.addListener(fieldValueChangeListener); + oldField.removeListener(fieldValueChangeListener); return newField; }