Communardo Software GmbH, Kleiststraße 10 a, D-01129 Dresden
+49 (0) 351/850 33-0

Robotlegs – Ein Blick unter die Haube – Teil 2

Im ersten Teil der Blogreihe bin ich bereits auf das Robotlegs Framework sowie die Verwendung der Kontext – Klasse eingegangen. Dieser Blogpost beleuchtet die Funktion der Mediatoren und deren View-Komponenten.

Ein Mediator gehört immer zu genau einer View-Komponente. Er stellt die Steuereinheit für die Komponente dar, indem er auf Events oder in meinem Fall, ausgesendete Signale der Komponente hört und weiterführende Schritte einleitet. Dabei können weitere Informationen über den Zustand der Komponente gesammelt werden um daraus  Berechnungen vorzunehmen oder Signale zu „Dispatchen“. Die im Signal enthaltenen Daten können so von weiteren Aktoren der Anwendung verwendet werden. Mediatoren können nicht nur auf Events oder Signale der View-Komponente hören, sie können auch auf Events reagieren, welche von anderen Teilen der Anwendung ausgelöst wurden um so beispielsweise Manipulationen an der View vorzunehmen.

Um nicht den Überblick über Mediatoren, Views (Komponenten) sowie Skins zu verlieren, empfiehlt sich folgende Struktur.

Eine Beispielhafte View Implementierung könnte folgendermaßen aussehen:

<MyView>
<fx:Script>
<![CDATA[ 
private function doSomething():void{
  mySignal.dispatch(data);    
}    
]]>
</fx:Script>
<s:Button id="doSomething" 
label="click"
click="doSomething(event)"/>
</MyView>

Die View-Komponente ist relativ „unspektakulär“. Sie enthält einen Button sowie einen Button-Handler, welcher lediglich ein Signal auslöst. Anders der dazugehörige Mediator:

public class ViewMediator extends Mediator
{
[Inject]
public var view:MyView;

[Inject]
public var signal:Signal;

override public function onRegister():void{
view.mySignal.add(handleSignal);
}

protected function handleSignal():void{        
doSomeWorkWithData();
signal.dispatch(data);
}
}

Dieser enthält einige wichtige Punkte. Wichtig ist zum einen, dass der Mediator von der Klasse Mediator abgeleitet werden muss. Zum anderen wird sich am [Inject] Tag bedient.

[Inject] 
public var view:MyView;

Durch das [Inject] Tag wird dem Framework mitgeteilt, die View zur Injektion bereitzustellen. Wird eine Instanz der Mediator-Klasse
erstellt steht die dazugehörige View anschließend automatisch zur Verfügung.

Die onRegister() Methode muss in jedem Mediator überschrieben werden. Sie wird aufgerufen nachdem die Injektion abgeschlossen ist und die View bereit steht. Innerhalb dieser Methode können nun Signale der View abonniert werden.  Dies geschieht durch die add Methode des Signals .

view.mySignal.add(handler...)

Damit ist die Bereitstellung der View und des Mediators abgeschlossen. Der Mediator ist zu diesem Zeitpunkt noch nicht fähig seine View zu überwachen. Um dies zu gewährleisten muss der Mediatormap, in der Kontextklasse, das Paar noch bekannt gemacht werden.

mediatorMap.mapView(MyView,ViewMediator);

Damit ist die Konfiguration für View und Mediator abgeschlossen.

Im nächsten und letzten Beitrag über Robotlegs geht es um Models, Services und Commands.

Kommentar hinterlassen


Pin It on Pinterest