summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTeemu Pòˆntelin <teemu@vaadin.com>2014-06-13 18:07:48 +0300
committerVaadin Code Review <review@vaadin.com>2014-06-17 04:48:13 +0000
commitdc08a1c857d75e964a47842f4a2a9538878457b9 (patch)
tree833f60c1c3564bcb670b3b22f33ae027fe7e2758
parent4e68548c1a28746fdd74a7465a12fb9e67856044 (diff)
downloadvaadin-framework-dc08a1c857d75e964a47842f4a2a9538878457b9.tar.gz
vaadin-framework-dc08a1c857d75e964a47842f4a2a9538878457b9.zip
ComboBox no longer displays input prompt if disabled or read-only (#10573)
Change-Id: I3e0ad83bc5ec4a98a0c8e7658dfb606c6c5dc191
-rw-r--r--client/src/com/vaadin/client/ui/VFilterSelect.java2
-rw-r--r--client/src/com/vaadin/client/ui/combobox/ComboBoxConnector.java6
-rw-r--r--uitest/src/com/vaadin/tests/components/combobox/ComboBoxInputPrompt.java62
-rw-r--r--uitest/src/com/vaadin/tests/components/combobox/ComboBoxInputPromptTest.java70
4 files changed, 137 insertions, 3 deletions
diff --git a/client/src/com/vaadin/client/ui/VFilterSelect.java b/client/src/com/vaadin/client/ui/VFilterSelect.java
index a1de2c2b6d..d4e76e07a6 100644
--- a/client/src/com/vaadin/client/ui/VFilterSelect.java
+++ b/client/src/com/vaadin/client/ui/VFilterSelect.java
@@ -1716,7 +1716,7 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler,
setPromptingOff(text);
selectedOptionKey = currentSuggestion.key;
} else {
- if (focused) {
+ if (focused || readonly || !enabled) {
setPromptingOff("");
} else {
setPromptingOn();
diff --git a/client/src/com/vaadin/client/ui/combobox/ComboBoxConnector.java b/client/src/com/vaadin/client/ui/combobox/ComboBoxConnector.java
index c3cdb43703..2e64fcba46 100644
--- a/client/src/com/vaadin/client/ui/combobox/ComboBoxConnector.java
+++ b/client/src/com/vaadin/client/ui/combobox/ComboBoxConnector.java
@@ -303,8 +303,10 @@ public class ComboBoxConnector extends AbstractFieldConnector implements
* ALWAYS set the prompting style at this point, even though we
* think it has been set already...
*/
- getWidget().prompting = false;
- getWidget().setPromptingOn();
+ getWidget().setPromptingOff("");
+ if (getWidget().enabled && !getWidget().readonly) {
+ getWidget().setPromptingOn();
+ }
} else {
// we have focus in field, prompting can't be set on, instead
// just clear the input if the value has changed from something
diff --git a/uitest/src/com/vaadin/tests/components/combobox/ComboBoxInputPrompt.java b/uitest/src/com/vaadin/tests/components/combobox/ComboBoxInputPrompt.java
new file mode 100644
index 0000000000..082aca6989
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/combobox/ComboBoxInputPrompt.java
@@ -0,0 +1,62 @@
+/*
+ * 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.tests.components.combobox;
+
+import com.vaadin.server.VaadinRequest;
+import com.vaadin.tests.components.AbstractTestUI;
+import com.vaadin.ui.Button;
+import com.vaadin.ui.Button.ClickEvent;
+import com.vaadin.ui.ComboBox;
+
+public class ComboBoxInputPrompt extends AbstractTestUI {
+
+ @Override
+ protected void setup(VaadinRequest request) {
+ final ComboBox cb1 = new ComboBox("Normal");
+ cb1.setInputPrompt("Normal input prompt");
+
+ final ComboBox cb2 = new ComboBox("Disabled");
+ cb2.setEnabled(false);
+ cb2.setInputPrompt("Disabled input prompt");
+
+ final ComboBox cb3 = new ComboBox("Read-only");
+ cb3.setReadOnly(true);
+ cb3.setInputPrompt("Read-only input prompt");
+
+ Button enableButton = new Button("Toggle enabled",
+ new Button.ClickListener() {
+
+ @Override
+ public void buttonClick(ClickEvent event) {
+ cb2.setEnabled(!cb2.isEnabled());
+ cb3.setReadOnly(!cb3.isReadOnly());
+ }
+ });
+
+ addComponents(cb1, cb2, cb3, enableButton);
+ }
+
+ @Override
+ protected String getTestDescription() {
+ return "ComboBox should not display the input prompt if disabled or read-only.";
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ return 10573;
+ }
+
+}
diff --git a/uitest/src/com/vaadin/tests/components/combobox/ComboBoxInputPromptTest.java b/uitest/src/com/vaadin/tests/components/combobox/ComboBoxInputPromptTest.java
new file mode 100644
index 0000000000..96151022ff
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/combobox/ComboBoxInputPromptTest.java
@@ -0,0 +1,70 @@
+/*
+ * 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.tests.components.combobox;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.is;
+import static org.hamcrest.Matchers.isEmptyString;
+import static org.junit.Assert.assertEquals;
+
+import com.vaadin.testbench.elements.ButtonElement;
+import com.vaadin.testbench.elements.ComboBoxElement;
+import com.vaadin.testbench.elements.TextFieldElement;
+import com.vaadin.tests.tb3.AbstractTB3Test;
+import org.junit.Test;
+import org.openqa.selenium.By;
+import org.openqa.selenium.WebElement;
+
+import com.vaadin.tests.tb3.MultiBrowserTest;
+
+public class ComboBoxInputPromptTest extends MultiBrowserTest {
+
+ @Test
+ public void promptIsHiddenForDisabledAndReadonly() {
+ openTestURL();
+
+ ComboBoxElement normalComboBox = getComboBoxWithCaption("Normal");
+ ComboBoxElement disabledComboBox = getComboBoxWithCaption("Disabled");
+ ComboBoxElement readOnlyComboBox = getComboBoxWithCaption("Read-only");
+
+ assertThat(getInputPromptValue(normalComboBox), is("Normal input prompt"));
+ assertThat(getInputPromptValue(disabledComboBox), isEmptyString());
+ assertThat(getInputPromptValue(readOnlyComboBox), isEmptyString());
+
+ toggleDisabledAndReadonly();
+ assertThat(getInputPromptValue(disabledComboBox), is("Disabled input prompt"));
+ assertThat(getInputPromptValue(readOnlyComboBox), is("Read-only input prompt"));
+
+ toggleDisabledAndReadonly();
+ assertThat(getInputPromptValue(disabledComboBox), isEmptyString());
+ assertThat(getInputPromptValue(readOnlyComboBox), isEmptyString());
+ }
+
+ private void toggleDisabledAndReadonly() {
+ $(ButtonElement.class).first().click();
+ }
+
+ private String getInputPromptValue(ComboBoxElement comboBox) {
+ WebElement input = comboBox.findElement(By.tagName("input"));
+
+ return input.getAttribute("value");
+ }
+
+ private ComboBoxElement getComboBoxWithCaption(String caption) {
+ return $(ComboBoxElement.class).caption(caption).first();
+ }
+
+}