diff options
author | Henri Sara <hesara@vaadin.com> | 2016-08-09 15:11:02 +0300 |
---|---|---|
committer | Henri Sara <hesara@vaadin.com> | 2016-08-11 15:45:59 +0300 |
commit | 5c852b41ff22409e9f69d634f2de5df69b7815c0 (patch) | |
tree | 3359f91fe33d3d7cecfb35a9cf29e6d92b663188 /server | |
parent | c726ae1b276049282286db3b0934e90ac8d8a2ce (diff) | |
download | vaadin-framework-5c852b41ff22409e9f69d634f2de5df69b7815c0.tar.gz vaadin-framework-5c852b41ff22409e9f69d634f2de5df69b7815c0.zip |
Convert CheckBox from legacy to AbstractField
Add LegacyCheckBox for old field factories, Grid editor etc.
Change-Id: Ic40790049421268c6de3d26730d1955d56aa86c4
Diffstat (limited to 'server')
-rw-r--r-- | server/src/main/java/com/vaadin/data/fieldgroup/DefaultFieldGroupFieldFactory.java | 8 | ||||
-rw-r--r-- | server/src/main/java/com/vaadin/legacy/ui/LegacyCheckBox.java | 268 | ||||
-rw-r--r-- | server/src/main/java/com/vaadin/ui/CheckBox.java | 134 | ||||
-rw-r--r-- | server/src/main/java/com/vaadin/ui/DefaultFieldFactory.java | 3 | ||||
-rw-r--r-- | server/src/main/java/com/vaadin/ui/Grid.java | 3 | ||||
-rw-r--r-- | server/src/test/java/com/vaadin/tests/server/component/AbstractListenerMethodsTestBase.java | 36 | ||||
-rw-r--r-- | server/src/test/java/com/vaadin/tests/server/component/abstractfield/AbsFieldValueConversionsTest.java | 63 | ||||
-rw-r--r-- | server/src/test/java/com/vaadin/tests/server/component/abstractfield/LegacyAbstractFieldListenersTest.java (renamed from server/src/test/java/com/vaadin/tests/server/component/abstractfield/AbstractFieldListenersTest.java) | 8 | ||||
-rw-r--r-- | server/src/test/java/com/vaadin/ui/CheckBoxTest.java | 35 |
9 files changed, 352 insertions, 206 deletions
diff --git a/server/src/main/java/com/vaadin/data/fieldgroup/DefaultFieldGroupFieldFactory.java b/server/src/main/java/com/vaadin/data/fieldgroup/DefaultFieldGroupFieldFactory.java index 27f4628bae..a82da7ef51 100644 --- a/server/src/main/java/com/vaadin/data/fieldgroup/DefaultFieldGroupFieldFactory.java +++ b/server/src/main/java/com/vaadin/data/fieldgroup/DefaultFieldGroupFieldFactory.java @@ -20,11 +20,11 @@ import java.util.EnumSet; import com.vaadin.data.Item; import com.vaadin.data.fieldgroup.FieldGroup.BindException; -import com.vaadin.legacy.ui.LegacyField; import com.vaadin.legacy.ui.LegacyAbstractField; +import com.vaadin.legacy.ui.LegacyCheckBox; +import com.vaadin.legacy.ui.LegacyField; import com.vaadin.ui.AbstractSelect; import com.vaadin.ui.AbstractTextField; -import com.vaadin.ui.CheckBox; import com.vaadin.ui.ComboBox; import com.vaadin.ui.DateField; import com.vaadin.ui.InlineDateField; @@ -174,8 +174,8 @@ public class DefaultFieldGroupFieldFactory implements FieldGroupFieldFactory { } protected <T extends LegacyField> T createBooleanField(Class<T> fieldType) { - if (fieldType.isAssignableFrom(CheckBox.class)) { - CheckBox cb = new CheckBox(null); + if (fieldType.isAssignableFrom(LegacyCheckBox.class)) { + LegacyCheckBox cb = new LegacyCheckBox(null); cb.setImmediate(true); return (T) cb; } else if (AbstractTextField.class.isAssignableFrom(fieldType)) { diff --git a/server/src/main/java/com/vaadin/legacy/ui/LegacyCheckBox.java b/server/src/main/java/com/vaadin/legacy/ui/LegacyCheckBox.java new file mode 100644 index 0000000000..baa98a4c19 --- /dev/null +++ b/server/src/main/java/com/vaadin/legacy/ui/LegacyCheckBox.java @@ -0,0 +1,268 @@ +/* + * Copyright 2000-2014 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ + +package com.vaadin.legacy.ui; + +import java.util.Collection; + +import org.jsoup.nodes.Attributes; +import org.jsoup.nodes.Element; + +import com.vaadin.data.Property; +import com.vaadin.event.FieldEvents.BlurEvent; +import com.vaadin.event.FieldEvents.BlurListener; +import com.vaadin.event.FieldEvents.FocusAndBlurServerRpcImpl; +import com.vaadin.event.FieldEvents.FocusEvent; +import com.vaadin.event.FieldEvents.FocusListener; +import com.vaadin.shared.MouseEventDetails; +import com.vaadin.shared.ui.checkbox.CheckBoxServerRpc; +import com.vaadin.shared.ui.checkbox.CheckBoxState; +import com.vaadin.ui.declarative.DesignAttributeHandler; +import com.vaadin.ui.declarative.DesignContext; + +public class LegacyCheckBox extends LegacyAbstractField<Boolean> { + + private CheckBoxServerRpc rpc = new CheckBoxServerRpc() { + + @Override + public void setChecked(boolean checked, + MouseEventDetails mouseEventDetails) { + if (isReadOnly()) { + return; + } + + /* + * Client side updates the state before sending the event so we need + * to make sure the cached state is updated to match the client. If + * we do not do this, a reverting setValue() call in a listener will + * not cause the new state to be sent to the client. + * + * See #11028, #10030. + */ + getUI().getConnectorTracker().getDiffState(LegacyCheckBox.this) + .put("checked", checked); + + final Boolean oldValue = getValue(); + final Boolean newValue = checked; + + if (!newValue.equals(oldValue)) { + // The event is only sent if the switch state is changed + setValue(newValue); + } + + } + }; + + FocusAndBlurServerRpcImpl focusBlurRpc = new FocusAndBlurServerRpcImpl(this) { + @Override + protected void fireEvent(Event event) { + LegacyCheckBox.this.fireEvent(event); + } + }; + + /** + * Creates a new checkbox. + */ + public LegacyCheckBox() { + registerRpc(rpc); + registerRpc(focusBlurRpc); + setValue(Boolean.FALSE); + } + + /** + * Creates a new checkbox with a set caption. + * + * @param caption + * the Checkbox caption. + */ + public LegacyCheckBox(String caption) { + this(); + setCaption(caption); + } + + /** + * Creates a new checkbox with a caption and a set initial state. + * + * @param caption + * the caption of the checkbox + * @param initialState + * the initial state of the checkbox + */ + public LegacyCheckBox(String caption, boolean initialState) { + this(caption); + setValue(initialState); + } + + /** + * Creates a new checkbox that is connected to a boolean property. + * + * @param state + * the Initial state of the switch-button. + * @param dataSource + */ + public LegacyCheckBox(String caption, Property<?> dataSource) { + this(caption); + setPropertyDataSource(dataSource); + } + + @Override + public Class<Boolean> getType() { + return Boolean.class; + } + + @Override + protected CheckBoxState getState() { + return (CheckBoxState) super.getState(); + } + + /* + * Overridden to keep the shared state in sync with the LegacyAbstractField + * internal value. Should be removed once LegacyAbstractField is refactored to use + * shared state. + * + * See tickets #10921 and #11064. + */ + @Override + protected void setInternalValue(Boolean newValue) { + super.setInternalValue(newValue); + if (newValue == null) { + newValue = false; + } + getState().checked = newValue; + } + + public void addBlurListener(BlurListener listener) { + addListener(BlurEvent.EVENT_ID, BlurEvent.class, listener, + BlurListener.blurMethod); + } + + /** + * @deprecated As of 7.0, replaced by {@link #addBlurListener(BlurListener)} + **/ + @Deprecated + public void addListener(BlurListener listener) { + addBlurListener(listener); + } + + public void removeBlurListener(BlurListener listener) { + removeListener(BlurEvent.EVENT_ID, BlurEvent.class, listener); + } + + /** + * @deprecated As of 7.0, replaced by + * {@link #removeBlurListener(BlurListener)} + **/ + @Deprecated + public void removeListener(BlurListener listener) { + removeBlurListener(listener); + } + + public void addFocusListener(FocusListener listener) { + addListener(FocusEvent.EVENT_ID, FocusEvent.class, listener, + FocusListener.focusMethod); + } + + /** + * @deprecated As of 7.0, replaced by + * {@link #addFocusListener(FocusListener)} + **/ + @Deprecated + public void addListener(FocusListener listener) { + addFocusListener(listener); + } + + public void removeFocusListener(FocusListener listener) { + removeListener(FocusEvent.EVENT_ID, FocusEvent.class, listener); + } + + /** + * @deprecated As of 7.0, replaced by + * {@link #removeFocusListener(FocusListener)} + **/ + @Deprecated + public void removeListener(FocusListener listener) { + removeFocusListener(listener); + } + + /** + * Get the boolean value of the button state. + * + * @return True iff the button is pressed down or checked. + * + * @deprecated As of 7.0, use {@link #getValue()} instead and, if needed, + * handle null values. + */ + @Deprecated + public boolean booleanValue() { + Boolean value = getValue(); + return (null == value) ? false : value.booleanValue(); + } + + /* + * (non-Javadoc) + * + * @see com.vaadin.ui.AbstractField#readDesign(org.jsoup.nodes.Element, + * com.vaadin.ui.declarative.DesignContext) + */ + @Override + public void readDesign(Element design, DesignContext designContext) { + super.readDesign(design, designContext); + if (design.hasAttr("checked")) { + this.setValue( + DesignAttributeHandler.readAttribute("checked", + design.attributes(), Boolean.class), false, true); + } + } + + /* + * (non-Javadoc) + * + * @see com.vaadin.ui.AbstractField#getCustomAttributes() + */ + @Override + protected Collection<String> getCustomAttributes() { + Collection<String> attributes = super.getCustomAttributes(); + attributes.add("checked"); + return attributes; + } + + /* + * (non-Javadoc) + * + * @see com.vaadin.ui.AbstractField#writeDesign(org.jsoup.nodes.Element, + * com.vaadin.ui.declarative.DesignContext) + */ + @Override + public void writeDesign(Element design, DesignContext designContext) { + super.writeDesign(design, designContext); + LegacyCheckBox def = (LegacyCheckBox) designContext.getDefaultInstance(this); + Attributes attr = design.attributes(); + DesignAttributeHandler.writeAttribute("checked", attr, getValue(), + def.getValue(), Boolean.class); + } + + @Override + public void clear() { + setValue(Boolean.FALSE); + } + + @Override + public boolean isEmpty() { + return getValue() == null || getValue().equals(Boolean.FALSE); + + } + +} diff --git a/server/src/main/java/com/vaadin/ui/CheckBox.java b/server/src/main/java/com/vaadin/ui/CheckBox.java index e9e9b0d4b9..1519c64955 100644 --- a/server/src/main/java/com/vaadin/ui/CheckBox.java +++ b/server/src/main/java/com/vaadin/ui/CheckBox.java @@ -1,12 +1,12 @@ /* * Copyright 2000-2014 Vaadin Ltd. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the @@ -21,20 +21,18 @@ import java.util.Collection; import org.jsoup.nodes.Attributes; import org.jsoup.nodes.Element; -import com.vaadin.data.Property; import com.vaadin.event.FieldEvents.BlurEvent; import com.vaadin.event.FieldEvents.BlurListener; import com.vaadin.event.FieldEvents.FocusAndBlurServerRpcImpl; import com.vaadin.event.FieldEvents.FocusEvent; import com.vaadin.event.FieldEvents.FocusListener; -import com.vaadin.legacy.ui.LegacyAbstractField; import com.vaadin.shared.MouseEventDetails; import com.vaadin.shared.ui.checkbox.CheckBoxServerRpc; import com.vaadin.shared.ui.checkbox.CheckBoxState; import com.vaadin.ui.declarative.DesignAttributeHandler; import com.vaadin.ui.declarative.DesignContext; -public class CheckBox extends LegacyAbstractField<Boolean> { +public class CheckBox extends AbstractField<Boolean> { private CheckBoxServerRpc rpc = new CheckBoxServerRpc() { @@ -50,7 +48,7 @@ public class CheckBox extends LegacyAbstractField<Boolean> { * to make sure the cached state is updated to match the client. If * we do not do this, a reverting setValue() call in a listener will * not cause the new state to be sent to the client. - * + * * See #11028, #10030. */ getUI().getConnectorTracker().getDiffState(CheckBox.this) @@ -85,7 +83,7 @@ public class CheckBox extends LegacyAbstractField<Boolean> { /** * Creates a new checkbox with a set caption. - * + * * @param caption * the Checkbox caption. */ @@ -96,7 +94,7 @@ public class CheckBox extends LegacyAbstractField<Boolean> { /** * Creates a new checkbox with a caption and a set initial state. - * + * * @param caption * the caption of the checkbox * @param initialState @@ -107,21 +105,27 @@ public class CheckBox extends LegacyAbstractField<Boolean> { setValue(initialState); } - /** - * Creates a new checkbox that is connected to a boolean property. - * - * @param state - * the Initial state of the switch-button. - * @param dataSource - */ - public CheckBox(String caption, Property<?> dataSource) { - this(caption); - setPropertyDataSource(dataSource); + @Override + public Boolean getValue() { + return getState(false).checked; } + /** + * Sets the value of this ComboBox. If the new value is not equal to + * {@code getValue()}, fires a value change event. Throws + * {@code IllegalArgumentException} if the value is null. + * + * @param value + * the new value + * @throws IllegalArgumentException + * if the value is null + */ @Override - public Class<Boolean> getType() { - return Boolean.class; + public void setValue(Boolean value) { + if (value == null) { + throw new IllegalArgumentException("CheckBox value must not be null"); + } + super.setValue(value); } @Override @@ -129,20 +133,14 @@ public class CheckBox extends LegacyAbstractField<Boolean> { return (CheckBoxState) super.getState(); } - /* - * Overridden to keep the shared state in sync with the LegacyAbstractField - * internal value. Should be removed once LegacyAbstractField is refactored to use - * shared state. - * - * See tickets #10921 and #11064. - */ @Override - protected void setInternalValue(Boolean newValue) { - super.setInternalValue(newValue); - if (newValue == null) { - newValue = false; - } - getState().checked = newValue; + protected CheckBoxState getState(boolean markAsDirty) { + return (CheckBoxState) super.getState(markAsDirty); + } + + @Override + protected void doSetValue(Boolean value) { + getState().checked = value; } public void addBlurListener(BlurListener listener) { @@ -150,71 +148,22 @@ public class CheckBox extends LegacyAbstractField<Boolean> { BlurListener.blurMethod); } - /** - * @deprecated As of 7.0, replaced by {@link #addBlurListener(BlurListener)} - **/ - @Deprecated - public void addListener(BlurListener listener) { - addBlurListener(listener); - } - public void removeBlurListener(BlurListener listener) { removeListener(BlurEvent.EVENT_ID, BlurEvent.class, listener); } - /** - * @deprecated As of 7.0, replaced by - * {@link #removeBlurListener(BlurListener)} - **/ - @Deprecated - public void removeListener(BlurListener listener) { - removeBlurListener(listener); - } - public void addFocusListener(FocusListener listener) { addListener(FocusEvent.EVENT_ID, FocusEvent.class, listener, FocusListener.focusMethod); } - /** - * @deprecated As of 7.0, replaced by - * {@link #addFocusListener(FocusListener)} - **/ - @Deprecated - public void addListener(FocusListener listener) { - addFocusListener(listener); - } - public void removeFocusListener(FocusListener listener) { removeListener(FocusEvent.EVENT_ID, FocusEvent.class, listener); } - /** - * @deprecated As of 7.0, replaced by - * {@link #removeFocusListener(FocusListener)} - **/ - @Deprecated - public void removeListener(FocusListener listener) { - removeFocusListener(listener); - } - - /** - * Get the boolean value of the button state. - * - * @return True iff the button is pressed down or checked. - * - * @deprecated As of 7.0, use {@link #getValue()} instead and, if needed, - * handle null values. - */ - @Deprecated - public boolean booleanValue() { - Boolean value = getValue(); - return (null == value) ? false : value.booleanValue(); - } - /* * (non-Javadoc) - * + * * @see com.vaadin.ui.AbstractField#readDesign(org.jsoup.nodes.Element, * com.vaadin.ui.declarative.DesignContext) */ @@ -224,13 +173,13 @@ public class CheckBox extends LegacyAbstractField<Boolean> { if (design.hasAttr("checked")) { this.setValue( DesignAttributeHandler.readAttribute("checked", - design.attributes(), Boolean.class), false, true); + design.attributes(), Boolean.class), false); } } /* * (non-Javadoc) - * + * * @see com.vaadin.ui.AbstractField#getCustomAttributes() */ @Override @@ -242,7 +191,7 @@ public class CheckBox extends LegacyAbstractField<Boolean> { /* * (non-Javadoc) - * + * * @see com.vaadin.ui.AbstractField#writeDesign(org.jsoup.nodes.Element, * com.vaadin.ui.declarative.DesignContext) */ @@ -255,15 +204,4 @@ public class CheckBox extends LegacyAbstractField<Boolean> { def.getValue(), Boolean.class); } - @Override - public void clear() { - setValue(Boolean.FALSE); - } - - @Override - public boolean isEmpty() { - return getValue() == null || getValue().equals(Boolean.FALSE); - - } - } diff --git a/server/src/main/java/com/vaadin/ui/DefaultFieldFactory.java b/server/src/main/java/com/vaadin/ui/DefaultFieldFactory.java index 85ad1743ea..3e44a901fc 100644 --- a/server/src/main/java/com/vaadin/ui/DefaultFieldFactory.java +++ b/server/src/main/java/com/vaadin/ui/DefaultFieldFactory.java @@ -20,6 +20,7 @@ import java.util.Date; import com.vaadin.data.Container; import com.vaadin.data.Item; import com.vaadin.data.Property; +import com.vaadin.legacy.ui.LegacyCheckBox; import com.vaadin.legacy.ui.LegacyField; import com.vaadin.shared.util.SharedUtil; @@ -116,7 +117,7 @@ public class DefaultFieldFactory implements FormFieldFactory, TableFieldFactory // Boolean field if (Boolean.class.isAssignableFrom(type)) { - return new CheckBox(); + return new LegacyCheckBox(); } return new TextField(); diff --git a/server/src/main/java/com/vaadin/ui/Grid.java b/server/src/main/java/com/vaadin/ui/Grid.java index 1319f868c7..c9887c1db3 100644 --- a/server/src/main/java/com/vaadin/ui/Grid.java +++ b/server/src/main/java/com/vaadin/ui/Grid.java @@ -73,6 +73,7 @@ import com.vaadin.event.SortEvent.SortNotifier; import com.vaadin.legacy.data.Validator.InvalidValueException; import com.vaadin.legacy.data.util.converter.LegacyConverter; import com.vaadin.legacy.data.util.converter.LegacyConverterUtil; +import com.vaadin.legacy.ui.LegacyCheckBox; import com.vaadin.legacy.ui.LegacyField; import com.vaadin.server.AbstractClientConnector; import com.vaadin.server.AbstractExtension; @@ -545,7 +546,7 @@ public class Grid extends AbstractFocusable implements SelectionNotifier, Class<?> dataType, Class<T> fieldType) throws BindException { T field = super.build(caption, dataType, fieldType); - if (field instanceof CheckBox) { + if (field instanceof LegacyCheckBox) { field.setCaption(null); } return field; diff --git a/server/src/test/java/com/vaadin/tests/server/component/AbstractListenerMethodsTestBase.java b/server/src/test/java/com/vaadin/tests/server/component/AbstractListenerMethodsTestBase.java index 24201ce51d..b3a2842656 100644 --- a/server/src/test/java/com/vaadin/tests/server/component/AbstractListenerMethodsTestBase.java +++ b/server/src/test/java/com/vaadin/tests/server/component/AbstractListenerMethodsTestBase.java @@ -30,7 +30,10 @@ public abstract class AbstractListenerMethodsTestBase { for (Class<?> c : classes) { boolean found = false; for (Method m : c.getDeclaredMethods()) { - if (m.getName().equals("addListener")) { + String methodName = m.getName(); + if (methodName.startsWith("add") + && methodName.endsWith("Listener") + && !"addListener".equals(methodName)) { if (m.getParameterTypes().length != 1) { continue; } @@ -47,19 +50,22 @@ public abstract class AbstractListenerMethodsTestBase { System.out.println("import " + AbstractListenerMethodsTestBase.class - .getName() + ";"); + .getName() + + ";"); System.out.println("import " + c.getName() + ";"); - System.out.println("public class " - + c.getSimpleName() - + "Listeners extends " - + AbstractListenerMethodsTestBase.class - .getSimpleName() + " {"); + System.out + .println( + "public class " + c.getSimpleName() + + "Listeners extends " + + AbstractListenerMethodsTestBase.class + .getSimpleName() + + " {"); } String listenerClassName = m.getParameterTypes()[0] .getSimpleName(); - String eventClassName = listenerClassName.replaceFirst( - "Listener$", "Event"); + String eventClassName = listenerClassName + .replaceFirst("Listener$", "Event"); System.out.println("public void test" + listenerClassName + "() throws Exception {"); System.out.println(" testListener(" + c.getSimpleName() @@ -127,14 +133,16 @@ public abstract class AbstractListenerMethodsTestBase { private void addListener(Object c, Object listener1, Class<?> listenerClass) throws IllegalArgumentException, IllegalAccessException, - InvocationTargetException, SecurityException, NoSuchMethodException { + InvocationTargetException, SecurityException, + NoSuchMethodException { Method method = getAddListenerMethod(c.getClass(), listenerClass); method.invoke(c, listener1); } private Collection<?> getListeners(Object c, Class<?> eventType) throws IllegalArgumentException, IllegalAccessException, - InvocationTargetException, SecurityException, NoSuchMethodException { + InvocationTargetException, SecurityException, + NoSuchMethodException { Method method = getGetListenersMethod(c.getClass()); return (Collection<?>) method.invoke(c, eventType); } @@ -146,13 +154,15 @@ public abstract class AbstractListenerMethodsTestBase { private Method getAddListenerMethod(Class<?> cls, Class<?> listenerClass) throws SecurityException, NoSuchMethodException { - return cls.getMethod("addListener", listenerClass); + return cls.getMethod("add" + listenerClass.getSimpleName(), + listenerClass); } private Method getRemoveListenerMethod(Class<?> cls, Class<?> listenerClass) throws SecurityException, NoSuchMethodException { - return cls.getMethod("removeListener", listenerClass); + return cls.getMethod("remove" + listenerClass.getSimpleName(), + listenerClass); } diff --git a/server/src/test/java/com/vaadin/tests/server/component/abstractfield/AbsFieldValueConversionsTest.java b/server/src/test/java/com/vaadin/tests/server/component/abstractfield/AbsFieldValueConversionsTest.java index cc06a2466e..03fb91679b 100644 --- a/server/src/test/java/com/vaadin/tests/server/component/abstractfield/AbsFieldValueConversionsTest.java +++ b/server/src/test/java/com/vaadin/tests/server/component/abstractfield/AbsFieldValueConversionsTest.java @@ -1,7 +1,6 @@ package com.vaadin.tests.server.component.abstractfield; import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import java.util.Locale; @@ -12,15 +11,14 @@ import org.junit.Test; import com.vaadin.data.util.MethodProperty; import com.vaadin.data.util.ObjectProperty; import com.vaadin.legacy.data.util.converter.LegacyConverter; -import com.vaadin.legacy.data.util.converter.LegacyStringToIntegerConverter; import com.vaadin.legacy.data.util.converter.LegacyConverter.ConversionException; +import com.vaadin.legacy.data.util.converter.LegacyStringToIntegerConverter; import com.vaadin.server.VaadinSession; import com.vaadin.tests.data.bean.Address; import com.vaadin.tests.data.bean.Country; import com.vaadin.tests.data.bean.Person; import com.vaadin.tests.data.bean.Sex; import com.vaadin.tests.util.AlwaysLockedVaadinSession; -import com.vaadin.ui.CheckBox; import com.vaadin.ui.TextField; public class AbsFieldValueConversionsTest { @@ -155,65 +153,6 @@ public class AbsFieldValueConversionsTest { tf.getValue()); } - @Test - public void testBooleanNullConversion() { - CheckBox cb = new CheckBox(); - cb.setConverter(new LegacyConverter<Boolean, Boolean>() { - - @Override - public Boolean convertToModel(Boolean value, - Class<? extends Boolean> targetType, Locale locale) { - // value from a CheckBox should never be null as long as it is - // not set to null (handled by conversion below). - assertNotNull(value); - return value; - } - - @Override - public Boolean convertToPresentation(Boolean value, - Class<? extends Boolean> targetType, Locale locale) { - // Datamodel -> field - if (value == null) { - return false; - } - - return value; - } - - @Override - public Class<Boolean> getModelType() { - return Boolean.class; - } - - @Override - public Class<Boolean> getPresentationType() { - return Boolean.class; - } - - }); - MethodProperty<Boolean> property = new MethodProperty<Boolean>( - paulaBean, "deceased"); - cb.setPropertyDataSource(property); - assertEquals(Boolean.FALSE, property.getValue()); - assertEquals(Boolean.FALSE, cb.getValue()); - Boolean newDmValue = cb.getConverter().convertToPresentation( - cb.getValue(), Boolean.class, new Locale("fi", "FI")); - assertEquals(Boolean.FALSE, newDmValue); - - // FIXME: Should be able to set to false here to cause datamodel to be - // set to false but the change will not be propagated to the Property - // (field value is already false) - - cb.setValue(true); - assertEquals(Boolean.TRUE, cb.getValue()); - assertEquals(Boolean.TRUE, property.getValue()); - - cb.setValue(false); - assertEquals(Boolean.FALSE, cb.getValue()); - assertEquals(Boolean.FALSE, property.getValue()); - - } - // Now specific to Integer because StringToNumberConverter has been removed public static class NumberBean { private Integer number; diff --git a/server/src/test/java/com/vaadin/tests/server/component/abstractfield/AbstractFieldListenersTest.java b/server/src/test/java/com/vaadin/tests/server/component/abstractfield/LegacyAbstractFieldListenersTest.java index d23d63e3e9..e341a4cf02 100644 --- a/server/src/test/java/com/vaadin/tests/server/component/abstractfield/AbstractFieldListenersTest.java +++ b/server/src/test/java/com/vaadin/tests/server/component/abstractfield/LegacyAbstractFieldListenersTest.java @@ -7,20 +7,20 @@ import com.vaadin.data.Property.ReadOnlyStatusChangeListener; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.data.Property.ValueChangeListener; import com.vaadin.tests.server.component.AbstractListenerMethodsTestBase; -import com.vaadin.ui.CheckBox; +import com.vaadin.ui.Table; -public class AbstractFieldListenersTest extends AbstractListenerMethodsTestBase { +public class LegacyAbstractFieldListenersTest extends AbstractListenerMethodsTestBase { @Test public void testReadOnlyStatusChangeListenerAddGetRemove() throws Exception { - testListenerAddGetRemove(CheckBox.class, + testListenerAddGetRemove(Table.class, ReadOnlyStatusChangeEvent.class, ReadOnlyStatusChangeListener.class); } @Test public void testValueChangeListenerAddGetRemove() throws Exception { - testListenerAddGetRemove(CheckBox.class, ValueChangeEvent.class, + testListenerAddGetRemove(Table.class, ValueChangeEvent.class, ValueChangeListener.class); } } diff --git a/server/src/test/java/com/vaadin/ui/CheckBoxTest.java b/server/src/test/java/com/vaadin/ui/CheckBoxTest.java index 7d699998de..59e2423c89 100644 --- a/server/src/test/java/com/vaadin/ui/CheckBoxTest.java +++ b/server/src/test/java/com/vaadin/ui/CheckBoxTest.java @@ -1,12 +1,12 @@ /* * Copyright 2000-2014 Vaadin Ltd. - * + * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the @@ -18,31 +18,20 @@ package com.vaadin.ui; import org.junit.Assert; import org.junit.Test; -import com.vaadin.data.util.ObjectProperty; - public class CheckBoxTest { @Test - public void initiallyEmpty() { - CheckBox tf = new CheckBox(); - Assert.assertTrue(tf.isEmpty()); - } - - @Test - public void emptyAfterClearUsingPDS() { - CheckBox tf = new CheckBox(); - tf.setPropertyDataSource(new ObjectProperty<Boolean>(Boolean.TRUE)); - Assert.assertFalse(tf.isEmpty()); - tf.clear(); - Assert.assertTrue(tf.isEmpty()); + public void initiallyFalse() { + CheckBox cb = new CheckBox(); + Assert.assertFalse(cb.getValue()); } @Test - public void emptyAfterClear() { - CheckBox tf = new CheckBox(); - tf.setValue(true); - Assert.assertFalse(tf.isEmpty()); - tf.clear(); - Assert.assertTrue(tf.isEmpty()); + public void testSetValue() { + CheckBox cb = new CheckBox(); + cb.setValue(true); + Assert.assertTrue(cb.getValue()); + cb.setValue(false); + Assert.assertFalse(cb.getValue()); } } |