diff options
author | Jens Jansson <peppe@vaadin.com> | 2011-12-21 18:24:32 +0200 |
---|---|---|
committer | Jens Jansson <peppe@vaadin.com> | 2011-12-21 18:24:32 +0200 |
commit | 4038e31d16b2b36035fcc24a7b5130e327e70000 (patch) | |
tree | bcd488bc018cd9f634d6457c37f69953f5053950 | |
parent | b94e3ddbb910d6492302784ff282c397b5111afd (diff) | |
parent | 4f9f92e8a900d3fb52dc106a5d0b2944a4fd4a92 (diff) | |
download | vaadin-framework-4038e31d16b2b36035fcc24a7b5130e327e70000.tar.gz vaadin-framework-4038e31d16b2b36035fcc24a7b5130e327e70000.zip |
Merge commit '9974da9b640f5ed3b69839c8e4f1d441bd865311' into constants-to-enum
-rw-r--r-- | src/com/vaadin/data/fieldbinder/DefaultFormBuilderFieldFactory.java (renamed from src/com/vaadin/data/fieldbinder/DefaultFieldBinderFieldFactory.java) | 36 | ||||
-rw-r--r-- | src/com/vaadin/data/fieldbinder/FormBuilder.java | 6 | ||||
-rw-r--r-- | src/com/vaadin/data/fieldbinder/FormBuilderFieldFactory.java (renamed from src/com/vaadin/data/fieldbinder/FieldBinderFieldFactory.java) | 2 | ||||
-rw-r--r-- | src/com/vaadin/data/util/PropertyFormatter.java | 3 | ||||
-rw-r--r-- | src/com/vaadin/data/validator/DoubleValidator.java | 12 | ||||
-rw-r--r-- | src/com/vaadin/data/validator/IntegerValidator.java | 11 | ||||
-rw-r--r-- | tests/integration_tests.xml | 8 | ||||
-rw-r--r-- | tests/testbench/com/vaadin/tests/components/abstractfield/IntegerDoubleFieldsWithDataSource.java | 64 | ||||
-rw-r--r-- | tests/testbench/com/vaadin/tests/components/table/TableMultiSelectSimple.java | 2 | ||||
-rw-r--r-- | tests/testbench/com/vaadin/tests/components/table/TableSingleSelect.java | 2 |
10 files changed, 117 insertions, 29 deletions
diff --git a/src/com/vaadin/data/fieldbinder/DefaultFieldBinderFieldFactory.java b/src/com/vaadin/data/fieldbinder/DefaultFormBuilderFieldFactory.java index db202f7a53..2b372de144 100644 --- a/src/com/vaadin/data/fieldbinder/DefaultFieldBinderFieldFactory.java +++ b/src/com/vaadin/data/fieldbinder/DefaultFormBuilderFieldFactory.java @@ -14,12 +14,10 @@ import com.vaadin.ui.Field; import com.vaadin.ui.ListSelect;
import com.vaadin.ui.NativeSelect;
import com.vaadin.ui.OptionGroup;
-import com.vaadin.ui.PasswordField;
import com.vaadin.ui.Table;
-import com.vaadin.ui.TextArea;
import com.vaadin.ui.TextField;
-public class DefaultFieldBinderFieldFactory implements FieldBinderFieldFactory {
+public class DefaultFormBuilderFieldFactory implements FormBuilderFieldFactory {
public static final Object CAPTION_PROPERTY_ID = "Caption";
@@ -30,6 +28,10 @@ public class DefaultFieldBinderFieldFactory implements FieldBinderFieldFactory { || boolean.class.isAssignableFrom(type)) {
return createBooleanField(fieldType);
}
+ if (AbstractTextField.class.isAssignableFrom(fieldType)) {
+ return fieldType.cast(createAbstractTextField(fieldType
+ .asSubclass(AbstractTextField.class)));
+ }
return createDefaultField(type, fieldType);
}
@@ -82,27 +84,23 @@ public class DefaultFieldBinderFieldFactory implements FieldBinderFieldFactory { protected <T extends AbstractTextField> T createAbstractTextField(
Class<T> fieldType) {
- if (fieldType.isAssignableFrom(PasswordField.class)) {
- PasswordField pf = new PasswordField();
- pf.setImmediate(true);
- return (T) pf;
- } else if (fieldType.isAssignableFrom(TextField.class)) {
- TextField tf = new TextField();
- tf.setImmediate(true);
- return (T) tf;
- } else if (fieldType.isAssignableFrom(TextArea.class)) {
- TextArea ta = new TextArea();
- ta.setImmediate(true);
- return (T) ta;
+ if (fieldType == AbstractTextField.class) {
+ fieldType = (Class<T>) TextField.class;
+ }
+ try {
+ T field = fieldType.newInstance();
+ field.setImmediate(true);
+ return field;
+ } catch (Exception e) {
+ throw new FormBuilder.BuildException(
+ "Could not create a field of type " + fieldType, e);
}
-
- return null;
}
protected <T extends Field> T createDefaultField(Class<?> type,
Class<T> fieldType) {
- if (AbstractTextField.class.isAssignableFrom(fieldType)) {
- return (T) createAbstractTextField((Class<? extends AbstractTextField>) fieldType);
+ if (fieldType.isAssignableFrom(TextField.class)) {
+ return fieldType.cast(createAbstractTextField(TextField.class));
}
return null;
}
diff --git a/src/com/vaadin/data/fieldbinder/FormBuilder.java b/src/com/vaadin/data/fieldbinder/FormBuilder.java index 9ee4b73fce..4597d520b3 100644 --- a/src/com/vaadin/data/fieldbinder/FormBuilder.java +++ b/src/com/vaadin/data/fieldbinder/FormBuilder.java @@ -20,7 +20,7 @@ import com.vaadin.ui.Field; */
public class FormBuilder implements Serializable {
- private FieldBinderFieldFactory fieldFactory = new com.vaadin.data.fieldbinder.DefaultFieldBinderFieldFactory();
+ private FormBuilderFieldFactory fieldFactory = new DefaultFormBuilderFieldFactory();
private FieldBinder fieldBinder;
private static final Logger logger = Logger.getLogger(FormBuilder.class
.getName());
@@ -46,14 +46,14 @@ public class FormBuilder implements Serializable { /**
* TODO: javadoc
*/
- public FieldBinderFieldFactory getFieldFactory() {
+ public FormBuilderFieldFactory getFieldFactory() {
return fieldFactory;
}
/**
* TODO: javadoc
*/
- public void setFieldFactory(FieldBinderFieldFactory fieldFactory) {
+ public void setFieldFactory(FormBuilderFieldFactory fieldFactory) {
this.fieldFactory = fieldFactory;
}
diff --git a/src/com/vaadin/data/fieldbinder/FieldBinderFieldFactory.java b/src/com/vaadin/data/fieldbinder/FormBuilderFieldFactory.java index 5af4d22546..c189fb5e21 100644 --- a/src/com/vaadin/data/fieldbinder/FieldBinderFieldFactory.java +++ b/src/com/vaadin/data/fieldbinder/FormBuilderFieldFactory.java @@ -15,7 +15,7 @@ import com.vaadin.ui.Field; * @version @version@
* @since 7.0
*/
-public interface FieldBinderFieldFactory extends Serializable {
+public interface FormBuilderFieldFactory extends Serializable {
/**
* Creates a field based on the data type that we want to edit
*
diff --git a/src/com/vaadin/data/util/PropertyFormatter.java b/src/com/vaadin/data/util/PropertyFormatter.java index 1b27513594..e126d97d3c 100644 --- a/src/com/vaadin/data/util/PropertyFormatter.java +++ b/src/com/vaadin/data/util/PropertyFormatter.java @@ -4,6 +4,7 @@ package com.vaadin.data.util; import com.vaadin.data.Property; +import com.vaadin.data.util.converter.Converter; /** * Formatting proxy for a {@link Property}. @@ -33,10 +34,12 @@ import com.vaadin.data.Property; * type of the underlying property (a PropertyFormatter is always a * Property<String>) * + * @deprecated Since 7.0 replaced by {@link Converter} * @author Vaadin Ltd. * @since 5.3.0 */ @SuppressWarnings("serial") +@Deprecated public abstract class PropertyFormatter<T> extends AbstractProperty<String> implements Property.Viewer, Property.ValueChangeListener, Property.ReadOnlyStatusChangeListener { diff --git a/src/com/vaadin/data/validator/DoubleValidator.java b/src/com/vaadin/data/validator/DoubleValidator.java index f603f57480..18f1909add 100644 --- a/src/com/vaadin/data/validator/DoubleValidator.java +++ b/src/com/vaadin/data/validator/DoubleValidator.java @@ -43,4 +43,16 @@ public class DoubleValidator extends AbstractStringValidator { } } + @Override + public void validate(Object value) throws InvalidValueException { + if (value != null && value instanceof Double) { + // Allow Doubles to pass through the validator for easier + // migration. Otherwise a TextField connected to an double property + // with a DoubleValidator will fail. + return; + } + + super.validate(value); + } + } diff --git a/src/com/vaadin/data/validator/IntegerValidator.java b/src/com/vaadin/data/validator/IntegerValidator.java index bf46497594..88ae9f3f0b 100644 --- a/src/com/vaadin/data/validator/IntegerValidator.java +++ b/src/com/vaadin/data/validator/IntegerValidator.java @@ -44,4 +44,15 @@ public class IntegerValidator extends AbstractStringValidator { } } + @Override + public void validate(Object value) throws InvalidValueException { + if (value != null && value instanceof Integer) { + // Allow Integers to pass through the validator for easier + // migration. Otherwise a TextField connected to an integer property + // with an IntegerValidator will fail. + return; + } + + super.validate(value); + } } diff --git a/tests/integration_tests.xml b/tests/integration_tests.xml index b4b636af32..b40549e500 100644 --- a/tests/integration_tests.xml +++ b/tests/integration_tests.xml @@ -369,15 +369,15 @@ </antcall>
<!-- Run theme tests in all browsers if there's a property with the test files -->
- <if>
+ <antcontrib:if>
<isset property="testfiles-theme" />
- <then>
+ <antcontrib:then>
<antcall target="integration-test-theme">
<param name="server-name" value="${target-server}" />
<param name="deployment.url" value="http://${target-host}:${target-port}" />
</antcall>
- </then>
- </if>
+ </antcontrib:then>
+ </antcontrib:if>
<!-- timeout in five minutes -->
<sshexec host="${target-host}" outputproperty="stop-output" timeout="300000" username="${user}" keyfile="${sshkey.file}" trust="yes" command="ant -f deploy.xml shutdown-and-cleanup" failonerror="false" />
diff --git a/tests/testbench/com/vaadin/tests/components/abstractfield/IntegerDoubleFieldsWithDataSource.java b/tests/testbench/com/vaadin/tests/components/abstractfield/IntegerDoubleFieldsWithDataSource.java new file mode 100644 index 0000000000..d9a731ae4d --- /dev/null +++ b/tests/testbench/com/vaadin/tests/components/abstractfield/IntegerDoubleFieldsWithDataSource.java @@ -0,0 +1,64 @@ +package com.vaadin.tests.components.abstractfield;
+
+import com.vaadin.data.Property.ValueChangeEvent;
+import com.vaadin.data.Property.ValueChangeListener;
+import com.vaadin.data.util.ObjectProperty;
+import com.vaadin.data.validator.DoubleValidator;
+import com.vaadin.data.validator.IntegerValidator;
+import com.vaadin.tests.components.TestBase;
+import com.vaadin.tests.util.Log;
+import com.vaadin.ui.TextField;
+
+public class IntegerDoubleFieldsWithDataSource extends TestBase {
+
+ private Log log = new Log(5);
+
+ @Override
+ protected void setup() {
+ addComponent(log);
+
+ TextField tf = createIntegerTextField();
+ tf.addValidator(new IntegerValidator("Must be an Integer"));
+ addComponent(tf);
+
+ tf = createIntegerTextField();
+ tf.setCaption("Enter a double");
+ tf.setPropertyDataSource(new ObjectProperty<Double>(2.1));
+ tf.addValidator(new DoubleValidator("Must be a Double"));
+ addComponent(tf);
+ }
+
+ private TextField createIntegerTextField() {
+ final TextField tf = new TextField("Enter an integer");
+ tf.setPropertyDataSource(new ObjectProperty<Integer>(new Integer(2)));
+ tf.setImmediate(true);
+ tf.addListener(new ValueChangeListener() {
+
+ public void valueChange(ValueChangeEvent event) {
+ try {
+ log.log("Value for " + tf.getCaption() + " changed to "
+ + tf.getValue());
+ log.log("Converted value is " + tf.getConvertedFieldValue());
+ } catch (Exception e) {
+ // TODO: handle exception
+ e.printStackTrace();
+ }
+ }
+ });
+
+ return tf;
+ }
+
+ @Override
+ protected String getDescription() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}
diff --git a/tests/testbench/com/vaadin/tests/components/table/TableMultiSelectSimple.java b/tests/testbench/com/vaadin/tests/components/table/TableMultiSelectSimple.java index 5033d4e91d..c33ba30193 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableMultiSelectSimple.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableMultiSelectSimple.java @@ -40,7 +40,7 @@ public class TableMultiSelectSimple extends TestBase { for (int i = 0; i < 10; i++) { t.addItem(i); - t.getContainerProperty(i, "string").setValue(i); + t.getContainerProperty(i, "string").setValue(String.valueOf(i)); t.getContainerProperty(i, "button") .setValue(new Button("Click me")); } diff --git a/tests/testbench/com/vaadin/tests/components/table/TableSingleSelect.java b/tests/testbench/com/vaadin/tests/components/table/TableSingleSelect.java index edde284848..8a37c10b60 100644 --- a/tests/testbench/com/vaadin/tests/components/table/TableSingleSelect.java +++ b/tests/testbench/com/vaadin/tests/components/table/TableSingleSelect.java @@ -32,7 +32,7 @@ public class TableSingleSelect extends TestBase { for (int i = 0; i < 10; i++) {
t.addItem(i);
- t.getContainerProperty(i, "string").setValue(i);
+ t.getContainerProperty(i, "string").setValue(String.valueOf(i));
t.getContainerProperty(i, "button")
.setValue(new Button("Click me"));
}
|