// 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");
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. */
}
}
- 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 {
}
}
}
-
- /** 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");
- }
- }
- }
}
mainWin.addComponent(b);
}
+ // tx.setIcon(new ThemeResource("icons/16/folder.png"));
+
mainWin.addComponent(new Button("Validate integer",
new Button.ClickListener() {
public void buttonClick(
+ (tx.isValid() ? "" : "not ") + "valid");
};
}));
+ TextField caption = new TextField("Caption", new MethodProperty(tx,
+ "caption"));
+ caption.setImmediate(true);
+ mainWin.addComponent(caption);
}
}
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;
* 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();
}
}
}
+
+ /** 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();
+ }
+
}