diff options
author | Adam Wagner <wbadam@users.noreply.github.com> | 2018-02-08 11:20:32 +0200 |
---|---|---|
committer | Teemu Suo-Anttila <tsuoanttila@users.noreply.github.com> | 2018-02-08 11:20:32 +0200 |
commit | 1817a82ed8f3c8839c18d9ce6b68e5838940a22c (patch) | |
tree | 3a110ba043aa4bea415b4060c4eba4439703711b /uitest/src/main/java/com/vaadin/tests | |
parent | 299520fac11dac9b31d6fd762a3eb76ef827ec5b (diff) | |
download | vaadin-framework-1817a82ed8f3c8839c18d9ce6b68e5838940a22c.tar.gz vaadin-framework-1817a82ed8f3c8839c18d9ce6b68e5838940a22c.zip |
Add recursive expand and collapse method to TreeGrid and Tree (#10283)
Diffstat (limited to 'uitest/src/main/java/com/vaadin/tests')
3 files changed, 118 insertions, 1 deletions
diff --git a/uitest/src/main/java/com/vaadin/tests/components/treegrid/LazyHierarchicalDataProvider.java b/uitest/src/main/java/com/vaadin/tests/components/treegrid/LazyHierarchicalDataProvider.java index a468f34d29..014ee7d1f0 100644 --- a/uitest/src/main/java/com/vaadin/tests/components/treegrid/LazyHierarchicalDataProvider.java +++ b/uitest/src/main/java/com/vaadin/tests/components/treegrid/LazyHierarchicalDataProvider.java @@ -49,7 +49,8 @@ public class LazyHierarchicalDataProvider extends .flatMap(parent -> Optional.of(parent.getId())); List<HierarchicalTestBean> list = new ArrayList<>(); - for (int i = 0; i < query.getLimit(); i++) { + int limit = Math.min(query.getLimit(), nodesPerLevel); + for (int i = 0; i < limit; i++) { list.add(new HierarchicalTestBean(parentKey.orElse(null), depth, i + query.getOffset())); } diff --git a/uitest/src/main/java/com/vaadin/tests/components/treegrid/TreeGridBasicFeatures.java b/uitest/src/main/java/com/vaadin/tests/components/treegrid/TreeGridBasicFeatures.java index 2ac0c0673d..c12baf3900 100644 --- a/uitest/src/main/java/com/vaadin/tests/components/treegrid/TreeGridBasicFeatures.java +++ b/uitest/src/main/java/com/vaadin/tests/components/treegrid/TreeGridBasicFeatures.java @@ -180,6 +180,11 @@ public class TreeGridBasicFeatures extends AbstractComponentTest<TreeGrid> { createClickAction("Expand 2 | 1", "Server-side expand", (treeGrid, value, data) -> treeGrid.expand(value), new HierarchicalTestBean("/0/0/1/1", 2, 1)); + + createClickAction("Expand 0 | 0 recursively", "Server-side expand", + (treeGrid, value, data) -> treeGrid + .expandRecursively(Arrays.asList(value), 1), + new HierarchicalTestBean(null, 0, 0)); } @SuppressWarnings("unchecked") @@ -194,6 +199,11 @@ public class TreeGridBasicFeatures extends AbstractComponentTest<TreeGrid> { createClickAction("Collapse 2 | 1", "Server-side collapse", (treeGrid, value, data) -> treeGrid.collapse(value), new HierarchicalTestBean("/0/0/1/1", 2, 1)); + + createClickAction("Collapse 0 | 0 recursively", "Server-side collapse", + (treeGrid, value, data) -> treeGrid + .collapseRecursively(Arrays.asList(value), 2), + new HierarchicalTestBean(null, 0, 0)); } @SuppressWarnings("unchecked") diff --git a/uitest/src/main/java/com/vaadin/tests/components/treegrid/TreeGridExpandCollapseRecursively.java b/uitest/src/main/java/com/vaadin/tests/components/treegrid/TreeGridExpandCollapseRecursively.java new file mode 100644 index 0000000000..f85eba5815 --- /dev/null +++ b/uitest/src/main/java/com/vaadin/tests/components/treegrid/TreeGridExpandCollapseRecursively.java @@ -0,0 +1,106 @@ +package com.vaadin.tests.components.treegrid; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; + +import com.vaadin.annotations.Widgetset; +import com.vaadin.server.VaadinRequest; +import com.vaadin.tests.components.AbstractTestUI; +import com.vaadin.ui.Button; +import com.vaadin.ui.HorizontalLayout; +import com.vaadin.ui.RadioButtonGroup; +import com.vaadin.ui.TreeGrid; + +@Widgetset("com.vaadin.DefaultWidgetSet") +public class TreeGridExpandCollapseRecursively extends AbstractTestUI { + + private static class Directory { + + private String name; + private Directory parent; + private List<Directory> subDirectories = new ArrayList<>(); + + public Directory(String name, Directory parent) { + this.name = name; + this.parent = parent; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public Directory getParent() { + return parent; + } + + public void setParent( + Directory parent) { + this.parent = parent; + } + + public List<Directory> getSubDirectories() { + return subDirectories; + } + + public void setSubDirectories(List<Directory> subDirectories) { + this.subDirectories = subDirectories; + } + } + + private static final int DEPTH = 4; + private static final int CHILDREN = 5; + + @Override + protected void setup(VaadinRequest request) { + + Collection<Directory> roots = generateDirectoryStructure(DEPTH); + + TreeGrid<Directory> grid = new TreeGrid<>(); + grid.addColumn(item -> "Item" + item.getName()); + + grid.setItems(roots, Directory::getSubDirectories); + + RadioButtonGroup<Integer> depthSelector = new RadioButtonGroup<>( + "Depth", Arrays.asList(0, 1, 2, 3)); + depthSelector.addStyleName("horizontal"); + depthSelector.setValue(3); + + HorizontalLayout buttons = new HorizontalLayout(); + buttons.addComponent(new Button("Expand recursively", e -> grid + .expandRecursively(roots, depthSelector.getValue()))); + buttons.addComponent(new Button("Collapse recursively", e -> grid + .collapseRecursively(roots, depthSelector.getValue()))); + + addComponents(depthSelector, buttons, grid); + } + + private Collection<Directory> generateDirectoryStructure(int depth) { + return generateDirectories(depth, null, CHILDREN); + } + + private Collection<Directory> generateDirectories(int depth, + Directory parent, int childCount) { + Collection<Directory> dirs = new ArrayList<>(); + if (depth >= 0) { + for (int i = 0; i < childCount; i++) { + String name = parent != null + ? parent.getName() + "-" + i + : "-" + i; + Directory dir = new Directory(name, parent); + if (parent != null) { + parent.getSubDirectories().add(dir); + } + dirs.add(dir); + + generateDirectories(depth - 1, dir, childCount); + } + } + return dirs; + } +} |