diff options
author | Ilia Motornyi <elmot@vaadin.com> | 2017-07-10 15:04:22 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-07-10 15:04:22 +0300 |
commit | a7b2de20d60ea157501d21d8e5179126571e7c36 (patch) | |
tree | fd0deeddfa4015cef0544e840151e7a76d046b2b /uitest | |
parent | 6e6fb1a47428eb106ae0702c96c3dd1095d4f2d4 (diff) | |
download | vaadin-framework-a7b2de20d60ea157501d21d8e5179126571e7c36.tar.gz vaadin-framework-a7b2de20d60ea157501d21d8e5179126571e7c36.zip |
Implement tree item context click
Fixes #9606
Fixes #9645
Fixes #9647
Diffstat (limited to 'uitest')
-rw-r--r-- | uitest/src/main/java/com/vaadin/tests/contextclick/TreeV8ContextClick.java | 72 | ||||
-rw-r--r-- | uitest/src/test/java/com/vaadin/tests/contextclick/TreeV8ContextClickTest.java | 63 |
2 files changed, 135 insertions, 0 deletions
diff --git a/uitest/src/main/java/com/vaadin/tests/contextclick/TreeV8ContextClick.java b/uitest/src/main/java/com/vaadin/tests/contextclick/TreeV8ContextClick.java new file mode 100644 index 0000000000..ed30eb47d6 --- /dev/null +++ b/uitest/src/main/java/com/vaadin/tests/contextclick/TreeV8ContextClick.java @@ -0,0 +1,72 @@ +/* + * Copyright 2000-2016 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.contextclick; + +import com.vaadin.data.TreeData; +import com.vaadin.shared.Registration; +import com.vaadin.ui.Button; +import com.vaadin.ui.Button.ClickEvent; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.Tree; +import com.vaadin.ui.Tree.TreeContextClickEvent; + +import java.util.Collections; + +public class TreeV8ContextClick extends + AbstractContextClickUI<Tree<String>, TreeContextClickEvent<String>> { + + @Override + protected Tree<String> createTestComponent() { + TreeData<String> treeData = new TreeData<>(); + for (int i = 0; i < 3; i++) { + String grandDad = "Granddad " + i; + treeData.addItems(null, grandDad); + for (int j = 0; j < 4; j++) { + String dad = "Dad " + i + "/" + j; + treeData.addItems(grandDad, dad); + for (int k = 0; k < 5; k++) { + treeData.addItems(dad, "Son " + i + "/" + j + "/" + k); + } + } + } + Tree<String> tree = new Tree<>("Clane", treeData); + tree.setWidth("100%"); + return tree; + } + + @Override + protected void handleContextClickEvent( + TreeContextClickEvent<String> event) { + String value = event.getItem(); + log("ContextClickEvent value: " + value); + } + + @Override + protected HorizontalLayout createContextClickControls() { + HorizontalLayout controls = super.createContextClickControls(); + controls.addComponent( + new Button("Remove all content", new Button.ClickListener() { + + @Override + public void buttonClick(ClickEvent event) { + testComponent.setItems(Collections.emptyList()); + testComponent.setHeight("200px"); + } + })); + return controls; + } + +} diff --git a/uitest/src/test/java/com/vaadin/tests/contextclick/TreeV8ContextClickTest.java b/uitest/src/test/java/com/vaadin/tests/contextclick/TreeV8ContextClickTest.java new file mode 100644 index 0000000000..3272cce334 --- /dev/null +++ b/uitest/src/test/java/com/vaadin/tests/contextclick/TreeV8ContextClickTest.java @@ -0,0 +1,63 @@ +/* + * Copyright 2000-2016 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.contextclick; + +import com.vaadin.testbench.elements.ButtonElement; +import com.vaadin.testbench.elements.TreeElement; +import org.junit.Test; +import org.openqa.selenium.WebElement; + +import static org.junit.Assert.assertEquals; + +public class TreeV8ContextClickTest extends AbstractContextClickTest { + + @Test + public void testBodyContextClickWithTypedListener() { + addOrRemoveTypedListener(); + + TreeElement tree = $(TreeElement.class).first(); + contextClick(tree.getItem(0)); + + assertEquals( + "1. ContextClickEvent value: Granddad 0", + getLogRow(0)); + + tree.expand(0); + tree.expand(2); + contextClick(tree.getItem(6)); + + assertEquals( + "2. ContextClickEvent value: Son 0/1/3", + getLogRow(0)); + } + + /** + * Performs a context click on given element at coordinates 20, 10 followed + * by a regular click. This prevents browser context menu from blocking + * future operations. + * + * A smaller X offset might hit the resize handle of the previous cell that + * overlaps with the next header cell. + * + * @param e + * web element + */ + @Override + protected void contextClick(WebElement e) { + contextClick(e, 20, 10); + } + +} |