diff options
Diffstat (limited to 'server/src')
-rw-r--r-- | server/src/main/java/com/vaadin/ui/TextField.java | 51 | ||||
-rw-r--r-- | server/src/test/java/com/vaadin/ui/TextFieldConstructorTest.java | 70 |
2 files changed, 120 insertions, 1 deletions
diff --git a/server/src/main/java/com/vaadin/ui/TextField.java b/server/src/main/java/com/vaadin/ui/TextField.java index 3969fec202..a8171ba4f4 100644 --- a/server/src/main/java/com/vaadin/ui/TextField.java +++ b/server/src/main/java/com/vaadin/ui/TextField.java @@ -57,13 +57,62 @@ public class TextField extends AbstractTextField { * @param caption * the caption <code>String</code> for the editor. * @param value - * the initial text content of the editor. + * the initial text content of the editor, not {@code null} */ public TextField(String caption, String value) { setValue(value); setCaption(caption); } + /** + * Constructs a new {@code TextField} with a value change listener. The + * listener is called when the value of this {@code TextField} is changed + * either by the user or programmatically. + * + * @param valueChangeListener + * the value change listener, not {@code null} + */ + public TextField(ValueChangeListener valueChangeListener) { + addValueChangeListener(valueChangeListener); + } + + /** + * Constructs a new {@code TextField} with the given caption and a value + * change listener. + * <p> + * The listener is called when the value of this {@code TextField} is + * changed either by the user or programmatically. + * + * @param caption + * the caption {@code String} for the editor. + * @param valueChangeListener + * the value change listener, not {@code null} + */ + public TextField(String caption, ValueChangeListener valueChangeListener) { + this(valueChangeListener); + setCaption(caption); + } + + /** + * Constructs a new {@code TextField} with the given caption, initial text + * contents and a value change listener. + * <p> + * The listener is called when the value of this {@code TextField} is + * changed either by the user or programmatically. + * + * @param caption + * the caption {@code String} for the editor. + * @param value + * the initial text content of the editor, not {@code null} + * @param valueChangeListener + * the value change listener, not {@code null} + */ + public TextField(String caption, String value, + ValueChangeListener valueChangeListener) { + this(caption, value); + addValueChangeListener(valueChangeListener); + } + @Override protected TextFieldState getState() { return (TextFieldState) super.getState(); diff --git a/server/src/test/java/com/vaadin/ui/TextFieldConstructorTest.java b/server/src/test/java/com/vaadin/ui/TextFieldConstructorTest.java new file mode 100644 index 0000000000..3bcb457fec --- /dev/null +++ b/server/src/test/java/com/vaadin/ui/TextFieldConstructorTest.java @@ -0,0 +1,70 @@ +/* + * Copyright 2000-2016 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.ui; + +import org.junit.Assert; +import org.junit.Test; +import org.mockito.Mockito; + +import com.vaadin.data.HasValue; +import static org.mockito.Mockito.never; +import static org.mockito.Mockito.verify; + +public class TextFieldConstructorTest { + + @Test + public void initiallyEmpty() { + TextField textField = new TextField(); + Assert.assertTrue(textField.isEmpty()); + } + + @Test + public void testValueConstructor_emptyAfterClear() { + TextField textField = new TextField(null, "foobar"); + Assert.assertFalse(textField.isEmpty()); + + textField.clear(); + Assert.assertTrue(textField.isEmpty()); + } + + @Test + public void testValueChangeListener_eventOnValueChange() { + HasValue.ValueChangeListener valueChangeListener = Mockito + .mock(HasValue.ValueChangeListener.class); + TextField textField = new TextField(valueChangeListener); + + textField.setValue("value change"); + + verify(valueChangeListener) + .valueChange(Mockito.any(HasValue.ValueChangeEvent.class)); + } + + @Test + public void testCaptionValueListener() { + HasValue.ValueChangeListener valueChangeListener = Mockito + .mock(HasValue.ValueChangeListener.class); + TextField textField = new TextField("Caption", "Initial value", + valueChangeListener); + + verify(valueChangeListener, never()) + .valueChange(Mockito.any(HasValue.ValueChangeEvent.class)); + + textField.setValue("value change"); + + verify(valueChangeListener) + .valueChange(Mockito.any(HasValue.ValueChangeEvent.class)); + } +} |