3.11. Menü und Item Models

Im Abschnitt Menus und Items wurde die native Verwendung von Menus und Menu Items in jowidgets beschrieben. Dort existiert eine Menü oder Menü Item Instanz genau ein Mal an einer Stelle. Eine Wiederverwendung auf Instanzebene ist nicht möglich[12].

Auf Klassenebene gibt es bestimmte Einschränkungen bei der Wiederverwendung. Angenommen man möchte ein Menü einer Menu Bar oder Teile davon, wie zum Beispiel ein Checked Menu Item, noch mal an einer anderen Stelle, zum Beispiel in einen Popup Menu haben, kommt man nicht umher, das gleiche Menü oder Item ein zweites mal zu erzeugen. Will man das Menü nachträglich anpassen, zum Beispiel weil ein Plugin eine Menu Contribution macht, muss man beide Instanzen nachträglich anpassen. Für das Checked Menu Item müssten beide Instanzen, z.B. über ein Presentation Model, aneinander gebunden werden.

Menu und Items Models wurden entworfen, um Menüs und Menü Items zu beschreiben bzw. deren aktuellen Zustand widerzuspiegeln. Ein solches Model (eine Instanz) kann dann an (mehrere) konkrete Items gebunden werden. Änderungen auf dem Model, wie zum Beispiel das Einfügen neuer Menü Items oder das Ändern des selected State eines Checked Menu Item, werden dann an allen Stellen synchron gehalten.

Item Models haben eine eindeutige ID. Dadurch ist es zum Beispiel möglich, Menu Contributions wie addBefore(item, idWhereToAdd) oder addAfter(item, idWhereToAdd) umzusetzen, ohne eine Referenz auf das Item (where to add) haben zu müssen [13].

Item Models haben einen visible Status. Dadurch ist es zum Beispiel möglich, einzelne Aktionen auszublenden, ohne dass das Item Model aus seinem Menü entfernt werden muss (wodurch sich die Struktur ändern würde, was im Zusammenhang mit Menü Contributions wieder zu Problemen führen könnte). Man kann für Action Items Sichbarkeitsaspekte injizieren, was u.A. im Zusammenhang mit Rechtemanagement hilfreich ist.

Item Models beschränken sich nicht ausschließlich auf Menüs. So ist es für bestimmte Items möglich, diese gleichzeitig in einer Toolbar und in einem Menu zu haben. Beispielsweise wird ein Checked Item Model in einem Menu als Checked Menu Item und in einer Toolbar als ToolBarToggleButton dargestellt. Ein Action Item Model wird in einer Toolbar mit Hilfe eines ToolBarButton und in einem Menu als Action Menu Item angezeigt. Ein Menu Model kann sowohl für ein Main Menu, ein Sub Menu als auch für ein Toolbar Menu verwendet werden.



[12] In Swt und Swing ist das auch nicht möglich!

[13] Der Label Text sollte dafür auf keinen Fall verwendet werden da dieser internationalisiert sein kann


Siehe auch PDF Version dieses Dokuments, Jowidgets API Spezifikation