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.

TestContainerChanges.java 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. package com.vaadin.tests;
  2. import com.vaadin.ui.Button;
  3. import com.vaadin.ui.CustomComponent;
  4. import com.vaadin.ui.HorizontalLayout;
  5. import com.vaadin.ui.Label;
  6. import com.vaadin.ui.Panel;
  7. import com.vaadin.ui.VerticalLayout;
  8. import com.vaadin.v7.data.Container;
  9. import com.vaadin.v7.data.util.ContainerHierarchicalWrapper;
  10. import com.vaadin.v7.data.util.ContainerOrderedWrapper;
  11. import com.vaadin.v7.data.util.IndexedContainer;
  12. import com.vaadin.v7.ui.ComboBox;
  13. import com.vaadin.v7.ui.ListSelect;
  14. import com.vaadin.v7.ui.Table;
  15. import com.vaadin.v7.ui.Tree;
  16. import com.vaadin.v7.ui.themes.Reindeer;
  17. /**
  18. * @author marc
  19. *
  20. */
  21. public class TestContainerChanges extends CustomComponent {
  22. Container cont = new IndexedContainer();
  23. Container hierarchical = new ContainerHierarchicalWrapper(cont);
  24. Container ordered = new ContainerOrderedWrapper(cont);
  25. int cnt = 0;
  26. Table tbl;
  27. public TestContainerChanges() {
  28. cont.addContainerProperty("Asd", String.class, "qwe");
  29. cont.addContainerProperty("Bar", String.class, "foo");
  30. VerticalLayout main = new VerticalLayout();
  31. setCompositionRoot(main);
  32. main.addComponent(new Label(
  33. "The same IndexedContainer is wrapped in a ordered/hierarchical wrapper and is set as data source for all components . The buttons only affect the 'original' IndexedContainer."));
  34. HorizontalLayout h = new HorizontalLayout();
  35. main.addComponent(h);
  36. VerticalLayout v = new VerticalLayout();
  37. h.addComponent(v);
  38. tbl = new Table();
  39. tbl.setHeight("200px");
  40. tbl.setWidth("300px");
  41. v.addComponent(tbl);
  42. tbl.setSelectable(true);
  43. tbl.setMultiSelect(false);
  44. tbl.setImmediate(true);
  45. tbl.setEditable(true);
  46. tbl.setRowHeaderMode(Table.ROW_HEADER_MODE_ID);
  47. // Original container
  48. tbl.setContainerDataSource(hierarchical);
  49. Table tbl2 = new Table();
  50. tbl2.setHeight("200px");
  51. tbl2.setWidth("300px");
  52. v.addComponent(tbl2);
  53. tbl2.setSelectable(true);
  54. tbl2.setMultiSelect(false);
  55. tbl2.setImmediate(true);
  56. tbl2.addValueChangeListener(event -> System.err
  57. .println("Value now " + event.getProperty().getValue()));
  58. tbl2.setRowHeaderMode(Table.ROW_HEADER_MODE_ID);
  59. // non-ordered container will get wrapped
  60. tbl2.setContainerDataSource(hierarchical);
  61. VerticalLayout buttons = new VerticalLayout();
  62. v.addComponent(buttons);
  63. Button b = new Button("table.commit()", event -> tbl.commit());
  64. buttons.addComponent(b);
  65. b = new Button("indexedcontainer.addItem()",
  66. event -> cont.addItem(new Integer(cnt++)));
  67. buttons.addComponent(b);
  68. b = new Button("indexedcontainer.addItem(null)",
  69. event -> cont.addItem(null));
  70. buttons.addComponent(b);
  71. b = new Button("indexedcontainer.removeItem(table.lastItemId()",
  72. event -> cont.removeItem(tbl.lastItemId()));
  73. buttons.addComponent(b);
  74. b = new Button("indexedcontainer.addContainerProperty()", event -> cont
  75. .addContainerProperty("prop" + cnt, String.class, "#" + cnt++));
  76. buttons.addComponent(b);
  77. b = new Button("indexedcontainer.clear()",
  78. event -> cont.removeAllItems());
  79. buttons.addComponent(b);
  80. b = new Button("table.setContainerDataSource(indexedcontainer)",
  81. event -> tbl.setContainerDataSource(cont));
  82. buttons.addComponent(b);
  83. b = new Button("table.setContainerDataSource(orderedwrapper)",
  84. event -> tbl.setContainerDataSource(ordered));
  85. buttons.addComponent(b);
  86. b = new Button("table.setContainerDataSource(hierarchicalwrapper)",
  87. event -> tbl.setContainerDataSource(hierarchical));
  88. buttons.addComponent(b);
  89. VerticalLayout pl = createPanelLayout();
  90. Panel p = new Panel("Tree", pl);
  91. p.setStyleName(Reindeer.PANEL_LIGHT);
  92. h.addComponent(p);
  93. Tree tree = new Tree("ITEM_CAPTION_MODE_PROPERTY");
  94. tree.setContainerDataSource(ordered);
  95. tree.setItemCaptionPropertyId("Asd");
  96. tree.setItemCaptionMode(Tree.ITEM_CAPTION_MODE_PROPERTY);
  97. pl.addComponent(tree);
  98. tree = new Tree("ITEM_CAPTION_MODE_ITEM");
  99. // nonhierarchical container will get wrapped
  100. tree.setContainerDataSource(ordered);
  101. tree.setItemCaptionMode(Tree.ITEM_CAPTION_MODE_ITEM);
  102. pl.addComponent(tree);
  103. pl = createPanelLayout();
  104. p = new Panel("ComboBox", pl);
  105. p.setStyleName(Reindeer.PANEL_LIGHT);
  106. h.addComponent(p);
  107. ComboBox c = new ComboBox("ITEM_CAPTION_MODE_PROPERTY");
  108. c.setImmediate(true);
  109. c.setContainerDataSource(cont);
  110. c.setItemCaptionPropertyId("Asd");
  111. c.setItemCaptionMode(ComboBox.ITEM_CAPTION_MODE_PROPERTY);
  112. pl.addComponent(c);
  113. c = new ComboBox("ITEM_CAPTION_MODE_ITEM");
  114. c.setImmediate(true);
  115. c.setContainerDataSource(cont);
  116. c.setItemCaptionMode(ComboBox.ITEM_CAPTION_MODE_ITEM);
  117. pl.addComponent(c);
  118. pl = createPanelLayout();
  119. p = new Panel("ListBox", pl);
  120. p.setStyleName(Reindeer.PANEL_LIGHT);
  121. h.addComponent(p);
  122. ListSelect l = new ListSelect("ITEM_CAPTION_MODE_PROPERTY");
  123. l.setContainerDataSource(cont);
  124. l.setItemCaptionPropertyId("Asd");
  125. l.setItemCaptionMode(ComboBox.ITEM_CAPTION_MODE_PROPERTY);
  126. pl.addComponent(l);
  127. l = new ListSelect("ITEM_CAPTION_MODE_ITEM");
  128. l.setContainerDataSource(cont);
  129. l.setItemCaptionMode(ComboBox.ITEM_CAPTION_MODE_ITEM);
  130. pl.addComponent(l);
  131. }
  132. private VerticalLayout createPanelLayout() {
  133. VerticalLayout pl = new VerticalLayout();
  134. pl.setMargin(true);
  135. return pl;
  136. }
  137. }