diff options
author | Teemu Suo-Anttila <tsuoanttila@users.noreply.github.com> | 2017-05-02 18:26:11 +0300 |
---|---|---|
committer | Henri Sara <henri.sara@gmail.com> | 2017-05-02 18:26:11 +0300 |
commit | bb43a537e05d9d60ef82f1acac41cea6343c8cbb (patch) | |
tree | 12617ba2c0b076dbf33d4aa4399061487616e112 /testbench-api/src | |
parent | d5c7d4b68a2befa3ec874eae8a456614d0333233 (diff) | |
download | vaadin-framework-bb43a537e05d9d60ef82f1acac41cea6343c8cbb.tar.gz vaadin-framework-bb43a537e05d9d60ef82f1acac41cea6343c8cbb.zip |
Add an initial version of Tree component (#9212)
This patch introduces a Tree component, implemented as a Composite
using TreeGrid. As initial version of the component, some functionality
of the old Tree component has been left out for now.
Partly addresses #8617
Diffstat (limited to 'testbench-api/src')
-rw-r--r-- | testbench-api/src/main/java/com/vaadin/testbench/elements/TreeElement.java | 125 | ||||
-rw-r--r-- | testbench-api/src/main/java/com/vaadin/v7/testbench/elements/TreeElement.java | 44 |
2 files changed, 156 insertions, 13 deletions
diff --git a/testbench-api/src/main/java/com/vaadin/testbench/elements/TreeElement.java b/testbench-api/src/main/java/com/vaadin/testbench/elements/TreeElement.java index d879749c24..611bc95ff0 100644 --- a/testbench-api/src/main/java/com/vaadin/testbench/elements/TreeElement.java +++ b/testbench-api/src/main/java/com/vaadin/testbench/elements/TreeElement.java @@ -15,29 +15,128 @@ */ package com.vaadin.testbench.elements; +import java.util.Arrays; import java.util.List; import org.openqa.selenium.By; +import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.WebElement; +import com.vaadin.testbench.TestBenchElement; import com.vaadin.testbench.elementsbase.ServerClass; -@ServerClass("com.vaadin.ui.Tree") -@Deprecated -public class TreeElement extends AbstractSelectElement { +/** + * Testbench Element API for {@code Tree}. + * <p> + * <strong>Note:</strong> This TreeElement is for the Vaadin 8 version of Tree. + * Use {@link com.vaadin.v7.testbench.elements.TreeElement} for the + * compatibility version. + * + * @author Vaadin Ltd. + * @since 8.1 + */ +// TODO: Switch to com.vaadin.ui.Tree once inheritance finding is fixed +@ServerClass("com.vaadin.ui.Composite") +public class TreeElement extends AbstractComponentElement { + /** - * Returns selected item of the tree. In multiselect mode returns first - * selected item. If there is no selected item returns empty string + * Expands the row at the given index in the tree. * - * @return selected item of the tree + * @param index + * 0-based row index to expand */ - public String getValue() { - List<WebElement> selectedElements = findElements( - By.className("v-tree-node-selected")); - if (selectedElements.isEmpty()) { - return ""; - } else { - return selectedElements.get(0).getText(); + public void expand(int index) { + if (isExpanded(index)) { + throw new IllegalStateException( + "The element at row " + index + " was expanded already"); } + getExpandElement(index).click(); + } + + /** + * Returns whether the row at the given index is expanded or not. + * + * @param index + * 0-based row index + * @return {@code true} if expanded, {@code false} if collapsed + */ + public boolean isExpanded(int index) { + WebElement expandElement = getExpandElement(index); + List<String> classes = Arrays + .asList(expandElement.getAttribute("class").split(" ")); + return classes.contains("expanded") && !classes.contains("collapsed"); + } + + /** + * Returns whether the row at the given index is collapsed or not. + * + * @param rowIndex + * 0-based row index + * + * @return {@code true} if collapsed, {@code false} if expanded + */ + public boolean isCollapsed(int rowIndex) { + return !isExpanded(rowIndex); + } + + /** + * Gets the expand/collapse element for the given row. + * + * @param rowIndex + * 0-based row index + * @return the {@code span} element that is clicked for expanding/collapsing + * a row + * @throws NoSuchElementException + * if there is no expand element for this row + */ + public WebElement getExpandElement(int rowIndex) { + return asTreeGrid().getCell(rowIndex, 0) + .findElement(By.className("v-newtree-expander")); + + } + + /** + * Collapses the row at the given index in the tree. + * + * @param index + * 0-based row index to collapse + */ + public void collapse(int index) { + if (isCollapsed(index)) { + throw new IllegalStateException( + "The element at row " + index + " was collapsed already"); + } + getExpandElement(index).click(); + } + + /** + * Gets all items currently shown in this tree. + * + * @return list of all items + */ + public List<TestBenchElement> getAllItems() { + return TestBenchElement.wrapElements( + asTreeGrid().getBody().findElements(By.tagName("tr")), + getCommandExecutor()); + } + + /** + * Gets an item at given index. + * + * @param index + * 0-based row index + * @return item at given index + */ + public TestBenchElement getItem(int index) { + return asTreeGrid().getCell(index, 0); + } + + /** + * Convenience method for accessing the underlying TreeGrid. + * + * @return this tree element as a tree grid element. + */ + protected TreeGridElement asTreeGrid() { + return wrap(TreeGridElement.class); } } diff --git a/testbench-api/src/main/java/com/vaadin/v7/testbench/elements/TreeElement.java b/testbench-api/src/main/java/com/vaadin/v7/testbench/elements/TreeElement.java new file mode 100644 index 0000000000..c9aa9a695b --- /dev/null +++ b/testbench-api/src/main/java/com/vaadin/v7/testbench/elements/TreeElement.java @@ -0,0 +1,44 @@ +/* + * 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.v7.testbench.elements; + +import java.util.List; + +import org.openqa.selenium.By; +import org.openqa.selenium.WebElement; + +import com.vaadin.testbench.elements.AbstractSelectElement; +import com.vaadin.testbench.elementsbase.ServerClass; + +@ServerClass("com.vaadin.ui.Tree") +@Deprecated +public class TreeElement extends AbstractSelectElement { + /** + * Returns selected item of the tree. In multiselect mode returns first + * selected item. If there is no selected item returns empty string + * + * @return selected item of the tree + */ + public String getValue() { + List<WebElement> selectedElements = findElements( + By.className("v-tree-node-selected")); + if (selectedElements.isEmpty()) { + return ""; + } else { + return selectedElements.get(0).getText(); + } + } +} |