package org.gwtoolbox.ioc.core.client.eventbus;
import com.google.gwt.event.shared.HandlerRegistration;
import com.google.gwt.event.shared.ResettableEventBus;
import com.google.gwt.event.shared.SimpleEventBus;
/**
* @author Uri Boness
*/
public class DefaultApplicationEventBus implements ApplicationEventBus {
private final ResettableEventBus eventBus;
public DefaultApplicationEventBus() {
eventBus = new ResettableEventBus(new SimpleEventBus());
}
@Override
public void fire(Object source, ApplicationEvent event) {
eventBus.fireEventFromSource(event, source);
eventBus.fireEventFromSource(new ApplicationEventFiredEvent(event), this);
}
@Override
public <H extends ApplicationEventHandler> HandlerRegistration addHandler(ApplicationEventType eventType, H handler) {
return eventBus.addHandler(eventType, handler);
}
@Override
public void dispose() throws Exception {
eventBus.removeHandlers();
}
}