From: Joonas Lehtinen Date: Thu, 22 May 2008 19:02:08 +0000 (+0000) Subject: Fixes #1714 X-Git-Tag: 6.7.0.beta1~4714 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=36c12f2c1deafea8ebf87ca614c0e2c12387502d;p=vaadin-framework.git Fixes #1714 svn changeset:4617/svn branch:trunk --- diff --git a/src/com/itmill/toolkit/tests/tickets/Ticket736.java b/src/com/itmill/toolkit/tests/tickets/Ticket736.java index 7a484aa343..20d4b8920f 100644 --- a/src/com/itmill/toolkit/tests/tickets/Ticket736.java +++ b/src/com/itmill/toolkit/tests/tickets/Ticket736.java @@ -41,9 +41,10 @@ public class Ticket736 extends Application { // Add some validators for the form f.getField("zip").addValidator(new IsInteger()); f.getField("state").addValidator(new IsValidState()); - f.getField("name").addValidator(new IsNotEmpty()); - f.getField("street").addValidator(new IsNotEmpty()); - f.getField("city").addValidator(new IsNotEmpty()); + f.getField("name").setRequired(true); + f.getField("street").setRequired(true); + f.getField("city").setRequired(true); + f.getField("zip").setRequired(true); // Debug form properties final Panel formProperties = new Panel("Form properties"); @@ -67,23 +68,6 @@ public class Ticket736 extends Application { mainWin.showNotification(address.toString()); } })); - - final AddressValidator av = new AddressValidator(); - mainWin.addComponent(new Button("Add addressvalidator", - new Button.ClickListener() { - - public void buttonClick(ClickEvent event) { - f.addValidator(av); - } - })); - mainWin.addComponent(new Button("Remove addressvalidator", - new Button.ClickListener() { - - public void buttonClick(ClickEvent event) { - f.removeValidator(av); - } - })); - } /** Address pojo. */ @@ -170,33 +154,6 @@ public class Ticket736 extends Application { } } - class AddressValidator implements Validator { - - public boolean isValid(Object value) { - if (!(value instanceof Address)) { - return false; - } - Address a = (Address) value; - if (a.getCity() == null || ("" + a.getCity()).length() < 1) { - return false; - } - if (a.getStreet() == null || ("" + a.getStreet()).length() < 1) { - return false; - } - if (a.getZip() == null || ("" + a.getZip()).length() < 5) { - return false; - } - return true; - } - - public void validate(Object value) throws InvalidValueException { - if (!isValid(value)) { - throw new InvalidValueException( - "Address should at least have street, zip and city set"); - } - } - } - /** Simple state validator */ class IsValidState implements Validator { @@ -220,22 +177,4 @@ public class Ticket736 extends Application { } } } - - /** Simple non-empty validator */ - class IsNotEmpty implements Validator { - - public boolean isValid(Object value) { - - if (value == null || "".equals("" + value)) { - return false; - } - return true; - } - - public void validate(Object value) throws InvalidValueException { - if (!isValid(value)) { - throw new InvalidValueException("Must not be empty"); - } - } - } } diff --git a/src/com/itmill/toolkit/tests/tickets/Ticket846.java b/src/com/itmill/toolkit/tests/tickets/Ticket846.java index 75066890f4..ea10dcc020 100644 --- a/src/com/itmill/toolkit/tests/tickets/Ticket846.java +++ b/src/com/itmill/toolkit/tests/tickets/Ticket846.java @@ -45,6 +45,8 @@ public class Ticket846 extends Application { mainWin.addComponent(b); } + // tx.setIcon(new ThemeResource("icons/16/folder.png")); + mainWin.addComponent(new Button("Validate integer", new Button.ClickListener() { public void buttonClick( @@ -53,6 +55,10 @@ public class Ticket846 extends Application { + (tx.isValid() ? "" : "not ") + "valid"); }; })); + TextField caption = new TextField("Caption", new MethodProperty(tx, + "caption")); + caption.setImmediate(true); + mainWin.addComponent(caption); } } diff --git a/src/com/itmill/toolkit/ui/AbstractField.java b/src/com/itmill/toolkit/ui/AbstractField.java index d9883ba3da..72b85468cb 100644 --- a/src/com/itmill/toolkit/ui/AbstractField.java +++ b/src/com/itmill/toolkit/ui/AbstractField.java @@ -1037,7 +1037,7 @@ public abstract class AbstractField extends AbstractComponent implements Field, * also treats empty string as "empty". */ protected boolean isEmpty() { - return (value == null); + return (getValue() == null); } /** diff --git a/src/com/itmill/toolkit/ui/Form.java b/src/com/itmill/toolkit/ui/Form.java index 332e3ce863..805b1a88d8 100644 --- a/src/com/itmill/toolkit/ui/Form.java +++ b/src/com/itmill/toolkit/ui/Form.java @@ -14,6 +14,7 @@ import com.itmill.toolkit.data.Buffered; import com.itmill.toolkit.data.Item; import com.itmill.toolkit.data.Property; import com.itmill.toolkit.data.Validatable; +import com.itmill.toolkit.data.Validator; import com.itmill.toolkit.data.Validator.InvalidValueException; import com.itmill.toolkit.data.util.BeanItem; import com.itmill.toolkit.terminal.PaintException; @@ -104,7 +105,7 @@ public class Form extends AbstractField implements Item.Editor, Buffered, Item, * Form needs to repaint itself if child fields value changes due possible * change in form validity. */ - private ValueChangeListener fieldValueChangeListener = new ValueChangeListener() { + private final ValueChangeListener fieldValueChangeListener = new ValueChangeListener() { public void valueChange( com.itmill.toolkit.data.Property.ValueChangeEvent event) { requestRepaint(); @@ -931,4 +932,29 @@ public class Form extends AbstractField implements Item.Editor, Buffered, Item, } } } + + /** Form is empty if all of its fields are empty. */ + protected boolean isEmpty() { + + for (Iterator i = fields.values().iterator(); i.hasNext();) { + Field f = (Field) i.next(); + if (f instanceof AbstractField) { + if (!((AbstractField) f).isEmpty()) { + return false; + } + } + } + + return true; + } + + /** + * Adding validators directly to form is not supported. + * + * Add the validators to form fields instead. + */ + public void addValidator(Validator validator) { + throw new UnsupportedOperationException(); + } + }