Change-Id: I3e0ad83bc5ec4a98a0c8e7658dfb606c6c5dc191tags/7.3.0.beta1
@@ -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(); |
@@ -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 |
@@ -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; | |||
} | |||
} |
@@ -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(); | |||
} | |||
} |