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.