Change-Id: Ibad2f45fb81d9573125fbc786bd3493ac6cdfc00tags/7.4.0.beta1
@@ -250,6 +250,8 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler, | |||
addCloseHandler(this); | |||
Roles.getListRole().set(getElement()); | |||
setPreviewingAllNativeEvents(true); | |||
} | |||
/** |
@@ -0,0 +1,79 @@ | |||
/* | |||
* 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 java.util.ArrayList; | |||
import com.vaadin.server.Page; | |||
import com.vaadin.server.VaadinRequest; | |||
import com.vaadin.tests.components.AbstractTestUI; | |||
import com.vaadin.ui.ComboBox; | |||
import com.vaadin.ui.HorizontalLayout; | |||
import com.vaadin.ui.MenuBar; | |||
import com.vaadin.ui.MenuBar.MenuItem; | |||
import com.vaadin.ui.Notification; | |||
import com.vaadin.ui.Notification.Type; | |||
/** | |||
* Test UI for combobox popup which should be closed on any click outside it. | |||
* | |||
* @author Vaadin Ltd | |||
*/ | |||
public class ComboboxMenuBarAutoopen extends AbstractTestUI { | |||
@Override | |||
protected void setup(VaadinRequest request) { | |||
HorizontalLayout layout = new HorizontalLayout(); | |||
layout.setSpacing(true); | |||
ArrayList<String> options = new ArrayList<String>(); | |||
options.add("1"); | |||
options.add("2"); | |||
options.add("3"); | |||
ComboBox combo = new ComboBox(null, options); | |||
layout.addComponent(combo); | |||
MenuBar menubar = getMenubar(); | |||
layout.addComponent(menubar); | |||
addComponent(layout); | |||
} | |||
@Override | |||
protected String getTestDescription() { | |||
return "Combobox popup should close on click to other popup or associated components."; | |||
} | |||
@Override | |||
protected Integer getTicketNumber() { | |||
return 14321; | |||
} | |||
private MenuBar getMenubar() { | |||
MenuBar menubar = new MenuBar(); | |||
menubar.setAutoOpen(true); | |||
MenuItem item = menubar.addItem("auto-open", null); | |||
item.addItem("sub-item 1", new MenuBar.Command() { | |||
@Override | |||
public void menuSelected(MenuItem selectedItem) { | |||
Notification notification = new Notification("Test", | |||
Type.HUMANIZED_MESSAGE); | |||
notification.show(Page.getCurrent()); | |||
} | |||
}); | |||
return menubar; | |||
} | |||
} |
@@ -0,0 +1,80 @@ | |||
/* | |||
* 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 org.junit.Assert; | |||
import org.junit.Test; | |||
import org.openqa.selenium.By; | |||
import org.openqa.selenium.WebElement; | |||
import org.openqa.selenium.interactions.Actions; | |||
import com.vaadin.testbench.elements.ComboBoxElement; | |||
import com.vaadin.testbench.elements.MenuBarElement; | |||
import com.vaadin.tests.tb3.MultiBrowserTest; | |||
/** | |||
* Test that checks whether Combobox popup is closed on click to autoopen | |||
* menubar and its item. | |||
* | |||
* @author Vaadin Ltd | |||
*/ | |||
public class ComboboxMenuBarAutoopenTest extends MultiBrowserTest { | |||
@Test | |||
public void closeComboboxPopupOnClickToMenuBar() { | |||
openTestURL(); | |||
openPopup(); | |||
MenuBarElement menuBar = selectMenuBar(); | |||
menuBar.click(); | |||
Assert.assertFalse("Combobox popup items are visible", | |||
isElementPresent(By.className("gwt-MenuItem"))); | |||
openPopup(); | |||
menuBar = selectMenuBar(); | |||
WebElement menuBarItem = findElement(By | |||
.className("v-menubar-menuitem-caption")); | |||
Actions actions = new Actions(getDriver()); | |||
actions.moveToElement(menuBarItem).build().perform(); | |||
menuBar.click(); | |||
Assert.assertFalse("Combobox popup items are visible", | |||
isElementPresent(By.className("gwt-MenuItem"))); | |||
} | |||
private void openPopup() { | |||
ComboBoxElement combobox = $(ComboBoxElement.class).first(); | |||
combobox.click(); | |||
combobox.openPopup(); | |||
combobox.focus(); | |||
Actions actions = new Actions(getDriver()); | |||
actions.moveToElement( | |||
getDriver().findElement(By.className("gwt-MenuItem"))).build() | |||
.perform(); | |||
} | |||
private MenuBarElement selectMenuBar() { | |||
MenuBarElement menuBar = $(MenuBarElement.class).first(); | |||
menuBar.focus(); | |||
Actions actions = new Actions(getDriver()); | |||
actions.moveToElement(menuBar).build().perform(); | |||
return menuBar; | |||
} | |||
} |