Browse Source

Handle all native events in preview handler for Combobox popup (#14321).

Change-Id: Ibad2f45fb81d9573125fbc786bd3493ac6cdfc00
tags/7.4.0.beta1
Denis Anisimov 9 years ago
parent
commit
c8d5826195

+ 2
- 0
client/src/com/vaadin/client/ui/VFilterSelect.java View File

@@ -250,6 +250,8 @@ public class VFilterSelect extends Composite implements Field, KeyDownHandler,
addCloseHandler(this);

Roles.getListRole().set(getElement());

setPreviewingAllNativeEvents(true);
}

/**

+ 79
- 0
uitest/src/com/vaadin/tests/components/combobox/ComboboxMenuBarAutoopen.java View File

@@ -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;
}
}

+ 80
- 0
uitest/src/com/vaadin/tests/components/combobox/ComboboxMenuBarAutoopenTest.java View File

@@ -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;
}

}

Loading…
Cancel
Save