Mercurial > dive4elements > river
changeset 7745:1d6b957d8953
issue1549: Add live-validation to wsplgen to-field.
Unfortunately, controlling the displayed message proved difficult due
to mixed error/validation-handling code. It shows wrong format message
for now.
author | Felix Wolfsteller <felix.wolfsteller@intevation.de> |
---|---|
date | Tue, 11 Feb 2014 12:37:16 +0100 |
parents | 8abc86160959 |
children | 56001dce01dd |
files | gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_en.properties gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DistancePanel.java gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DoubleRangePanel.java |
diffstat | 6 files changed, 31 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java Fri Feb 07 15:48:43 2014 +0100 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.java Tue Feb 11 12:37:16 2014 +0100 @@ -228,6 +228,8 @@ String wrongFormat(); + String toShouldNotBeNegative(); + String atLeastOneValue(); String missingInput();
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties Fri Feb 07 15:48:43 2014 +0100 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants.properties Tue Feb 11 12:37:16 2014 +0100 @@ -129,6 +129,7 @@ unitDiffInM = Diff [m]: unitLocation = km wrongFormat = Wrong format +toShouldNotBeNegative = Field 'to' has to contain a positive value. atLeastOneValue = You need to insert at least one value. missingInput = You need to enter a value. too_many_values = Only one value allowed
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties Fri Feb 07 15:48:43 2014 +0100 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_de.properties Tue Feb 11 12:37:16 2014 +0100 @@ -129,6 +129,7 @@ unitDiffInM = Diff [m]: unitLocation = km wrongFormat = Falsches Format +toShouldNotBeNegative = Feld 'bis' muss einen positiven Wert enthalten. atLeastOneValue = Sie m\u00fcssen mindestens einen Wert eingeben. missingInput = Sie m\u00fcssen einen Wert eingeben. too_many_values = Nur ein Eingabewert erlaubt
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_en.properties Fri Feb 07 15:48:43 2014 +0100 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/FLYSConstants_en.properties Tue Feb 11 12:37:16 2014 +0100 @@ -130,6 +130,7 @@ unitDiffInM = Diff [m]: unitLocation = km wrongFormat = Wrong format +toShouldNotBeNegative = Field 'to' has to contain a positive value. atLeastOneValue = You need to insert at least one value. missingInput = You need to enter a value. too_many_values = Only one value allowed
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DistancePanel.java Fri Feb 07 15:48:43 2014 +0100 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DistancePanel.java Tue Feb 11 12:37:16 2014 +0100 @@ -97,6 +97,7 @@ distancePanel = new DoubleRangePanel( labelFrom(), labelTo(), labelStep(), 0d, 0d, 0d, 250, this, labelOrientation); + distancePanel.setNegativeToAllowed(false); } @@ -423,6 +424,7 @@ } + /** Gets the double from default in data, null if none. */ protected double getDefaultValue(Data data) throws NumberFormatException {
--- a/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DoubleRangePanel.java Fri Feb 07 15:48:43 2014 +0100 +++ b/gwt-client/src/main/java/org/dive4elements/river/client/client/ui/DoubleRangePanel.java Tue Feb 11 12:37:16 2014 +0100 @@ -45,6 +45,9 @@ * distance.*/ public static final String FIELD_WIDTH = "step"; + /** Whether or not negative 'to' values are allowed. */ + protected boolean negativeToAllowed = true; + /** The textboxes */ protected FloatItem fromItem; protected FloatItem toItem; @@ -153,6 +156,10 @@ stepItem.setValue(f.format(steps)); } + public void setNegativeToAllowed(boolean isAllowed) { + negativeToAllowed = isAllowed; + } + public boolean validateForm() { try { @@ -171,6 +178,9 @@ * there are values that doesn't represent a valid float, an error is * displayed. * + * Also if negativeToAllowed is false, an error is registered if + * the 'to' field contains a negative value. + * * @param item The FormItem. */ @SuppressWarnings("unchecked") @@ -187,12 +197,14 @@ @SuppressWarnings("rawtypes") Map errors = getErrors(); + Double d = 0d; + try { if (v == null) { throw new NumberFormatException("empty"); } - f.parse(v); + d = f.parse(v); errors.remove(item.getFieldName()); } @@ -204,6 +216,17 @@ valid = false; } + if (negativeToAllowed == false + && item.getFieldName().equals(FIELD_TO) && d < 0d) { + errors.put(item.getFieldName(), MESSAGES.toShouldNotBeNegative()); + + item.setValue(""); + + item.focusInItem(); + + valid = false; + } + setErrors(errors, true); return valid;