Package com.iizix.event
Class EventMulticaster
java.lang.Object
com.iizix.event.EventMulticaster
- All Implemented Interfaces:
- EventListener
A class which implements efficient and thread-safe multicast event dispatching for generic events.
This class will manage an immutable structure consisting of a chain of event listeners and will dispatch events to those listeners. Because the structure is immutable, it is safe to use this API to add/remove listeners during the process of an event dispatch operation.
An example of how this class could be used to implement a new component which fires "action" events:
public MyComponent extends Component
   {
   EventListener listener;
   public void addPropertyValueListener(PropertyListener l)
     {
     listener=EventMulticaster.add(listener,l);
     }
   public void removePropertyListener(PropertyListener l)
     {
     listener=EventMulticaster.remove(listener,l);
     }
   public void someMethod()
     {
     // When event occurs which causes "onEvent".
     EventListener listener=this.listener;
     if ( listener!=null )
       listener.onEvent(new SomeEvent(...));
     }
   }
 - Author:
- Christopher Mindus
- Field SummaryFieldsModifier and TypeFieldDescription- protected final EventListenerThe two event listeners.- protected final EventListenerThe two event listeners.
- Constructor SummaryConstructorsModifierConstructorDescription- protectedCreates an event multicaster instance which chains listener-a with listener-b.
- Method SummaryModifier and TypeMethodDescription- static EventListener- add- (EventListener a, EventListener b) Adds listener-a with listener-b and returns the resulting multicast listener.- protected static EventListenerReturns the resulting multicast listener from adding listener-a and listener-b together.- voidCalled when the event is fired.- void- populate- (ArrayList<EventListener> listeners) Populates the array with listeners.- protected EventListener- remove- (EventListener old) Removes a listener from this multicaster and returns the resulting multicast listener.- static EventListener- remove- (EventListener l, EventListener old) Removes the old listener from listener-l and returns the resulting multicast listener.- protected static EventListener- removeInternal- (EventListener l, EventListener old) Returns the resulting multicast listener after removing the old listener from listener-l.
- Field Details- aThe two event listeners.
- bThe two event listeners.
 
- Constructor Details- EventMulticasterCreates an event multicaster instance which chains listener-a with listener-b.- Parameters:
- a- listener-a.
- b- listener-b.
 
 
- Method Details- removeRemoves a listener from this multicaster and returns the resulting multicast listener.- Parameters:
- old- the listener to be removed.
 
- populatePopulates the array with listeners.
- onEventCalled when the event is fired.- Specified by:
- onEventin interface- EventListener
- Parameters:
- event- The event.
 
- addAdds listener-a with listener-b and returns the resulting multicast listener.- Parameters:
- a- listener-a.
- b- listener-b.
 
- removeRemoves the old listener from listener-l and returns the resulting multicast listener.- Parameters:
- l- listener-l.
- old- the listener being removed.
 
- addInternalReturns the resulting multicast listener from adding listener-a and listener-b together.- If listener-a is null, it returns listener-b.
- If listener-b is null, it returns listener-a.
- If neither are null, then it creates and returns a new EventMulticaster instance which chains a with b.
 - Parameters:
- a- event-listener-a.
- b- event-listener-b.
 
- removeInternalReturns the resulting multicast listener after removing the old listener from listener-l.- If listener-l equals the old listener OR listener-l is null, returns null.
- If listener-l is an instance of EventMulticaster, then it removes the old listener from it.
- Returns listener l.
 - Parameters:
- l- the listener being removed from.
- old- the listener being removed.