]> source.dussan.org Git - vaadin-framework.git/commitdiff
Convert hide errors flag to shared state (#8437).
authorHenri Sara <hesara@vaadin.com>
Fri, 16 Mar 2012 12:36:47 +0000 (14:36 +0200)
committerArtur Signell <artur@vaadin.com>
Wed, 21 Mar 2012 15:52:37 +0000 (17:52 +0200)
src/com/vaadin/terminal/gwt/client/AbstractFieldState.java
src/com/vaadin/terminal/gwt/client/VCaption.java
src/com/vaadin/terminal/gwt/client/ui/AbstractComponentConnector.java
src/com/vaadin/terminal/gwt/client/ui/VFormLayout.java
src/com/vaadin/ui/AbstractComponent.java
src/com/vaadin/ui/AbstractField.java
src/com/vaadin/ui/Select.java

index 9376be29f779ed27d5a61d43d5a0b7dba02051a9..bf84e2e606d3852fd3976958c2a0004dbeba3d2b 100644 (file)
@@ -15,6 +15,7 @@ import com.vaadin.ui.AbstractField;
  */
 public class AbstractFieldState extends ComponentState {
     private boolean propertyReadOnly = false;
+    private boolean hideErrors = false;
 
     /**
      * Checks if the property data source for the Field is in read only mode.
@@ -37,4 +38,28 @@ public class AbstractFieldState extends ComponentState {
         this.propertyReadOnly = propertyReadOnly;
     }
 
+    /**
+     * Returns true if the component will hide any errors even if the error
+     * message is set.
+     * 
+     * @return true if error messages are disabled
+     */
+    public boolean isHideErrors() {
+        return hideErrors;
+    }
+
+    /**
+     * Sets whether the component should hide any errors even if the error
+     * message is set.
+     * 
+     * This is used e.g. on forms to hide error messages for invalid fields
+     * before the first user actions.
+     * 
+     * @param hideErrors
+     *            true if error messages should be hidden
+     */
+    public void setHideErrors(boolean hideErrors) {
+        this.hideErrors = hideErrors;
+    }
+
 }
index b1adb83db8bfd9d9d05ae5bf46d14ae8847c4f0c..56af03b8d124a48303d31455f54df2166ab7bdd2 100644 (file)
@@ -32,10 +32,7 @@ public class VCaption extends HTML {
 
     private int maxWidth = -1;
 
-    protected static final String ATTRIBUTE_CAPTION = "caption";
-    protected static final String ATTRIBUTE_DESCRIPTION = "description";
     protected static final String ATTRIBUTE_REQUIRED = AbstractComponentConnector.ATTRIBUTE_REQUIRED;
-    protected static final String ATTRIBUTE_HIDEERRORS = AbstractComponentConnector.ATTRIBUTE_HIDEERRORS;
 
     private enum InsertPosition {
         ICON, CAPTION, REQUIRED, ERROR
@@ -118,8 +115,11 @@ public class VCaption extends HTML {
         boolean hasIcon = owner.getState().getIcon() != null;
         boolean showRequired = uidl
                 .getBooleanAttribute(AbstractComponentConnector.ATTRIBUTE_REQUIRED);
-        boolean showError = owner.getState().getErrorMessage() != null
-                && !uidl.getBooleanAttribute(AbstractComponentConnector.ATTRIBUTE_HIDEERRORS);
+        boolean showError = owner.getState().getErrorMessage() != null;
+        if (owner.getState() instanceof AbstractFieldState) {
+            showError = showError
+                    && !((AbstractFieldState) owner.getState()).isHideErrors();
+        }
 
         if (hasIcon) {
             if (icon == null) {
index e4a444def7ea9a60734ebfb63a391e8b6c662623..f26aad9d2a0350580e1c4e31375c33a320712878 100644 (file)
@@ -35,7 +35,6 @@ public abstract class AbstractComponentConnector extends AbstractConnector
     // Not all references to the string literals have been converted to use
     // these!
     public static final String ATTRIBUTE_REQUIRED = "required";
-    public static final String ATTRIBUTE_HIDEERRORS = "hideErrors";
 
     private Widget widget;
 
index 93b658889840b96aeef14876c0817730d006a620..92d15df618924ef35408d0de4f5d88d58f5a61db 100644 (file)
@@ -18,6 +18,7 @@ import com.google.gwt.user.client.ui.FlexTable;
 import com.google.gwt.user.client.ui.HTML;
 import com.google.gwt.user.client.ui.SimplePanel;
 import com.google.gwt.user.client.ui.Widget;
+import com.vaadin.terminal.gwt.client.AbstractFieldState;
 import com.vaadin.terminal.gwt.client.ApplicationConnection;
 import com.vaadin.terminal.gwt.client.BrowserInfo;
 import com.vaadin.terminal.gwt.client.ComponentConnector;
@@ -351,8 +352,13 @@ public class VFormLayout extends SimplePanel {
 
         public void updateFromUIDL(UIDL uidl, ComponentConnector component) {
             owner = component;
-            if (null != owner.getState().getErrorMessage()
-                    && !uidl.getBooleanAttribute(AbstractComponentConnector.ATTRIBUTE_HIDEERRORS)) {
+            boolean showError = null != owner.getState().getErrorMessage();
+            if (owner.getState() instanceof AbstractFieldState) {
+                showError = showError
+                        && !((AbstractFieldState) owner.getState())
+                                .isHideErrors();
+            }
+            if (showError) {
                 if (errorIndicatorElement == null) {
                     errorIndicatorElement = DOM.createDiv();
                     DOM.setInnerHTML(errorIndicatorElement, "&nbsp;");
index a49dbcb91300cc1c241eac8eb2b8c47e67efa0d7..4da172d39516a9e3d195b09cd68d80eb29425040 100644 (file)
@@ -862,6 +862,8 @@ public abstract class AbstractComponent implements Component, MethodEventSource
         ErrorMessage error = getErrorMessage();
         if (null != error) {
             sharedState.setErrorMessage(error.getFormattedHtmlMessage());
+        } else {
+            sharedState.setErrorMessage(null);
         }
 
         return sharedState;
index 742d39d83543ff378c01703d2f377ee47379008d..438050650570efdc590a2b1c09d6b054a3376189 100644 (file)
@@ -178,12 +178,6 @@ public abstract class AbstractField<T> extends AbstractComponent implements
             target.addAttribute(AbstractComponentConnector.ATTRIBUTE_REQUIRED,
                     true);
         }
-
-        // Hide the error indicator if needed
-        if (shouldHideErrors()) {
-            target.addAttribute(
-                    AbstractComponentConnector.ATTRIBUTE_HIDEERRORS, true);
-        }
     }
 
     /**
@@ -1625,7 +1619,12 @@ public abstract class AbstractField<T> extends AbstractComponent implements
 
     @Override
     public AbstractFieldState getState() {
-        return (AbstractFieldState) super.getState();
+        AbstractFieldState state = (AbstractFieldState) super.getState();
+
+        // Hide the error indicator if needed
+        state.setHideErrors(shouldHideErrors());
+
+        return state;
     }
 
     @Override
index e4eb2e68b3b639622bead08c0eb882565a8f11e4..173e96c16df87e0ef3e311c38d8e90b8f9a297b7 100644 (file)
@@ -273,12 +273,6 @@ public class Select extends AbstractSelect implements AbstractSelect.Filtering,
         currentPage = -1; // current page is always set by client
 
         optionRequest = true;
-
-        // Hide the error indicator if needed
-        if (shouldHideErrors()) {
-            target.addAttribute(
-                    AbstractComponentConnector.ATTRIBUTE_HIDEERRORS, true);
-        }
     }
 
     /**