Diese Ansicht wird dann von einem sogenannten Screen-Provider angezeigt, der bei der Erzeugung des GUI-Simulators übergeben werden muss. Ein Screen-Provider kapselt eine beliebig geartete Bildschirmfläche, die nur bestimmte Methoden zur Anzeige der Ansicht bereitstellen muss. Als Screen-Provider wird der Simulator-View verwendet, der zur Darstellung der jeweils aktuellen GUI-Ansicht einen Canvas bereitstellt (siehe Abb. 4.19).
Soll also eine GUI simuliert werden, so wird durch eine Generierungsmethode der Simulator-View über das zu simulierende GUI-Modell informiert, woraufhin der Anwender die Simulation im Simulator-View starten kann. Wird die Simulation gestartet, so wird der GUI-Simulator zur Simulation der vorher generierten GUI aufgefordert. Dieser setzt dann den von ihm benutzten Statechart-Simulator über das zu simulierende Statechart in Kenntnis, woraufhin der Statechart-Simulator die Anfangskonfiguration des Statecharts einnimmt und der GUI-Simulator die zugehörige GUI-Ansicht auf den Screen packt.
Wird nun ein Ereignis ausgelöst, zum Beispiel durch Manipulation eines GUI-Elements der GUI-Ansicht durch den Benutzer, so wird dieses an den GUI-Simulator geschickt, da dieser sich bei allen angezeigten GUI-Elemente, die er erzeugt hat, als Listener registriert hat und somit über alle Ereignisse informiert wird, die durch Manipulationen von diesen entstehen.
Dieses Ereignis bzw. Signal wird an den Statechart-Simulator weitergereicht, der daraufhin das Statechart auf möglicherweise zu schaltende Transitionen untersucht und eine Folgekonfiguration bestimmt, über die er den GUI-Simulator informiert. Dieser aktualisiert wenn nötig die GUI-Ansicht, indem er GUI-Elemente (Figures) erstellt, entfernt oder abändert (Abb. 4.20).
Um sich als externes Tool mit dem Simulator zu verbinden, reicht es aus, das Interface GuiSimulationListener zu implementieren und sich beim Simulator als Listener zu registrieren. Den Simulator erhält man dabei über das GuiBuilderPlugin, welches über die statische Methode getGuiSimulator die Referenz auf dem Simulator bereitstellt. Anschließend muss sich das Tool über die Methode addGuiSimulationListener registrieren. Danach wird es solange über alle Vorkomnisse im Simulator informiert, bis es sich mit removeGuiSimulationListener wieder abmeldet. Über die Methode inputSignal des GUI-Simulators ist es zudem möglich, Signale als Ereignisse an die simulierte GUI zu übermitteln.
Der Ablauf der Kommunikation zwischen dem GUI-Simulator und einem mit ihm verbundenem Tool sieht dabei wie folgt aus (siehe Abb. 4.22): Zuerst wird das verbundene Tool über den Start der Simulation informiert. Sollte sich das Tool während einer bereits laufenden Simulation zum Simulator verbinden, hat das Tool die Benachrichtigung für diese Simulation verpasst und erhält sofort Zustandsänderungen und Ausgabesignale der laufenden Simulation. Das Tool kann dann selbst entscheiden, ob es seine Funktionalität noch für die angebrochene Simulation anbieten kann. Wenn nicht, kann es bis zur Benachrichtigung über die Terminierung der Simulation warten und bei der als nächstes gestarteten Simulation von Beginn an dabei sein.
Da GuiBuilder keinerlei Wissen über die Funktionsweise der mit ihm verbundenen Tools hat, liegt es bei den Entwicklern dieser Tools bzw. dem Benutzer, dafür zu sorgen, dass die Tools rechtzeitig mit dem Simulator verbunden werden. Da nach der Generierung einer Simulation diese nicht sofort startet, sondern der Start manuell durch den Anwender erfolgen muss, bleibt genügend Zeit, noch unverbundene Tools mit dem Simulator zu verbinden.
Dass die Verbindugsaufnahme zum Simulator wirklich so reibungsfrei vonstatten geht, zeigt die von uns implementierte Fernbedienung (Remote Control), welche als externes Plug-in realisiert wurde und sich auf die beschriebene Weise mit dem Simulator verbindet (siehe Abb. 4.21).
D. Hannwacker - A. Gebel - M. Dürksen 