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.

ItemClickEvents.java 5.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. package com.vaadin.tests.components.table;
  2. import com.vaadin.data.Item;
  3. import com.vaadin.data.util.MethodProperty;
  4. import com.vaadin.event.ItemClickEvent;
  5. import com.vaadin.event.ItemClickEvent.ItemClickListener;
  6. import com.vaadin.server.ExternalResource;
  7. import com.vaadin.server.VaadinRequest;
  8. import com.vaadin.tests.components.AbstractTestUI;
  9. import com.vaadin.tests.util.Log;
  10. import com.vaadin.ui.Button;
  11. import com.vaadin.ui.Button.ClickEvent;
  12. import com.vaadin.ui.CheckBox;
  13. import com.vaadin.ui.Component;
  14. import com.vaadin.ui.HorizontalLayout;
  15. import com.vaadin.ui.Table;
  16. import com.vaadin.ui.Tree;
  17. public class ItemClickEvents extends AbstractTestUI {
  18. private Tree tree;
  19. private Table table;
  20. private Log log;
  21. @Override
  22. @SuppressWarnings("unchecked")
  23. protected void setup(VaadinRequest request) {
  24. tree = new Tree();
  25. table = new Table();
  26. log = new Log(5);
  27. log.setId("log");
  28. HorizontalLayout ol = createHorizontalLayout(tree);
  29. Button b = new Button("icon", new Button.ClickListener() {
  30. @Override
  31. public void buttonClick(ClickEvent event) {
  32. if (tree.getItemIconPropertyId() == null) {
  33. tree.setItemIconPropertyId("icon");
  34. } else {
  35. tree.setItemIconPropertyId(null);
  36. }
  37. }
  38. });
  39. ol.addComponent(b);
  40. tree.setImmediate(true);
  41. tree.setNullSelectionAllowed(false);
  42. tree.addItem("Root 1");
  43. tree.addItem("1. Child 1");
  44. tree.setParent("1. Child 1", "Root 1");
  45. tree.addItem("1. Child 2");
  46. tree.setParent("1. Child 2", "Root 1");
  47. tree.addItem("Root 2");
  48. tree.addItem("2. Child 1");
  49. tree.setParent("2. Child 1", "Root 2");
  50. tree.addItem("2. Child 2");
  51. tree.setParent("2. Child 2", "Root 2");
  52. tree.addContainerProperty(
  53. "icon",
  54. ExternalResource.class,
  55. new ExternalResource(
  56. "https://vaadin.com/vaadin-theme/images/vaadin-logo.png"));
  57. tree.addListener(new ItemClickListener() {
  58. @Override
  59. public void itemClick(ItemClickEvent event) {
  60. logEvent(event, "tree");
  61. }
  62. });
  63. tree.setId("tree");
  64. HorizontalLayout ol2 = createHorizontalLayout(table);
  65. table.setWidth("150px");
  66. table.setImmediate(true);
  67. table.setSelectable(true);
  68. table.setNullSelectionAllowed(false);
  69. table.addContainerProperty("Column", String.class, "value");
  70. for (int i = 0; i < 10; i++) {
  71. Item item = table.addItem("Item " + i);
  72. item.getItemProperty("Column").setValue("Row " + i);
  73. }
  74. table.addListener(new ItemClickListener() {
  75. @Override
  76. public void itemClick(ItemClickEvent event) {
  77. logEvent(event, "table");
  78. }
  79. });
  80. table.setId("table");
  81. addComponent(log);
  82. addComponent(new Button("Clear log", new Button.ClickListener() {
  83. @Override
  84. public void buttonClick(ClickEvent event) {
  85. log.clear();
  86. }
  87. }));
  88. addComponent(ol);
  89. addComponent(tree);
  90. addComponent(ol2);
  91. addComponent(table);
  92. }
  93. protected void logEvent(ItemClickEvent event, String targetComponent) {
  94. String type = event.getButtonName() + " " + "click";
  95. if (event.isDoubleClick()) {
  96. type = "doubleClick";
  97. }
  98. String modifiers = "";
  99. if (event.isAltKey()) {
  100. // Most likely won't trigger on Linux due to WMs using alt + mouse
  101. // button
  102. modifiers += "alt ";
  103. }
  104. if (event.isMetaKey()) {
  105. modifiers += "meta ";
  106. }
  107. if (event.isCtrlKey()) {
  108. modifiers += "ctrl ";
  109. }
  110. if (event.isShiftKey()) {
  111. modifiers += "shift ";
  112. }
  113. if (!"".equals(modifiers)) {
  114. modifiers = " (" + modifiers.trim() + ")";
  115. }
  116. log.log(type + " on " + targetComponent + "/" + event.getItemId()
  117. + modifiers);
  118. }
  119. private static HorizontalLayout createHorizontalLayout(Component c) {
  120. HorizontalLayout layout = new HorizontalLayout();
  121. CheckBox b = new CheckBox("immediate", new MethodProperty<Boolean>(c,
  122. "immediate"));
  123. b.setImmediate(true);
  124. layout.addComponent(b);
  125. b = new CheckBox("selectable", new MethodProperty<Boolean>(c,
  126. "selectable"));
  127. b.setImmediate(true);
  128. layout.addComponent(b);
  129. b = new CheckBox("nullsel", new MethodProperty<Boolean>(c,
  130. "nullSelectionAllowed"));
  131. b.setImmediate(true);
  132. layout.addComponent(b);
  133. b = new CheckBox("multi", new MethodProperty<Boolean>(c, "multiSelect"));
  134. b.setImmediate(true);
  135. layout.addComponent(b);
  136. return layout;
  137. }
  138. @Override
  139. protected String getTestDescription() {
  140. return "Click events should always come trough no matter how the table is configured.";
  141. }
  142. @Override
  143. protected Integer getTicketNumber() {
  144. return 5458;
  145. }
  146. }