1 10 package org.jgap.event; 11 12 import java.util.*; 13 import org.jgap.util.*; 14 15 26 public class EventManager 27 implements IEventManager, ICloneable { 28 29 private final static String CVS_REVISION = "$Revision: 1.7 $"; 30 31 35 private HashMap m_listeners = new HashMap(); 36 37 50 public synchronized void addEventListener(final String a_eventName, 51 final GeneticEventListener a_eventListenerToAdd) { 52 List eventListeners = (List) m_listeners.get(a_eventName); 53 if (eventListeners == null) { 54 eventListeners = new LinkedList(); 55 m_listeners.put(a_eventName, eventListeners); 56 } 57 eventListeners.add(a_eventListenerToAdd); 58 } 59 60 73 public synchronized void removeEventListener(final String a_eventName, 74 final GeneticEventListener a_eventListenerToRemove) { 75 List eventListeners = (List) m_listeners.get(a_eventName); 76 if (eventListeners != null) { 77 eventListeners.remove(a_eventListenerToRemove); 78 } 79 } 80 81 91 public synchronized void fireGeneticEvent(final GeneticEvent a_eventToFire) { 92 List eventListeners = 93 (List) m_listeners.get(a_eventToFire.getEventName()); 94 if (eventListeners != null) { 95 Iterator listenerIterator = eventListeners.iterator(); 98 while (listenerIterator.hasNext()) { 99 ( (GeneticEventListener) listenerIterator.next()). 100 geneticEventFired(a_eventToFire); 101 } 102 } 103 } 104 105 111 public int hashCode() { 112 int result = m_listeners.hashCode(); 113 return result; 114 } 115 116 122 public Object clone() { 123 EventManager result = new EventManager(); 124 if (!m_listeners .isEmpty()) { 125 result.m_listeners = (HashMap)m_listeners.clone(); 126 } 127 return result; 128 } 129 } 130 | Popular Tags |