1 18 package org.columba.core.scripting.extensions; 19 20 import java.util.Enumeration ; 21 import java.util.Iterator ; 22 import java.util.LinkedList ; 23 import java.util.List ; 24 import java.util.Map ; 25 import java.util.TreeMap ; 26 import java.util.Vector ; 27 28 29 32 public class ExtensionEventBus 33 { 34 35 36 private static ExtensionEventBus self = null; 37 private Map eventMap = null; 38 39 private ExtensionEventBus() 40 { 41 eventMap = new TreeMap (); 42 } 43 44 public static ExtensionEventBus getInstance() 45 { 46 if (self == null) 47 self = new ExtensionEventBus(); 48 49 return self; 50 } 51 52 public void registerEvent(String eventId) 53 { 54 if (!eventMap.containsKey(eventId)) 55 eventMap.put(eventId,new LinkedList ()); 56 57 } 58 59 public void unregisterEvent(String eventId) 60 { 61 eventMap.remove(eventId); 62 } 63 64 public void registerListener(ExtensionEventListener listener, String eventId) 65 { 66 67 registerEvent(eventId); 68 List listeners = getListeners(eventId); 69 if (listeners == null || listeners.contains(listener)) 70 return; 71 72 listeners.add(listener); 73 74 } 75 76 public void unregisterListener(ExtensionEventListener listener,String eventId) 77 { 78 List listeners = getListeners(eventId); 79 if (listeners == null) 80 return; 81 82 listeners.remove(listener); 83 84 } 85 86 public List getListeners(String eventId) 87 { 88 return (List )eventMap.get(eventId); 89 } 90 91 public Enumeration enumAvailableEvents() 92 { 93 return (new Vector (eventMap.keySet()).elements()); 94 } 95 96 public void fireEvent(ExtensionEvent event) 97 { 98 99 List listeners = getListeners(event.getEventId()); 100 if (listeners == null) 101 return ; 102 103 for(Iterator it = listeners.iterator();it.hasNext();) 104 ((ExtensionEventListener)it.next()).eventFired(event); 105 106 } 107 } 108 | Popular Tags |