You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TreeGridDetailsManager.java 3.4KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package com.vaadin.tests.components.treegrid;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import com.vaadin.data.TreeData;
  5. import com.vaadin.data.provider.TreeDataProvider;
  6. import com.vaadin.server.VaadinRequest;
  7. import com.vaadin.tests.components.AbstractTestUI;
  8. import com.vaadin.ui.Button;
  9. import com.vaadin.ui.HorizontalLayout;
  10. import com.vaadin.ui.Label;
  11. import com.vaadin.ui.TreeGrid;
  12. public class TreeGridDetailsManager extends AbstractTestUI {
  13. private TreeGrid<String> treeGrid;
  14. private TreeDataProvider<String> treeDataProvider;
  15. private List<String> items = new ArrayList<String>();
  16. private void initializeDataProvider() {
  17. TreeData<String> data = new TreeData<>();
  18. for (int i = 0; i < 2; i++) {
  19. String root = "Root " + i;
  20. items.add(root);
  21. data.addItem(null, root);
  22. for (int j = 0; j < 2; j++) {
  23. String leaf = "Leaf " + i + "/" + j;
  24. items.add(leaf);
  25. data.addItem(root, leaf);
  26. }
  27. }
  28. treeDataProvider = new TreeDataProvider<>(data);
  29. }
  30. @Override
  31. protected void setup(VaadinRequest request) {
  32. initializeDataProvider();
  33. treeGrid = new TreeGrid<>();
  34. treeGrid.setDataProvider(treeDataProvider);
  35. treeGrid.setSizeFull();
  36. treeGrid.addColumn(String::toString).setCaption("String")
  37. .setId("string");
  38. treeGrid.addColumn((i) -> "--").setCaption("Nothing");
  39. treeGrid.setHierarchyColumn("string");
  40. treeGrid.setDetailsGenerator(
  41. row -> new Label("details for " + row.toString()));
  42. treeGrid.addItemClickListener(event -> {
  43. treeGrid.setDetailsVisible(event.getItem(),
  44. !treeGrid.isDetailsVisible(event.getItem()));
  45. });
  46. Button showDetails = new Button("Show all details", event -> {
  47. for (String id : items) {
  48. treeGrid.setDetailsVisible(id, true);
  49. }
  50. });
  51. showDetails.setId("showDetails");
  52. Button hideDetails = new Button("Hide all details", event -> {
  53. for (String id : items) {
  54. treeGrid.setDetailsVisible(id, false);
  55. }
  56. });
  57. hideDetails.setId("hideDetails");
  58. Button expandAll = new Button("Expand all", event -> {
  59. treeGrid.expand(items);
  60. });
  61. expandAll.setId("expandAll");
  62. Button collapseAll = new Button("Collapse all", event -> {
  63. treeGrid.collapse(items);
  64. });
  65. collapseAll.setId("collapseAll");
  66. Button addGrid = new Button("Add grid", event -> {
  67. addComponent(treeGrid);
  68. getLayout().setExpandRatio(treeGrid, 2);
  69. });
  70. addGrid.setId("addGrid");
  71. addComponents(new HorizontalLayout(showDetails, hideDetails, expandAll,
  72. collapseAll), addGrid);
  73. getLayout().getParent().setHeight("100%");
  74. getLayout().setHeight("100%");
  75. treeGrid.setHeight("100%");
  76. setHeight("100%");
  77. }
  78. @Override
  79. protected String getTestDescription() {
  80. return "Expanding and collapsing with and without open details rows shouldn't cause exceptions. "
  81. + "Details row should be reopened upon expanding if it was open before collapsing.";
  82. }
  83. @Override
  84. protected Integer getTicketNumber() {
  85. return 11288;
  86. }
  87. }