You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2015/10/03 15:04:37 UTC

wicket git commit: WICKET-5986 NumberTextField should use Models for minimum, maximum and step

Repository: wicket
Updated Branches:
  refs/heads/master 9083fb8d9 -> 51c18160c


WICKET-5986 NumberTextField<N> should use Models for minimum, maximum and step


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/51c18160
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/51c18160
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/51c18160

Branch: refs/heads/master
Commit: 51c18160c29da5f643cd928b65104990bfdf0885
Parents: 9083fb8
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Sat Oct 3 15:03:31 2015 +0200
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Sat Oct 3 15:03:31 2015 +0200

----------------------------------------------------------------------
 .../markup/html/form/NumberTextField.java       | 80 +++++++++++++++-----
 .../markup/html/form/NumberTextFieldTest.java   |  6 +-
 2 files changed, 66 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/51c18160/wicket-core/src/main/java/org/apache/wicket/markup/html/form/NumberTextField.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/NumberTextField.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/NumberTextField.java
index 704dc38..0b5cc92 100644
--- a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/NumberTextField.java
+++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/NumberTextField.java
@@ -20,6 +20,7 @@ import java.util.Locale;
 
 import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
 import org.apache.wicket.util.convert.ConversionException;
 import org.apache.wicket.util.convert.IConverter;
 import org.apache.wicket.util.lang.Objects;
@@ -51,11 +52,11 @@ public class NumberTextField<N extends Number & Comparable<N>> extends TextField
 
 	private RangeValidator<N> validator;
 
-	private N minimum;
+	private IModel<N> minimum;
 
-	private N maximum;
+	private IModel<N> maximum;
 
-	private N step;
+	private IModel<N> step;
 
 	/**
 	 * Construct.
@@ -111,8 +112,48 @@ public class NumberTextField<N extends Number & Comparable<N>> extends TextField
 		super(id, model, type);
 
 		validator = null;
-		minimum = null;
-		maximum = null;
+		minimum = Model.of((N)null);
+		maximum = Model.of((N)null);
+		step = Model.of((N)null);
+	}
+	
+	/**
+	 * Sets the minimum allowed value
+	 *
+	 * @param minimum
+	 *            the minimum allowed value
+	 * @return this instance
+	 */
+	public NumberTextField<N> setMinimum(final N minimum)
+	{
+		this.minimum = Model.of(minimum);
+		return this;
+	}
+
+	/**
+	 * Sets the maximum allowed value
+	 *
+	 * @param maximum
+	 *            the maximum allowed value
+	 * @return this instance
+	 */
+	public NumberTextField<N> setMaximum(final N maximum)
+	{
+		this.maximum = Model.of(maximum);
+		return this;
+	}
+
+	/**
+	 * Sets the step attribute
+	 *
+	 * @param step
+	 *            the step attribute
+	 * @return this instance
+	 */
+	public NumberTextField<N> setStep(final N step)
+	{
+		this.step = Model.of(step);
+		return this;
 	}
 
 	/**
@@ -122,7 +163,7 @@ public class NumberTextField<N extends Number & Comparable<N>> extends TextField
 	 *            the minimum allowed value
 	 * @return this instance
 	 */
-	public NumberTextField<N> setMinimum(final N minimum)
+	public NumberTextField<N> setMinimum(final IModel<N> minimum)
 	{
 		this.minimum = minimum;
 		return this;
@@ -135,7 +176,7 @@ public class NumberTextField<N extends Number & Comparable<N>> extends TextField
 	 *            the maximum allowed value
 	 * @return this instance
 	 */
-	public NumberTextField<N> setMaximum(final N maximum)
+	public NumberTextField<N> setMaximum(final IModel<N> maximum)
 	{
 		this.maximum = maximum;
 		return this;
@@ -148,7 +189,7 @@ public class NumberTextField<N extends Number & Comparable<N>> extends TextField
 	 *            the step attribute
 	 * @return this instance
 	 */
-	public NumberTextField<N> setStep(final N step)
+	public NumberTextField<N> setStep(final IModel<N> step)
 	{
 		this.step = step;
 		return this;
@@ -165,9 +206,11 @@ public class NumberTextField<N extends Number & Comparable<N>> extends TextField
 			validator = null;
 		}
 
-		if (minimum != null || maximum != null)
+		final N min = minimum.getObject();
+		final N max = maximum.getObject();
+		if (min != null || max != null)
 		{
-			validator = RangeValidator.range(minimum, maximum);
+			validator = RangeValidator.range(min, max);
 			add(validator);
 		}
 	}
@@ -190,33 +233,36 @@ public class NumberTextField<N extends Number & Comparable<N>> extends TextField
 
 		IValueMap attributes = tag.getAttributes();
 
-		if (minimum != null)
+		final N min = minimum.getObject();
+		if (min != null)
 		{
-			attributes.put("min", Objects.stringValue(minimum));
+			attributes.put("min", Objects.stringValue(min));
 		}
 		else
 		{
 			attributes.remove("min");
 		}
 
-		if (maximum != null)
+		final N max = maximum.getObject();
+		if (max != null)
 		{
-			attributes.put("max", Objects.stringValue(maximum));
+			attributes.put("max", Objects.stringValue(max));
 		}
 		else
 		{
 			attributes.remove("max");
 		}
 
-		if (step != null)
+		final N _step = step.getObject();
+		if (_step != null)
 		{
-			if (step.doubleValue() == ANY)
+			if (_step.doubleValue() == ANY)
 			{
 				attributes.put("step", "any");
 			}
 			else
 			{
-				attributes.put("step", Objects.stringValue(step));
+				attributes.put("step", Objects.stringValue(_step));
 			}
 		}
 		else

http://git-wip-us.apache.org/repos/asf/wicket/blob/51c18160/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NumberTextFieldTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NumberTextFieldTest.java b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NumberTextFieldTest.java
index 76dea67..78d6598 100644
--- a/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NumberTextFieldTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/markup/html/form/NumberTextFieldTest.java
@@ -43,9 +43,9 @@ public class NumberTextFieldTest extends WicketTestCase
 	@Test
 	public void convertBigDecimal()
 	{
-		TestPage<BigDecimal> testPage = new TestPage<BigDecimal>();
+		TestPage<BigDecimal> testPage = new TestPage<>();
 		testPage.textField.setType(BigDecimal.class);
-		testPage.textField.setMinimum(new BigDecimal("0.00"));
+		testPage.textField.setMinimum(Model.of(new BigDecimal("0.00")));
 		testPage.textField.setMaximum(new BigDecimal("100.00"));
 		testPage.textField.setModelObject(new BigDecimal("0.00"));
 		tester.startPage(testPage);
@@ -111,7 +111,7 @@ public class NumberTextFieldTest extends WicketTestCase
 	{
 		TestPage<Double> testPage = new TestPage<Double>();
 		testPage.textField.setType(Double.class);
-		testPage.textField.setStep(NumberTextField.ANY);
+		testPage.textField.setStep(Model.of(NumberTextField.ANY));
 		testPage.textField.setModelObject(new Double("1000.0"));
 		tester.startPage(testPage);