Skip to content
lex-lex edited this page Jan 17, 2014 · 13 revisions

Einführung

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).

Wie man Event-Typen hinzufügt

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.

Existierende Events

...Name

Was tut es, wofür ist es da.

...Name2

Was tut es, wofür ist es da.

...Name3

Was tut es, wofür ist es da.

Clone this wiki locally