/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.web.organizer.events;
import com.web.organizer.events.BaseEvent.EventType;
import java.util.EnumMap;
import java.util.HashSet;
import java.util.Set;
/**
*
* @author Gery
*/
public class EventBus {
EnumMap<EventType, Set<EventListener>> subscribers;
public EventBus() {
// All event types start with empty subscribers list.
subscribers = new EnumMap<EventType, Set<EventListener>>(EventType.class);
for( EventType eventType : EventType.values()) {
subscribers.put(eventType, new HashSet<EventListener>());
}
}
public void addListener(EventType eventType, EventListener listener) {
subscribers.get(eventType).add(listener);
}
public void fireEvent(BaseEvent event) {
// Get appropriate listeners.
EventType eventType = event.getEventType();
Set<EventListener> listeners = subscribers.get(eventType);
// Activate each listener
for( EventListener listener : listeners) {
listener.actionPerformed(event);
}
// Fire also ANY_EVENT
listeners = subscribers.get(EventType.ANY_EVENT);
// Activate each listener
for( EventListener listener : listeners) {
listener.actionPerformed(event);
}
}
}