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.

CtrlShiftMultiselect.java 3.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package com.vaadin.v7.tests.components.tree;
  2. import java.util.Set;
  3. import com.vaadin.tests.components.TestBase;
  4. import com.vaadin.ui.Label;
  5. import com.vaadin.v7.data.Item;
  6. import com.vaadin.v7.data.Property;
  7. import com.vaadin.v7.data.Property.ValueChangeEvent;
  8. import com.vaadin.v7.data.util.HierarchicalContainer;
  9. import com.vaadin.v7.ui.Tree;
  10. public class CtrlShiftMultiselect extends TestBase {
  11. private final Tree tree = new Tree();
  12. private final Label valueLbl = new Label("No selection");
  13. @Override
  14. protected void setup() {
  15. getLayout().setSpacing(true);
  16. tree.setContainerDataSource(createContainer());
  17. tree.setItemCaptionPropertyId("name");
  18. tree.setWidth("300px");
  19. tree.setImmediate(true);
  20. tree.setSelectable(true);
  21. tree.setMultiSelect(true);
  22. tree.expandItemsRecursively("Item 1");
  23. tree.expandItemsRecursively("Item 4");
  24. tree.addListener(new Property.ValueChangeListener() {
  25. @Override
  26. public void valueChange(ValueChangeEvent event) {
  27. if (tree.getValue() instanceof Set) {
  28. @SuppressWarnings("unchecked")
  29. // safe cast after instanceof check
  30. Set<Object> itemIds = (Set<Object>) tree.getValue();
  31. if (itemIds.isEmpty()) {
  32. valueLbl.setValue("No selection");
  33. } else {
  34. valueLbl.setValue(itemIds.toString());
  35. }
  36. } else {
  37. valueLbl.setValue(tree.getValue().toString());
  38. }
  39. }
  40. });
  41. addComponent(tree);
  42. valueLbl.setWidth("300px");
  43. valueLbl.setHeight("600px");
  44. addComponent(valueLbl);
  45. }
  46. @Override
  47. protected String getDescription() {
  48. return "Add ctlr+shift multi selection in Tree";
  49. }
  50. @Override
  51. protected Integer getTicketNumber() {
  52. return 4259;
  53. }
  54. private HierarchicalContainer createContainer() {
  55. HierarchicalContainer cont = new HierarchicalContainer();
  56. cont.addContainerProperty("name", String.class, "");
  57. for (int i = 0; i < 20; i++) {
  58. Item item = cont.addItem("Item " + i);
  59. item.getItemProperty("name").setValue("Item " + i);
  60. cont.setChildrenAllowed("Item " + i, false);
  61. if (i == 1 || i == 4) {
  62. cont.setChildrenAllowed("Item " + i, true);
  63. }
  64. // Add three items to item 1
  65. if (i > 1 && i < 4) {
  66. cont.setParent("Item " + i, "Item 1");
  67. }
  68. // Add 5 items to item 4
  69. if (i > 4 && i < 10) {
  70. cont.setChildrenAllowed("Item " + i, true);
  71. if (i == 7) {
  72. item = cont.addItem("Item 71");
  73. item.getItemProperty("name").setValue("Item 71");
  74. cont.setParent("Item 71", "Item " + i);
  75. cont.setChildrenAllowed("Item 71", false);
  76. item = cont.addItem("Item 72");
  77. item.getItemProperty("name").setValue("Item 72");
  78. cont.setParent("Item 72", "Item " + i);
  79. cont.setChildrenAllowed("Item 72", true);
  80. item = cont.addItem("Item 73");
  81. item.getItemProperty("name").setValue("Item 73");
  82. cont.setParent("Item 73", "Item 72");
  83. cont.setChildrenAllowed("Item 73", true);
  84. item = cont.addItem("Item 74");
  85. item.getItemProperty("name").setValue("Item 74");
  86. cont.setParent("Item 74", "Item " + i);
  87. cont.setChildrenAllowed("Item 74", true);
  88. }
  89. cont.setParent("Item " + i, "Item " + (i - 1));
  90. }
  91. }
  92. return cont;
  93. }
  94. }