Alexander Wels has uploaded a new change for review.

Change subject: userportal, webadmin: Number field reporting wrong error
......................................................................

userportal, webadmin: Number field reporting wrong error

- All EntityModelTextBoxEditors that are Integer/Long/Double were
  reporting the wrong error message when entering a non number in
  the field. Because of a parsing error during conversion it would
  return a null instead of the correct type and the non null model
  validation would report cannot be empty instead of not a number.
- This patch fixes that so that the editor immediately reports the
  correct error message without sending the value to the model for
  validation.

Change-Id: I3702cb370528a0baf6a176fa89cd736596a10ff2
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1168315
Signed-off-by: Alexander Wels <[email protected]>
---
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/editor/UiCommonEditorVisitor.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/AbstractModelBoundPopupPresenterWidget.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidgetWithLabel.java
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EditorStateUpdate.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/DoubleEntityModelLabelEditor.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelTextBox.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelTextBoxEditor.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/IntegerEntityModelLabelEditor.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/IntegerEntityModelTextBoxEditor.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/IntegerEntityModelTextBoxOnlyEditor.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/LongEntityModelTextBoxEditor.java
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/NumberEntityModelLabelEditor.java
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/NumberEntityModelTextBoxEditor.java
A 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/NumberEntityModelTextBoxOnlyEditor.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/ShortEntityModelTextBoxOnlyEditor.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/parser/generic/ToIntEntityModelParser.java
M 
frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
17 files changed, 241 insertions(+), 29 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/44/37244/1

diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/editor/UiCommonEditorVisitor.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/editor/UiCommonEditorVisitor.java
index 8316d00..4144e42 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/editor/UiCommonEditorVisitor.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/editor/UiCommonEditorVisitor.java
@@ -7,6 +7,7 @@
 import org.ovirt.engine.ui.common.widget.HasEnabledWithHints;
 import org.ovirt.engine.ui.common.widget.HasValidation;
 import org.ovirt.engine.ui.common.widget.editor.TakesConstrainedValueEditor;
+import org.ovirt.engine.ui.common.widget.editor.generic.EntityModelTextBox;
 import org.ovirt.engine.ui.uicommonweb.models.EntityModel;
 import org.ovirt.engine.ui.uicommonweb.models.ListModel;
 import org.ovirt.engine.ui.uicommonweb.models.Model;
@@ -64,7 +65,13 @@
                 public void onValueChange(ValueChangeEvent<T> event) {
                     // Set value in model
                     if (ctx.canSetInModel()) {
-                        ctx.setInModel(event.getValue());
+                        boolean editorValid = true;
+                        if (event.getSource() instanceof EntityModelTextBox) {
+                            editorValid = 
((EntityModelTextBox<?>)event.getSource()).isStateValid();
+                        }
+                        if (editorValid) {
+                            ctx.setInModel(event.getValue());
+                        }
                     }
                 }
             });
@@ -86,7 +93,13 @@
                     if (KeyCodes.KEY_ENTER == 
event.getNativeEvent().getKeyCode()) {
                         // Set value in model
                         if (ctx.canSetInModel()) {
-                            ctx.setInModel(editor.getValue());
+                            boolean editorValid = true;
+                            if (editor instanceof EntityModelTextBox) {
+                                editorValid = 
((EntityModelTextBox<?>)editor).isStateValid();
+                            }
+                            if (editorValid) {
+                                ctx.setInModel(editor.getValue());
+                            }
                         }
                     }
                 }
@@ -214,7 +227,12 @@
         if (model.getIsValid()) {
             editor.markAsValid();
         } else {
-            editor.markAsInvalid(model.getInvalidityReasons());
+            //The validator will set the entities to be valid before running 
checks
+            //So there is no possibility to go from one error to another 
without this
+            //updating the error message.
+            if (editor.isValid()) {
+                editor.markAsInvalid(model.getInvalidityReasons());
+            }
         }
     }
 
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/AbstractModelBoundPopupPresenterWidget.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/AbstractModelBoundPopupPresenterWidget.java
index 3c745c6..16d9df3 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/AbstractModelBoundPopupPresenterWidget.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/presenter/AbstractModelBoundPopupPresenterWidget.java
@@ -301,7 +301,7 @@
         }
     }
 
-    void addFooterButtons(T model) {
+    void addFooterButtons(final T model) {
         for (int i = model.getCommands().size() - 1; i >= 0; i--) {
             UICommand command = model.getCommands().get(i);
             final HasUiCommandClickHandlers button = getView().addFooterButton(
@@ -312,14 +312,18 @@
             registerHandler(button.addClickHandler(new ClickHandler() {
                 @Override
                 public void onClick(ClickEvent event) {
-                    getView().flush();
-                    beforeCommandExecuted(button.getCommand());
-                    button.getCommand().execute();
+                    handleCommandExecution(button.getCommand(), model);
                 }
             }));
         }
     }
 
+    private void handleCommandExecution(UICommand command, T model) {
+        getView().flush();
+        beforeCommandExecuted(command);
+        command.execute();
+    }
+
     /**
      * Shows the popup progress indicator.
      */
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidgetWithLabel.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidgetWithLabel.java
index 4b2faf2..f25db76 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidgetWithLabel.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/AbstractValidatedWidgetWithLabel.java
@@ -3,6 +3,7 @@
 import org.ovirt.engine.ui.common.idhandler.HasElementId;
 import org.ovirt.engine.ui.common.utils.PatternflyConstants;
 import org.ovirt.engine.ui.common.view.popup.FocusableComponentsContainer;
+import org.ovirt.engine.ui.common.widget.editor.EditorStateUpdateEvent;
 import org.ovirt.engine.ui.common.widget.editor.EditorWidget;
 
 import com.google.gwt.core.client.GWT;
@@ -55,6 +56,11 @@
         String contentWidget();
     }
 
+    //We need to store the valid state of the editor so that when the model 
validator
+    //runs and the editor is not valid (due to a parsing error). The editor 
doesn't get
+    //reset by the model.
+    private boolean editorStateValid = true;
+
     private final W contentWidget;
 
     @UiField
@@ -88,10 +94,12 @@
         this.renderer = renderer;
 
         initWidget(WidgetUiBinder.uiBinder.createAndBindUi(this));
+        addStateUpdateHandler();
     }
 
     public AbstractValidatedWidgetWithLabel(W contentWidget) {
         this(contentWidget, new VisibilityRenderer.SimpleVisibilityRenderer());
+        addStateUpdateHandler();
     }
 
     @Override
@@ -336,4 +344,31 @@
     public void setRenderer(VisibilityRenderer renderer) {
         this.renderer = renderer;
     }
+
+    protected void handleInvalidState() {
+        editorStateValid = false;
+    }
+
+    @Override
+    public void markAsValid() {
+        if (editorStateValid) {
+            super.markAsValid();
+        }
+    }
+
+    private void addStateUpdateHandler() {
+        ((Widget) this.getContentWidget()).addHandler(new 
EditorStateUpdateEvent.EditorStateUpdateHandler() {
+            @Override
+            public void onEditorStateUpdate(EditorStateUpdateEvent event) {
+                if (event.isValid()) {
+                    //Mark the editor as valid.
+                    editorStateValid = true;
+                    markAsValid();
+                } else {
+                    //Mark the editor as invalid.
+                    handleInvalidState();
+                }
+            }
+        }, EditorStateUpdateEvent.getType());
+    }
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EditorStateUpdate.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EditorStateUpdate.java
new file mode 100644
index 0000000..3fc8842
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/EditorStateUpdate.java
@@ -0,0 +1,8 @@
+package org.ovirt.engine.ui.common.widget.editor;
+
+import com.gwtplatform.dispatch.annotation.GenEvent;
+
+@GenEvent
+public class EditorStateUpdate {
+    boolean valid;
+}
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/DoubleEntityModelLabelEditor.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/DoubleEntityModelLabelEditor.java
index 12c6866..789bb85 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/DoubleEntityModelLabelEditor.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/DoubleEntityModelLabelEditor.java
@@ -3,7 +3,7 @@
 import com.google.gwt.text.shared.Parser;
 import com.google.gwt.text.shared.Renderer;
 
-public class DoubleEntityModelLabelEditor extends 
EntityModelLabelEditor<Double> {
+public class DoubleEntityModelLabelEditor extends 
NumberEntityModelLabelEditor<Double> {
     public DoubleEntityModelLabelEditor(Renderer<Double> renderer, 
Parser<Double> parser) {
         super(renderer, parser);
     }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelTextBox.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelTextBox.java
index 005cd66..005ce22 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelTextBox.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelTextBox.java
@@ -1,15 +1,20 @@
 package org.ovirt.engine.ui.common.widget.editor.generic;
 
+import java.text.ParseException;
+
 import com.google.gwt.dom.client.Document;
 import com.google.gwt.editor.ui.client.adapters.ValueBoxEditor;
 import com.google.gwt.text.shared.Parser;
 import com.google.gwt.text.shared.Renderer;
 import com.google.gwt.user.client.ui.ValueBox;
+
+import org.ovirt.engine.ui.common.widget.editor.EditorStateUpdateEvent;
 import org.ovirt.engine.ui.common.widget.editor.EditorWidget;
 
 public class EntityModelTextBox<T> extends ValueBox<T> implements 
EditorWidget<T, ValueBoxEditor<T>> {
 
     private ObservableValueBoxEditor<T> editor;
+    private boolean isValid = true;
 
     public EntityModelTextBox(Renderer<T> renderer, Parser<T> parser) {
         super(Document.get().createTextInputElement(), renderer, parser);
@@ -23,4 +28,27 @@
         return editor;
     }
 
+    /**
+     * Return the parsed value, or null if the field is empty or parsing 
fails. If the parsing fails
+     * fire a parsing failed event, so interested parties can handle it.
+     */
+    @Override
+    public T getValue() {
+        T value = null;
+        boolean originalValidState = isValid;
+        try {
+            value = getValueOrThrow();
+            isValid = true;
+        } catch (ParseException e) {
+            isValid = false;
+        }
+        if (originalValidState != isValid) {
+            fireEvent(new EditorStateUpdateEvent(isValid));
+        }
+        return value;
+    }
+
+    public boolean isStateValid() {
+        return isValid;
+    }
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelTextBoxEditor.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelTextBoxEditor.java
index 7a0a3b5..714ab14 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelTextBoxEditor.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/EntityModelTextBoxEditor.java
@@ -2,6 +2,7 @@
 
 import com.google.gwt.text.shared.Parser;
 import com.google.gwt.text.shared.Renderer;
+
 import org.ovirt.engine.ui.common.widget.VisibilityRenderer;
 import 
org.ovirt.engine.ui.common.widget.editor.AbstractValueBoxWithLabelEditor;
 
@@ -21,4 +22,5 @@
     public EntityModelTextBoxEditor(Renderer<T> renderer, Parser<T> parser, 
VisibilityRenderer visibilityRenderer) {
         super(new EntityModelTextBox<T>(renderer, parser), visibilityRenderer);
     }
+
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/IntegerEntityModelLabelEditor.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/IntegerEntityModelLabelEditor.java
index f93b914..23b0561 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/IntegerEntityModelLabelEditor.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/IntegerEntityModelLabelEditor.java
@@ -3,7 +3,7 @@
 import com.google.gwt.text.shared.Parser;
 import com.google.gwt.text.shared.Renderer;
 
-public class IntegerEntityModelLabelEditor extends 
EntityModelLabelEditor<Integer> {
+public class IntegerEntityModelLabelEditor extends 
NumberEntityModelLabelEditor<Integer> {
     public IntegerEntityModelLabelEditor(Renderer<Integer> renderer, 
Parser<Integer> parser) {
         super(renderer, parser);
     }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/IntegerEntityModelTextBoxEditor.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/IntegerEntityModelTextBoxEditor.java
index 400bdbe..d5a54f9 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/IntegerEntityModelTextBoxEditor.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/IntegerEntityModelTextBoxEditor.java
@@ -1,24 +1,28 @@
 package org.ovirt.engine.ui.common.widget.editor.generic;
 
+import java.util.Arrays;
+
 import org.ovirt.engine.ui.common.widget.VisibilityRenderer;
 import org.ovirt.engine.ui.common.widget.parser.generic.ToIntEntityModelParser;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
 
 /**
  * Composite Editor that uses {@link 
org.ovirt.engine.ui.common.widget.editor.generic.EntityModelTextBox}.
  */
-public class IntegerEntityModelTextBoxEditor extends 
EntityModelTextBoxEditor<Integer> {
+public class IntegerEntityModelTextBoxEditor extends 
NumberEntityModelTextBoxEditor<Integer> {
 
     public IntegerEntityModelTextBoxEditor(VisibilityRenderer 
visibilityRenderer) {
-        super(new EntityModelTextBox<Integer>(
-                new ToStringEntityModelRenderer<Integer>(),
-                new ToIntEntityModelParser()),
-              visibilityRenderer);
+        super(new EntityModelTextBox<Integer>(new 
ToStringEntityModelRenderer<Integer>(), new ToIntEntityModelParser()), 
visibilityRenderer);
     }
 
     public IntegerEntityModelTextBoxEditor() {
-        super(new ToStringEntityModelRenderer<Integer>(),
-              new ToIntEntityModelParser()
-        );
+        super(new ToStringEntityModelRenderer<Integer>(), new 
ToIntEntityModelParser());
     }
 
+    @Override
+    protected void handleInvalidState() {
+        //Be sure to call super.handleInvalidstate to make sure the editor 
valid state is properly updated.
+        super.handleInvalidState();
+        
markAsInvalid(Arrays.asList(ConstantsManager.getInstance().getConstants().thisFieldMustContainIntegerNumberInvalidReason()));
+    }
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/IntegerEntityModelTextBoxOnlyEditor.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/IntegerEntityModelTextBoxOnlyEditor.java
index d20b8f2..d575016 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/IntegerEntityModelTextBoxOnlyEditor.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/IntegerEntityModelTextBoxOnlyEditor.java
@@ -1,21 +1,29 @@
 package org.ovirt.engine.ui.common.widget.editor.generic;
 
+import java.util.Arrays;
+
 import org.ovirt.engine.ui.common.widget.VisibilityRenderer;
 import org.ovirt.engine.ui.common.widget.parser.generic.ToIntEntityModelParser;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
 
-public class IntegerEntityModelTextBoxOnlyEditor extends 
EntityModelTextBoxOnlyEditor<Integer> {
+public class IntegerEntityModelTextBoxOnlyEditor extends 
NumberEntityModelTextBoxOnlyEditor<Integer> {
 
     public IntegerEntityModelTextBoxOnlyEditor(VisibilityRenderer 
visibilityRenderer) {
-        super(new EntityModelTextBox<Integer>(
-                new ToStringEntityModelRenderer<Integer>(),
-                new ToIntEntityModelParser()),
+        super(new EntityModelTextBox<Integer>(new 
ToStringEntityModelRenderer<Integer>(), new ToIntEntityModelParser()),
              visibilityRenderer);
     }
 
     public IntegerEntityModelTextBoxOnlyEditor() {
-        super(new EntityModelTextBox<Integer>(
-                new ToStringEntityModelRenderer<Integer>(),
-                new ToIntEntityModelParser()),
-              new VisibilityRenderer.SimpleVisibilityRenderer());
+        super(new EntityModelTextBox<Integer>(new 
ToStringEntityModelRenderer<Integer>(),
+                new ToIntEntityModelParser()), new 
VisibilityRenderer.SimpleVisibilityRenderer());
     }
+
+    @Override
+    protected void handleInvalidState() {
+        //Be sure to call super.handleInvalidstate to make sure the editor 
valid state is properly updated.
+        super.handleInvalidState();
+        
markAsInvalid(Arrays.asList(ConstantsManager.getInstance().getConstants()
+                .thisFieldMustContainIntegerNumberInvalidReason()));
+    }
+
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/LongEntityModelTextBoxEditor.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/LongEntityModelTextBoxEditor.java
index 8e4771c..3a938db 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/LongEntityModelTextBoxEditor.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/LongEntityModelTextBoxEditor.java
@@ -1,10 +1,21 @@
 package org.ovirt.engine.ui.common.widget.editor.generic;
 
-import org.ovirt.engine.ui.common.widget.parser.generic.ToLongEntityParser;
+import java.util.Arrays;
 
-public class LongEntityModelTextBoxEditor extends 
EntityModelTextBoxEditor<Long> {
+import org.ovirt.engine.ui.common.widget.parser.generic.ToLongEntityParser;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
+
+public class LongEntityModelTextBoxEditor extends 
NumberEntityModelTextBoxEditor<Long> {
 
     public LongEntityModelTextBoxEditor() {
         super(new ToStringEntityModelRenderer<Long>(), new 
ToLongEntityParser());
     }
+
+    @Override
+    protected void handleInvalidState() {
+        //Be sure to call super.handleInvalidstate to make sure the editor 
valid state is properly updated.
+        super.handleInvalidState();
+        //Even though this is a long, the validator will return the integer 
message, so that is the one we are using here.
+        
markAsInvalid(Arrays.asList(ConstantsManager.getInstance().getConstants().thisFieldMustContainIntegerNumberInvalidReason()));
+    }
 }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/NumberEntityModelLabelEditor.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/NumberEntityModelLabelEditor.java
new file mode 100644
index 0000000..3f4e156
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/NumberEntityModelLabelEditor.java
@@ -0,0 +1,30 @@
+package org.ovirt.engine.ui.common.widget.editor.generic;
+
+import java.util.Arrays;
+
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
+
+import com.google.gwt.text.shared.Parser;
+import com.google.gwt.text.shared.Renderer;
+
+public class NumberEntityModelLabelEditor<T extends Number> extends 
EntityModelLabelEditor<T> {
+
+    public NumberEntityModelLabelEditor(Renderer<T> renderer) {
+        super(renderer);
+    }
+
+    public NumberEntityModelLabelEditor(Renderer<T> renderer, Parser<T> 
parser) {
+        super(renderer, parser);
+    }
+
+    public NumberEntityModelLabelEditor(EntityModelLabel<T> widget) {
+        super(widget);
+    }
+
+    @Override
+    protected void handleInvalidState() {
+        //Be sure to call super.handleInvalidstate to make sure the editor 
valid state is properly updated.
+        super.handleInvalidState();
+        
markAsInvalid(Arrays.asList(ConstantsManager.getInstance().getConstants().thisFieldMustContainNumberInvalidReason()));
+    }
+}
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/NumberEntityModelTextBoxEditor.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/NumberEntityModelTextBoxEditor.java
new file mode 100644
index 0000000..61eb97d
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/NumberEntityModelTextBoxEditor.java
@@ -0,0 +1,31 @@
+package org.ovirt.engine.ui.common.widget.editor.generic;
+
+import java.util.Arrays;
+
+import org.ovirt.engine.ui.common.widget.VisibilityRenderer;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
+
+import com.google.gwt.text.shared.Parser;
+import com.google.gwt.text.shared.Renderer;
+
+public class NumberEntityModelTextBoxEditor<T extends Number> extends 
EntityModelTextBoxEditor<T> {
+    public NumberEntityModelTextBoxEditor(EntityModelTextBox<T> contentWidget, 
VisibilityRenderer visibilityRenderer) {
+        super(contentWidget, visibilityRenderer);
+    }
+
+    public NumberEntityModelTextBoxEditor(Renderer<T> renderer, Parser<T> 
parser) {
+        super(renderer, parser);
+    }
+
+    public NumberEntityModelTextBoxEditor(Renderer<T> renderer, Parser<T> 
parser, VisibilityRenderer visibilityRenderer) {
+        super(renderer, parser, visibilityRenderer);
+    }
+
+    @Override
+    protected void handleInvalidState() {
+        //Be sure to call super.handleInvalidstate to make sure the editor 
valid state is properly updated.
+        super.handleInvalidState();
+        
markAsInvalid(Arrays.asList(ConstantsManager.getInstance().getConstants().thisFieldMustContainNumberInvalidReason()));
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/NumberEntityModelTextBoxOnlyEditor.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/NumberEntityModelTextBoxOnlyEditor.java
new file mode 100644
index 0000000..fd5af0c
--- /dev/null
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/NumberEntityModelTextBoxOnlyEditor.java
@@ -0,0 +1,28 @@
+package org.ovirt.engine.ui.common.widget.editor.generic;
+
+import java.util.Arrays;
+
+import org.ovirt.engine.ui.common.widget.VisibilityRenderer;
+import org.ovirt.engine.ui.uicompat.ConstantsManager;
+
+import com.google.gwt.text.shared.Parser;
+import com.google.gwt.text.shared.Renderer;
+
+public class NumberEntityModelTextBoxOnlyEditor<T extends Number> extends 
EntityModelTextBoxOnlyEditor<T> {
+
+    public NumberEntityModelTextBoxOnlyEditor(EntityModelTextBox<T> textBox, 
VisibilityRenderer visibilityRenderer) {
+        super(textBox, visibilityRenderer);
+    }
+
+    public NumberEntityModelTextBoxOnlyEditor(Renderer<T> renderer, Parser<T> 
parser) {
+        super(renderer, parser);
+    }
+
+    @Override
+    protected void handleInvalidState() {
+        //Be sure to call super.handleInvalidstate to make sure the editor 
valid state is properly updated.
+        super.handleInvalidState();
+        
markAsInvalid(Arrays.asList(ConstantsManager.getInstance().getConstants().thisFieldMustContainNumberInvalidReason()));
+    }
+
+}
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/ShortEntityModelTextBoxOnlyEditor.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/ShortEntityModelTextBoxOnlyEditor.java
index 6ee088d..056732b 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/ShortEntityModelTextBoxOnlyEditor.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/editor/generic/ShortEntityModelTextBoxOnlyEditor.java
@@ -2,7 +2,7 @@
 
 import 
org.ovirt.engine.ui.common.widget.parser.generic.ToShortEntityModelParser;
 
-public class ShortEntityModelTextBoxOnlyEditor extends 
EntityModelTextBoxOnlyEditor<Short> {
+public class ShortEntityModelTextBoxOnlyEditor extends 
NumberEntityModelTextBoxOnlyEditor<Short> {
     public ShortEntityModelTextBoxOnlyEditor() {
         super(new ToStringEntityModelRenderer<Short>(), new 
ToShortEntityModelParser());
     }
diff --git 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/parser/generic/ToIntEntityModelParser.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/parser/generic/ToIntEntityModelParser.java
index fa5a78e..585de37 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/parser/generic/ToIntEntityModelParser.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/widget/parser/generic/ToIntEntityModelParser.java
@@ -14,7 +14,9 @@
         Integer ret = null;
         try {
             ret = Integer.parseInt(text.toString());
-        } catch (NumberFormatException e) {}
+        } catch (NumberFormatException e) {
+            throw new ParseException("Unable to parse String to Integer", 0); 
//$NON-NLS-1$
+        }
 
         return ret;
     }
diff --git 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
index 6cc150e..5658962 100644
--- 
a/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
+++ 
b/frontend/webadmin/modules/uicompat/src/main/java/org/ovirt/engine/ui/uicompat/UIConstants.java
@@ -1130,6 +1130,9 @@
     @DefaultStringValue("This field must contain integer number")
     String thisFieldMustContainIntegerNumberInvalidReason();
 
+    @DefaultStringValue("This field must contain a number")
+    String thisFieldMustContainNumberInvalidReason();
+
     @DefaultStringValue("This field must contain positive integer number")
     String thisFieldMustContainNonNegativeIntegerNumberInvalidReason();
 


-- 
To view, visit http://gerrit.ovirt.org/37244
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I3702cb370528a0baf6a176fa89cd736596a10ff2
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Alexander Wels <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to