aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJoonas Lehtinen <joonas.lehtinen@itmill.com>2008-05-19 08:58:08 +0000
committerJoonas Lehtinen <joonas.lehtinen@itmill.com>2008-05-19 08:58:08 +0000
commit5c921be9b94c4944b00fb767a32cbb3fd97e59e5 (patch)
treee0c54ab6dd4ca3a82c6635c9ff90119627b0841d /src
parentc8309b4da579b11b2c54c39b90f1109b2e6865dc (diff)
downloadvaadin-framework-5c921be9b94c4944b00fb767a32cbb3fd97e59e5.tar.gz
vaadin-framework-5c921be9b94c4944b00fb767a32cbb3fd97e59e5.zip
Fixes #1661
svn changeset:4539/svn branch:trunk
Diffstat (limited to 'src')
-rw-r--r--src/com/itmill/toolkit/tests/tickets/Ticket846.java86
-rw-r--r--src/com/itmill/toolkit/ui/AbstractField.java51
2 files changed, 91 insertions, 46 deletions
diff --git a/src/com/itmill/toolkit/tests/tickets/Ticket846.java b/src/com/itmill/toolkit/tests/tickets/Ticket846.java
index 8fa5bab992..75066890f4 100644
--- a/src/com/itmill/toolkit/tests/tickets/Ticket846.java
+++ b/src/com/itmill/toolkit/tests/tickets/Ticket846.java
@@ -1,6 +1,5 @@
package com.itmill.toolkit.tests.tickets;
-
import com.itmill.toolkit.Application;
import com.itmill.toolkit.data.Validator;
import com.itmill.toolkit.data.util.MethodProperty;
@@ -10,45 +9,50 @@ import com.itmill.toolkit.ui.Window;
public class Ticket846 extends Application {
- public void init() {
-
- final Window mainWin = new Window("Test app for #846");
- setMainWindow(mainWin);
-
- final TextField tx = new TextField("Integer");
- mainWin.addComponent(tx);
- tx.setImmediate(true);
- tx.addValidator(new Validator() {
-
- public boolean isValid(Object value) {
- try {
- Integer.parseInt("" + value);
- return true;
- } catch (NumberFormatException e) {
- return false;
- }
- }
-
- public void validate(Object value) throws InvalidValueException {
- if (!isValid(value))
- throw new InvalidValueException(value + " is not a number");
- }
- });
-
- final String[] visibleProps = {"required","invalidAllowed","readOnly","readThrough","invalidCommitted"};
- for (int i=0;i<visibleProps.length; i++ ) {
- Button b = new Button(visibleProps[i],new MethodProperty(tx,visibleProps[i]));
- b.setImmediate(true);
- mainWin.addComponent(b);
- }
-
- mainWin.addComponent(new Button("Validate integer",
- new Button.ClickListener() {
- public void buttonClick(
- com.itmill.toolkit.ui.Button.ClickEvent event) {
- mainWin.showNotification("The field is " + (tx.isValid()?"":"not ") + "valid");
- };
- }));
- }
+ public void init() {
+
+ final Window mainWin = new Window("Test app for #846");
+ setMainWindow(mainWin);
+
+ final TextField tx = new TextField("Integer");
+ mainWin.addComponent(tx);
+ tx.setImmediate(true);
+ tx.addValidator(new Validator() {
+
+ public boolean isValid(Object value) {
+ try {
+ Integer.parseInt("" + value);
+ return true;
+ } catch (NumberFormatException e) {
+ return false;
+ }
+ }
+
+ public void validate(Object value) throws InvalidValueException {
+ if (!isValid(value)) {
+ throw new InvalidValueException(value + " is not a number");
+ }
+ }
+ });
+
+ final String[] visibleProps = { "required", "invalidAllowed",
+ "readOnly", "readThrough", "invalidCommitted",
+ "validationVisible" };
+ for (int i = 0; i < visibleProps.length; i++) {
+ Button b = new Button(visibleProps[i], new MethodProperty(tx,
+ visibleProps[i]));
+ b.setImmediate(true);
+ mainWin.addComponent(b);
+ }
+
+ mainWin.addComponent(new Button("Validate integer",
+ new Button.ClickListener() {
+ public void buttonClick(
+ com.itmill.toolkit.ui.Button.ClickEvent event) {
+ mainWin.showNotification("The field is "
+ + (tx.isValid() ? "" : "not ") + "valid");
+ };
+ }));
+ }
}
diff --git a/src/com/itmill/toolkit/ui/AbstractField.java b/src/com/itmill/toolkit/ui/AbstractField.java
index 7fef394a97..fb251d70b6 100644
--- a/src/com/itmill/toolkit/ui/AbstractField.java
+++ b/src/com/itmill/toolkit/ui/AbstractField.java
@@ -110,6 +110,11 @@ public abstract class AbstractField extends AbstractComponent implements Field,
*/
private boolean required = false;
+ /**
+ * Is automatic validation enabled.
+ */
+ private boolean validationVisible = true;
+
/* Component basics ************************************************ */
/*
@@ -691,12 +696,14 @@ public abstract class AbstractField extends AbstractComponent implements Field,
*/
public ErrorMessage getErrorMessage() {
- // Check validation errors
+ // Check validation errors only if automatic validation is enabled
ErrorMessage validationError = null;
- try {
- validate();
- } catch (Validator.InvalidValueException e) {
- validationError = e;
+ if (isValidationVisible()) {
+ try {
+ validate();
+ } catch (Validator.InvalidValueException e) {
+ validationError = e;
+ }
}
// Check if there are any systems errors
@@ -976,4 +983,38 @@ public abstract class AbstractField extends AbstractComponent implements Field,
requestRepaint();
}
+ /**
+ * Is automatic, visible validation enabled?
+ *
+ * If automatic validation is enabled, any validators connected to this
+ * component are evaluated while painting the component and potential error
+ * messages are sent to client. If the automatic validation is turned off,
+ * isValid() and validate() methods still work, but one must show the
+ * validation in their own code.
+ *
+ * @return True, if automatic validation is enabled.
+ */
+ public boolean isValidationVisible() {
+ return validationVisible;
+ }
+
+ /**
+ * Enable or disable automatic, visible validation.
+ *
+ * If automatic validation is enabled, any validators connected to this
+ * component are evaluated while painting the component and potential error
+ * messages are sent to client. If the automatic validation is turned off,
+ * isValid() and validate() methods still work, but one must show the
+ * validation in their own code.
+ *
+ * @param validateAutomatically
+ * True, if automatic validation is enabled.
+ */
+ public void setValidationVisible(boolean validateAutomatically) {
+ if (validationVisible != validateAutomatically) {
+ requestRepaint();
+ validationVisible = validateAutomatically;
+ }
+ }
+
} \ No newline at end of file