1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
public class EventDispatcher
{
private LinkedHashMap<EventType<? extends Event>, ArrayList<EventHandler<? extends Event>>> _listeners;
public EventDispatcher()
{
_listeners = new LinkedHashMap<EventType<? extends Event>, ArrayList<EventHandler<? extends Event>>>(1, 1);
}
public <T extends Event> void addEventListener(EventType<T> type, EventHandler<T> listener)
{
ArrayList<EventHandler<? extends Event>> l = _listeners.get(type);
if (l == null)
{
l = new ArrayList<EventHandler<? extends Event>>(1);
_listeners.put(type, l);
}
if (!l.contains(listener)) l.add(listener);
}
public void dispatchEvent(Event event)
{
EventType<? extends Event> t = event.getEventType();
ArrayList<EventHandler<? extends Event>> l = _listeners.get(t);
if (l == null) return;
for (EventHandler<? extends Event> i : l) i.handle(event); // capture<? extends Event> cannot be applied to (Event)
}
} |
Partager