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.

ListenerOrder.java 5.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165
  1. package com.vaadin.tests;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import com.vaadin.ui.Button;
  5. import com.vaadin.ui.Button.ClickEvent;
  6. import com.vaadin.ui.Label;
  7. import com.vaadin.ui.LegacyWindow;
  8. import com.vaadin.v7.data.Container.ItemSetChangeEvent;
  9. import com.vaadin.v7.data.Container.ItemSetChangeListener;
  10. import com.vaadin.v7.data.Container.PropertySetChangeEvent;
  11. import com.vaadin.v7.data.Container.PropertySetChangeListener;
  12. import com.vaadin.v7.data.Item;
  13. import com.vaadin.v7.data.Property.ValueChangeEvent;
  14. import com.vaadin.v7.data.Property.ValueChangeListener;
  15. import com.vaadin.v7.ui.Select;
  16. public class ListenerOrder extends com.vaadin.server.LegacyApplication
  17. implements Button.ClickListener, PropertySetChangeListener,
  18. ItemSetChangeListener, ValueChangeListener {
  19. Button b1;
  20. Select s1;
  21. Map<String, Integer> buttonListeners = new HashMap<>();
  22. @Override
  23. public void init() {
  24. createNewView();
  25. }
  26. public void createNewView() {
  27. final LegacyWindow main = new LegacyWindow("Test window");
  28. setMainWindow(main);
  29. main.removeAllComponents();
  30. main.addComponent(new Label("Testing multiple listeners."));
  31. //
  32. // Button listeners
  33. //
  34. b1 = new Button("Button 1");
  35. main.addComponent(b1);
  36. MyClickListener mutualListener = new MyClickListener("mutual1");
  37. addListeners(b1, 1);
  38. b1.addClickListener(mutualListener);
  39. b1.addClickListener(mutualListener);
  40. b1.addClickListener(this);
  41. b1.addClickListener(mutualListener);
  42. Button.ClickListener b1Listener = addListeners(b1, 3);
  43. b1.addClickListener(mutualListener);
  44. b1.addClickListener(this);
  45. // b1.addListener((ValueChangeListener) this);
  46. b1.addClickListener(mutualListener);
  47. b1.removeClickListener(b1Listener);
  48. // remove non-existing listener
  49. b1.removeClickListener(event -> {
  50. });
  51. //
  52. // Select listeners
  53. //
  54. s1 = new Select("Select 1");
  55. main.addComponent(s1);
  56. s1.setImmediate(true);
  57. s1.setNewItemsAllowed(true);
  58. s1.addItem("first");
  59. s1.addItem("first");
  60. s1.addItem("first");
  61. s1.addItem("second");
  62. s1.addItem("third");
  63. s1.addItem("fourth");
  64. s1.addListener((ValueChangeListener) this);
  65. s1.addListener((PropertySetChangeListener) this);
  66. s1.addListener((ItemSetChangeListener) this);
  67. s1.addListener((ItemSetChangeListener) this);
  68. s1.addListener((PropertySetChangeListener) this);
  69. s1.addListener((PropertySetChangeListener) this);
  70. s1.addListener((ItemSetChangeListener) this);
  71. s1.addListener((ValueChangeListener) this);
  72. s1.addListener((ValueChangeListener) this);
  73. Item i = s1.getItem("second");
  74. for (Object id : i.getItemPropertyIds()) {
  75. System.out.println("[" + id + "]");
  76. }
  77. }
  78. private Button.ClickListener addListeners(Button b, int count) {
  79. String name = b.getCaption();
  80. // System.out.println("Adding listener for " + name);
  81. Button.ClickListener listener = null;
  82. for (int i = 0; i < count; i++) {
  83. listener = new MyClickListener(name);
  84. b.addClickListener(listener);
  85. }
  86. // return last listener added
  87. return listener;
  88. }
  89. @Override
  90. public void buttonClick(ClickEvent event) {
  91. System.out.println("ClickEvent from Test1");
  92. s1.addItem("new item " + System.currentTimeMillis());
  93. }
  94. public class MyClickListener implements Button.ClickListener {
  95. String name = "";
  96. int count = 0;
  97. public MyClickListener(String name) {
  98. Integer count = null;
  99. try {
  100. count = buttonListeners.get(name);
  101. count = new Integer(count.intValue() + 1);
  102. buttonListeners.put(name, count);
  103. } catch (Exception e) {
  104. count = new Integer(1);
  105. buttonListeners.put(name, count);
  106. }
  107. this.name = name;
  108. this.count = count.intValue();
  109. System.out.println("Created listener " + name + ", id=" + count);
  110. }
  111. @Override
  112. public void buttonClick(ClickEvent event) {
  113. String msg = "ClickEvent from MyClickListener " + name + ", id="
  114. + count;
  115. System.out.println(msg);
  116. getMainWindow().showNotification(msg);
  117. }
  118. }
  119. @Override
  120. public void containerPropertySetChange(PropertySetChangeEvent event) {
  121. String msg = "containerPropertySetChange from " + this;
  122. System.out.println(msg);
  123. getMainWindow().showNotification(msg);
  124. }
  125. @Override
  126. public void containerItemSetChange(ItemSetChangeEvent event) {
  127. String msg = "containerItemSetChange from " + this;
  128. System.out.println(msg);
  129. getMainWindow().showNotification(msg);
  130. }
  131. @Override
  132. public void valueChange(ValueChangeEvent event) {
  133. String msg = "valueChange from " + this;
  134. System.out.println(msg);
  135. getMainWindow().showNotification(msg);
  136. }
  137. }