5.3.9 Layouts im Statechart-Fenster editieren

Im Statechart-Fenster werden auch einige spezielle Möglichkeiten der Editierung von Layouts angeboten. Es geht dabei nicht um die direkte Editierung einzelner GUI-Elemente, sondern um das Kopieren, Überschreiben, Löschen und Mischen von gesamten Layouts.

Zustände, die ein Layout besitzen, zeigen dies durch ein Symbol an ihrem unteren Rand an (vgl. Abb. 5.20). Es ist das Layout-Symbol, das Sie bereits vom Tab des Layout-Fensters her kennen. Manchmal ist es notwendig, bei sehr kleinen Zuständen, diese ein wenig zu vergrößern, damit das Symbol genug Platz bekommt, um angezeigt werden zu können.

Figure 5.20: Zustand mit Layout-Symbol
 
layout_icon.png

Dieses Layout-Symbol repräsentiert das Layout des zugehörigen Zustands und lässt sich selektieren. Im selektierten Zustand kann das Layout durch einfaches Drücken der ENTF-Taste gelöscht werden. Das Layout-Symbol verschwindet daraufhin ebenfalls. Diese Löschoperation wird auch im Kontextmenü des Layout-Symbols angeboten.

Figure 5.21: Ein Layout in einen Zustand ohne Layout kopieren
 
copy_layout.png

Desweiteren lässt sich das Symbol mithilfe des Drag&Drop-Verfahrens auf andere Zustände ziehen. Wenn der Zustand, der Ziel dieser Operation ist, noch kein Layout besitzt, so erhält er eine Kopie des Layouts, das dorthin gezogen wurde (Abb. 5.21). Geerbte GUI-Elemente sind von dieser Operation nicht direkt betroffen. Es werden also nicht etwa geerbte GUI-Elemente plötzlich mit verschoben, sondern lediglich die in diesem Layout neu erstellten GUI-Elemente. Allerdings werden Veränderungen an geerbten GUI-Elementen, die in diesem Layout vorgenommen wurden, durchaus mit übertragen. Sollte also der Zielzustand geerbte GUI-Elemente mit dem Ausgangszustand der Operation teilen, so werden diese in der gleichen Art und Weise verändert.

Besitzt der Zielzustand jedoch bereits ein Layout, so wird dieses mit dem dort hingezogenen gemischt, um das neue Layout des Zielzustands zu erhalten (Abb. 5.22). Bei dieser Mischoperation werden alle GUI-Elemente aus beiden Layouts vereinigt, indem die GUI-Elemente des dorthin bewegten Layouts über die des ursprünglichen Layouts gelegt werden. Alle Veränderungen, die beide Layouts an ihren geerbten GUI-Elementen vorgenommen haben, werden ebenfalls vereinigt.

Figure 5.22: Ein Layout mit einem anderen Layout mischen
 
merge_layout.png

Hierbei kann es allerdings zu Konflikten kommen. Ein Konflikt liegt dann vor, wenn beide Layouts ein gemeinsam geerbtes GUI-Element besitzen, und beide dieselbe Eigenschaft dieses GUI-Elements in unterschiedlicher Weise modifiziert haben. Konflikte sind also Unvereinbarkeiten zweier Layouts, die ein einfaches Mischen verhindern.

Figure 5.23: Dialog zur Auflösung von Konflikten
 
conflicts.png

Diese Konflikte werden vor dem Ausführen der Mischoperation erkannt und in einem Dialog angezeigt (siehe Abb. 5.23). In diesem Dialog kann nun bestimmt werden, wie jeder dieser einzelnen Konflikte aufgelöst werden soll. Dort wird zum einen die Möglichkeit angeboten, die Änderung der Eigenschaft aus dem ursprünglichen Layout beizubehalten, oder diese mit der Änderung aus dem anderen Layout zu überschreiben. Dabei wird jeder Konflikt mit dem Typen-Symbol des betroffenen GUI-Elements, gefolgt von dessen Namen und der Eigenschaft, an der der Konflikt vorliegt, in einer Liste angezeigt. In dieser Liste lassen sich dann die Konflikte auswählen, für die ein Überschreiben der betroffenen Änderung stattfinden soll. Alle nicht ausgewählten Änderungen bleiben in ihrer ursprünglichen Form erhalten.

Es wird Ihnen in diesem Dialog auch die Möglichkeit angeboten, die Mischoperation abzubrechen. Falls Sie also nicht mit Konflikten gerechnet und es sich daraufhin nochmal anders überlegt haben, ist dies kein Problem. Zumal sich sowieso, egal was Sie auch tun, jederzeit jede beliebige Operation zurücknehmen lässt.

Wenn Sie jetzt aber gar nicht vorhaben, die Layouts zu mischen, sondern eigentlich das Layout im Zielzustand ersetzen bzw. überschreiben wollen, dann ist dies ebenfalls möglich. Sie müssen dazu nicht extra das Layout im Zielzustand löschen und anschließend das gewünschte Layout dorthin ziehen, sondern halten Sie einfach, während Sie die Drag&Drop-Aktion ausführen, die STRG-Taste gedrückt. Jetzt wird das ausgewählte Layout jedes eventuell im Zielzustand bereits vorhandene Layout ersetzen (siehe Abb. 5.24).

Figure 5.24: Ein Layout mit einem anderen Layout überschreiben
 
override_layout.png

Übrigens können Sie das Layout-Symbol auch zum Öffnen des entsprechenden Layouts nutzen. Dazu müssen Sie einfach auf das Symbol einen Doppelklick ausführen und schon wird das Layout in das Layout-Fentster geladen. Das Layout-Fenster wird dabei zum aktiven Fenster im Editor. Mehr zum Layout-Fenster erfahren Sie in Abschnitt 5.3.1.


i3D. Hannwacker - A. Gebel - M. Dürksen