]> source.dussan.org Git - vaadin-framework.git/commitdiff
Fixes #1714
authorJoonas Lehtinen <joonas.lehtinen@itmill.com>
Thu, 22 May 2008 19:02:08 +0000 (19:02 +0000)
committerJoonas Lehtinen <joonas.lehtinen@itmill.com>
Thu, 22 May 2008 19:02:08 +0000 (19:02 +0000)
svn changeset:4617/svn branch:trunk

src/com/itmill/toolkit/tests/tickets/Ticket736.java
src/com/itmill/toolkit/tests/tickets/Ticket846.java
src/com/itmill/toolkit/ui/AbstractField.java
src/com/itmill/toolkit/ui/Form.java

index 7a484aa34342a385de268a04f3a634f26c0fa2bc..20d4b8920f74cf8101f2a61923d15ef6d9fcd5e1 100644 (file)
@@ -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");
-            }
-        }
-    }
 }
index 75066890f4cec5657ec8c760839cb0cbfc961142..ea10dcc0207e3c36ef1be3307a4f88941648e1f6 100644 (file)
@@ -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);
     }
 
 }
index d9883ba3da0c896dbaf27ecd31f9271c91281c6c..72b85468cb7936b30a67d413c4d3a21f11f6e0fb 100644 (file)
@@ -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);
     }
 
     /**
index 332e3ce8632cabf15819b4e658e0dc5f6b6e0965..805b1a88d86fb27ed2952c2b7451b3014d6a6ba7 100644 (file)
@@ -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();
+    }
+
 }