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 4.9KB

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