Die Eigenschaften Selection und SelectionPropagation steuern das Verhalten eines Fensters bezüglich der Selektion.
Zahlreiche Befehle benötigen eine Menge von Modellelementen, auf denen sie ausgeführt werden. Ein einfaches Beispiel ist der Befehl Aus Modell löschen. Um diese Elementmenge festzulegen, wird in der Regel in einem Fenster eine Selektion vorgenommen, beispielsweise im Modellbaum oder in einem Diagramm. Da viele Fenster gleichzeitig geöffnet sein können, die eine Selektion von Modellelementen beinhalten, ergibt sich die Frage, auf welche dieser Elementmengen ein Menübandbefehl wie Aus Modell löschen angewendet wird. Es muss also einen Mechanismus geben, der eine der Selektionen als die momentan gültige festlegt. Diese Selektion wird als "globale Selektion" bezeichnet.
Die Statuszeile zeigt die globale Selektion an.
Fenster wie der Detail- und der Eigenschaftenbereich passen ihren Inhalt an die globale Selektion an
Befehle auf Modellelementen beziehen sich auf die globale Selektion.
Hinweis
Es gilt die Regel, dass das aktive Fenster die globale Selektion vorgibt.
Technisch realisiert wird die Behandlung der globalen Selektion mittels der beiden IWorkArea-Eigenschaften Selection und SelectionPropagation.
Ein Fenster, in dem eine Selektion von Modellelementen vorgenommen werden kann, sollte die beiden Eigenschaften wie folgt behandeln:
SelectionPropagation ist auf SelectionType.ContextElement zu setzen.
(Der Wert ContextElement signalisiert dem Framework, dass im Fenster Modellelemente selektiert werden können, die die globale Selektion darstellen, wenn das Fenster aktiv ist.)
Für die Eigenschaft Selection ist eine private Variable vom Typ ElementSet bereitzustellen, die über den Setter gesetzt und vom Getter geliefert wird.
(Bei einem Wechsel des aktiven Fensters aktualisiert das Framework ggf. automatisch die globale Selektion. Dazu muss es die Selektion im nun aktiven Fenster ermitteln können. Diesem Zweck dient die Eigenschaft Selection.)
Wird im Fenster die Elementselektion geändert, dann ist über den Selection-Setter die neue Selektion in die private Variable zu übertragen. Nachfolgend ist die statische Methode WorkArea.TransferSelection aufzurufen.
(Ändert sich die Selektion im aktiven Fenster, dann muss das Framework benachrichtigt werden, damit es die globale Selektion anpassen kann. Dazu wird die Methode TransferSelection aufgerufen.)
Hinweis
Zur Erzeugung eines Fensters mit Elementselektion siehe das Sample MID.Innovator.Plugin.Sample.Selection1.
Fenster wie der Detail- und der Eigenschaftenbereich passen ihren Inhalt an die globale Selektion an. Ein derartiges Fenster ist wie folgt zu implementieren:
SelectionPropagation ist auf SelectionType.None zu setzen.
(Der Wert None signalisiert dem Framework, dass im Fenster keine Modellelemente selektiert werden können und dieses damit keinen Einfluss auf die globale Selektion hat.)
Der Selection-Getter liefert null und der Setter bleibt ohne Aktion.
Eine SelectionChanged-Nachricht ist in der Methode MessageHandler so zu verarbeiten, dass der Fensterinhalt der globalen Selektion entsprechend aktualisiert wird.
(Die SelectionChanged-Nachricht wird vom Framework bei Änderung der globalen Selektion generiert und an alle Fenster gesendet.)
Hinweis
Zur Erzeugung eines Fensters mit einer Abhängigkeit von der Selektion siehe das Sample MID.Innovator.Plugin.Sample.Selection2.
Einige wenige Fenster, wie z.B. der Info-Bereich, geben weder die Selektion vor, noch hängen sie davon ab. Ein derartiges Fenster ist wie folgt zu implementieren:
SelectionPropagation ist auf SelectionType.None zu setzen.
Der Selection-Getter liefert null und der Setter bleibt ohne Aktion.
Hinweis
Zur Erzeugung eines Fensters ohne Selektionsbezug siehe das Sample MID.Innovator.Plugin.Sample.HelloToolWindow.
© 1986-2014 MID GmbH Nürnberg Deutschland. DIN EN 9001 zertifiziert. Alle Rechte vorbehalten.