prev up next

Previous: Plugins und Plugin-Registry Up: Implementation Next: down routing

Handler

Bei der Instanziierung der Laufzeitumgebung wird für jede Klasse aus der Szenengraphklassenhierarchie die Events erzeugen kann, ein Handler instanziiert (d.h. für die Klasse Group ein GroupHandler usw.), der zwei Aufgaben erfüllt. Einerseits implementiert er die für seine Knotenklasse spezifischen Eventverarbeitungsmethoden (z.B. implementiert der GroupHandler die Methode handleAddChild in der für die Klasse Group spezifischen Weise) und stellt damit im Grunde genommen das eigentliche Plugin für alle Events dar, die eine Klasse aus der Szenengraphhierarchie auslösen kann. Andererseits sorgt er dafür, daß diese Methoden auch aufgerufen werden, wenn ein entsprechendes Event ausgelöst wird. Dazu registriert er bei der Laufzeitumgebung für jeden Eventtyp eine Instanz der Klasse PluginMapper, die das Interface Plugin implementiert. Im PluginMapper wird bei der Instanziierung (mit Hilfe des java.lang.reflect-Paketes) festgelegt, welche Methode beim Handler aufrufen werden soll, wenn der PluginMapper von der Laufzeitumgebung den Aufrag bekommt, ein bestimmtes Event zu verarbeiten. Viele Events haben nur Auswirkungen auf den auslösenden Knoten (z.B. setMaterialColor). Events dieser Art können vom Handler alleine bearbeitet werden.


Eventhandling durch die Laufzeitumgebung. 1.: Ein Event wird im Szenengraphen ausgelöst und in die Event-Queue gestellt. 2.: Der Scheduler holt das Event ab und verschafft sich (3.) den PluginMapper, der weiß, welche Methode bei welchem Handler aufgerufen werden muß, um dieses Event zu verarbeiten. 4.: Der Scheduler ruft die Methode execute beim PluginMapper auf und dieser bildet den Aufruf (5.) auf den speziellen Aufruf beim Grouphandler ab.


prev up next
Previous: Plugins und Plugin-Registry Up: Implementation Next: down routing