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.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. package com.vaadin.tests;
  2. import java.util.HashMap;
  3. import java.util.Iterator;
  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. HashMap<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(new Button.ClickListener() {
  50. @Override
  51. public void buttonClick(ClickEvent event) {
  52. }
  53. });
  54. //
  55. // Select listeners
  56. //
  57. s1 = new Select("Select 1");
  58. main.addComponent(s1);
  59. s1.setImmediate(true);
  60. s1.setNewItemsAllowed(true);
  61. s1.addItem("first");
  62. s1.addItem("first");
  63. s1.addItem("first");
  64. s1.addItem("second");
  65. s1.addItem("third");
  66. s1.addItem("fourth");
  67. s1.addListener((ValueChangeListener) this);
  68. s1.addListener((PropertySetChangeListener) this);
  69. s1.addListener((ItemSetChangeListener) this);
  70. s1.addListener((ItemSetChangeListener) this);
  71. s1.addListener((PropertySetChangeListener) this);
  72. s1.addListener((PropertySetChangeListener) this);
  73. s1.addListener((ItemSetChangeListener) this);
  74. s1.addListener((ValueChangeListener) this);
  75. s1.addListener((ValueChangeListener) this);
  76. Item i = s1.getItem("second");
  77. for (Iterator<?> it = i.getItemPropertyIds().iterator(); it
  78. .hasNext();) {
  79. Object o = it.next();
  80. System.out.println("[" + o + "]");
  81. }
  82. }
  83. private Button.ClickListener addListeners(Button b, int count) {
  84. String name = b.getCaption();
  85. // System.out.println("Adding listener for " + name);
  86. Button.ClickListener listener = null;
  87. for (int i = 0; i < count; i++) {
  88. listener = new MyClickListener(name);
  89. b.addClickListener(listener);
  90. }
  91. // return last listener added
  92. return listener;
  93. }
  94. @Override
  95. public void buttonClick(ClickEvent event) {
  96. System.out.println("ClickEvent from Test1");
  97. s1.addItem("new item " + System.currentTimeMillis());
  98. }
  99. public class MyClickListener implements Button.ClickListener {
  100. String name = "";
  101. int count = 0;
  102. public MyClickListener(String name) {
  103. Integer count = null;
  104. try {
  105. count = buttonListeners.get(name);
  106. count = new Integer(count.intValue() + 1);
  107. buttonListeners.put(name, count);
  108. } catch (Exception e) {
  109. count = new Integer(1);
  110. buttonListeners.put(name, count);
  111. }
  112. this.name = name;
  113. this.count = count.intValue();
  114. System.out.println("Created listener " + name + ", id=" + count);
  115. }
  116. @Override
  117. public void buttonClick(ClickEvent event) {
  118. String msg = "ClickEvent from MyClickListener " + name + ", id="
  119. + count;
  120. System.out.println(msg);
  121. getMainWindow().showNotification(msg);
  122. }
  123. }
  124. @Override
  125. public void containerPropertySetChange(PropertySetChangeEvent event) {
  126. String msg = "containerPropertySetChange from " + this;
  127. System.out.println(msg);
  128. getMainWindow().showNotification(msg);
  129. }
  130. @Override
  131. public void containerItemSetChange(ItemSetChangeEvent event) {
  132. String msg = "containerItemSetChange from " + this;
  133. System.out.println(msg);
  134. getMainWindow().showNotification(msg);
  135. }
  136. @Override
  137. public void valueChange(ValueChangeEvent event) {
  138. String msg = "valueChange from " + this;
  139. System.out.println(msg);
  140. getMainWindow().showNotification(msg);
  141. }
  142. }