Changeset 4
- Timestamp:
- 06/17/05 16:48:58 (4 years ago)
- Files:
-
- trunk/src/net/schst/EventDispatcher/EventDispatcher.java (modified) (3 diffs)
- trunk/src/net/schst/EventDispatcher/EventListenerCollection.java (modified) (2 diffs)
- trunk/src/net/schst/EventDispatcher/EventListenerContainer.java (added)
- trunk/src/net/schst/EventDispatcher/Examples/ExampleAutoRemove.java (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/src/net/schst/EventDispatcher/EventDispatcher.java
r3 r4 77 77 */ 78 78 public void addListener(String eventName, EventListener listener, boolean autoRemove) { 79 // TODO implement autoRemove80 81 79 if (!this.listeners.containsKey(eventName)) { 82 80 this.listeners.put(eventName, new EventListenerCollection()); 83 81 } 84 82 EventListenerCollection col = (EventListenerCollection)this.listeners.get(eventName); 85 col.addListener(listener );83 col.addListener(listener, autoRemove); 86 84 87 85 // check the event queue … … 114 112 // TODO implement autoRemove 115 113 116 this.globalListeners.addListener(listener );114 this.globalListeners.addListener(listener, autoRemove); 117 115 118 116 // check the event queue … … 124 122 } 125 123 } 126 124 127 125 /** 128 126 * Trigger an event, if you already created an event object trunk/src/net/schst/EventDispatcher/EventListenerCollection.java
r1 r4 2 2 3 3 import java.util.ArrayList; 4 import java.util.Iterator; 4 5 5 6 /** … … 10 11 public class EventListenerCollection { 11 12 13 /** 14 * All event listeners 15 */ 12 16 private ArrayList listeners = new ArrayList(); 13 17 14 public int addListener(EventListener listener) { 15 this.listeners.add(listener); 18 /** 19 * Add a new event listener to the collection 20 * 21 * @param listener Listener to add 22 * @return amount of event listeners in this collection 23 */ 24 public int addListener(EventListener listener, boolean autoRemove) { 25 26 EventListenerContainer container = new EventListenerContainer(listener); 27 container.enableAutoRemove(autoRemove); 28 29 this.listeners.add(container); 16 30 return this.listeners.size(); 17 31 } 18 32 33 /** 34 * Propagate an event to all listeners in this collection 35 * 36 * @param e event to propagate 37 * @return event 38 */ 19 39 public Event propagate(Event e) { 40 ArrayList remove = new ArrayList(); 20 41 for (int i = 0; i < this.listeners.size(); i++) { 21 EventListener listener = (EventListener)this.listeners.get(i); 22 listener.handleEvent(e); 42 EventListenerContainer container = (EventListenerContainer)this.listeners.get(i); 43 container.getListener().handleEvent(e); 44 45 // remove the listener 46 if (container.autoRemoveEnabled()) { 47 remove.add(new Integer(i)); 48 } 23 49 if (e.isCancelled()) { 24 50 break; 25 51 } 26 52 } 53 // remove the listeners that have been set to autoRemove 54 for (Iterator iter = remove.iterator(); iter.hasNext();) { 55 Integer index = (Integer) iter.next(); 56 this.removeListener(index); 57 } 27 58 return e; 28 59 } 60 61 /** 62 * Remove a listener from the list 63 * 64 * @param i 65 * @return 66 */ 67 public EventListenerContainer removeListener(Integer i) { 68 return (EventListenerContainer)this.listeners.remove(i.intValue()); 69 } 70 29 71 }
