package mage.client.util; import java.io.Serializable; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; /** * * @author BetaSteward_at_googlemail.com * @param */ public abstract class EventDispatcher implements Serializable { private final List> listeners = new CopyOnWriteArrayList<>(); public void addListener(Listener listener) { if (!listeners.contains(listener)) { listeners.add(listener); } } public void removeListener(Listener listener) { listeners.remove(listener); } public void fireEvent(E event) { for (Listener listener : listeners) { listener.event(event); } } public void clearListeners() { listeners.clear(); } }