-
Notifications
You must be signed in to change notification settings - Fork 3
Events
Events sind konkrete Reaktionen auf bestimmte Ereignisse und enthalten entsprechende Kontextinformationen.
Alle Typen von Events erben von der abstrakten Klasse Event<H extends EventHandler>.
Klassen, die auf bestimmte Event-Typen reagieren wollen, implementieren das zum Event zugeordnete Interface EventHandler.
Jede Klasse, die Events abfeuern möchte, muss einen Verweis auf den EventDispatcher besitzen. Ein Singleton von diesem Dispatcher kann mittels EventDispatcher.get() eingeholt werden.
Soll ein konkretes Event e gefeuert werden, wird dies via dispatcher.fireEvent(e) erledigt.
Alle Klassen, die sich vor dem Feuern eines Events via dispatcher.addHandler(eventType, handler) registriert haben, werden die Events vom Typ eventType erhalten.
Der Event-Typ sollte, via Konvention, durch KonkretesEvent.TYPE gegeben sein (wobei KonkretesEvent eine Implementieren von Event ist).
Event-Typen werden durch Anlegen einer Event-Klasse und einer EventHandler-Klasse hinzugefügt.
Das EventHandler-Template ist
public interface ConcreteHandler
extends EventHandler
{
public void onConcreteEvent(final ConcreteEvent event);
}
Das Event-Typ-Template ist
import pointGroups.gui.event.Event;
public class ConcreteEvent
extends Event<ConcreteHandler>
{
public final static Class<ConcreteHandler> TYPE =
ConcreteHandler.class;
@Override
public final Class<ConcreteHandler> getType() {
return TYPE;
}
@Override
protected void dispatch(final ConcreteHandler handler) {
handler.onConcreteEvent(this);
}
}
wobei Concrete durch konkrete Namen ersetzt werden kann.
Was tut es, wofür ist es da.