package ninja.ugly.prevail.event.dispatcher; import java.util.ArrayList; import java.util.Collection; /** * A composite class of multiple EventDispatchers. * <p> * Chunks only dispatch to a single EventDispatcher, whilst this is likely to cover * most simple use cases, there may be occasions when multiple EventDispatchers are required. * In such cases, those EventDispatchers can be added to this composite. */ public class CompositeEventDispatcher implements EventDispatcher { private Collection<EventDispatcher> mEventDispatchers = new ArrayList<EventDispatcher>(); /** * Add an EventDispatcher to this composite. */ public void addEventDispatcher(EventDispatcher eventDispatcher) { mEventDispatchers.add(eventDispatcher); } @Override public void dispatchEvent(final Object event) { for (EventDispatcher eventDispatcher : mEventDispatchers) { eventDispatcher.dispatchEvent(event); } } @Override public void register(final Object subscriber) { for (EventDispatcher eventDispatcher : mEventDispatchers) { eventDispatcher.register(subscriber); } } @Override public void unregister(final Object subscriber) { for (EventDispatcher eventDispatcher : mEventDispatchers) { eventDispatcher.unregister(subscriber); } } }