Change-Id: Ibea81666101ff119e1b3e48726224f369e59b00ftags/7.1.15
@@ -267,7 +267,9 @@ public class ComboBoxConnector extends AbstractFieldConnector implements | |||
// we have focus in field, prompting can't be set on, instead | |||
// just clear the input if the value has changed from something | |||
// else to null | |||
if (getWidget().selectedOptionKey != null) { | |||
if (getWidget().selectedOptionKey != null | |||
|| (getWidget().allowNewItem && !getWidget().tb | |||
.getValue().isEmpty())) { | |||
getWidget().tb.setValue(""); | |||
} | |||
} |
@@ -0,0 +1,61 @@ | |||
/* | |||
* Copyright 2000-2013 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.data.Property; | |||
import com.vaadin.data.Property.ValueChangeEvent; | |||
import com.vaadin.server.VaadinRequest; | |||
import com.vaadin.tests.components.AbstractTestUI; | |||
import com.vaadin.ui.ComboBox; | |||
import com.vaadin.ui.Label; | |||
public class ComboBoxSetNullWhenNewItemsAllowed extends AbstractTestUI { | |||
@Override | |||
protected void setup(VaadinRequest request) { | |||
final ComboBox comboBox = new ComboBox("My ComboBox"); | |||
comboBox.setImmediate(true); | |||
comboBox.setNullSelectionAllowed(false); | |||
comboBox.setNewItemsAllowed(true); | |||
for (int i = 0; i < 10; i++) { | |||
comboBox.addItem("Item " + i); | |||
} | |||
final Label value = new Label("Selected: "); | |||
comboBox.addValueChangeListener(new Property.ValueChangeListener() { | |||
@Override | |||
public void valueChange(ValueChangeEvent event) { | |||
if (comboBox.getValue() != null) { | |||
comboBox.setValue(null); | |||
value.setValue("Selected: " + (String) comboBox.getValue()); | |||
} | |||
} | |||
}); | |||
addComponent(comboBox); | |||
addComponent(value); | |||
} | |||
@Override | |||
protected String getTestDescription() { | |||
return "ComboBox should clear its value when setting to null with new items."; | |||
} | |||
@Override | |||
protected Integer getTicketNumber() { | |||
return 13413; | |||
} | |||
} |
@@ -0,0 +1,55 @@ | |||
/* | |||
* Copyright 2000-2013 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.junit.Assert.assertEquals; | |||
import org.junit.Test; | |||
import org.openqa.selenium.Keys; | |||
import org.openqa.selenium.WebElement; | |||
import com.vaadin.testbench.By; | |||
import com.vaadin.testbench.commands.TestBenchElementCommands; | |||
import com.vaadin.tests.tb3.MultiBrowserTest; | |||
/** | |||
* ComboBox should clear its value when setting to null with new items. | |||
*/ | |||
public class ComboBoxSetNullWhenNewItemsAllowedTest extends MultiBrowserTest { | |||
@Test | |||
public void testNewValueIsClearedAppropriately() | |||
throws InterruptedException { | |||
setDebug(true); | |||
openTestURL(); | |||
Thread.sleep(1000); | |||
WebElement element = findElement(); | |||
((TestBenchElementCommands) element).click(8, 7); | |||
element.clear(); | |||
element.sendKeys("New value"); | |||
assertEquals("New value", element.getAttribute("value")); | |||
element.sendKeys(Keys.RETURN); | |||
assertEquals("", element.getAttribute("value")); | |||
} | |||
private WebElement findElement() { | |||
return getDriver() | |||
.findElement( | |||
By.vaadin("runcomvaadintestscomponentscomboboxComboBoxSetNullWhenNewItemsAllowed::/VVerticalLayout[0]/ChildComponentContainer[1]/VVerticalLayout[0]/ChildComponentContainer[0]/VFilterSelect[0]#textbox")); | |||
} | |||
} |