Ein Menu Bar Model ist ein Model für eine
Menu Bar. Es folgt eine
Beschreibung der wichtigsten Methoden der Schnittstelle
IMenuBarModel
:
Mit Hilfe der folgenden Methoden können bereits existierende Menu Models hinzugefügt werden:
void addMenu(IMenuModel menu); void addMenu(int index, IMenuModel menu);
Mit den folgenden Methoden lassen sich Menus mit Hilfe von Menu Model Buildern hinzufügen:
IMenuModel addMenu(IMenuModelBuilder menuBuilder); IMenuModel addMenu(int index, IMenuModelBuilder menuBuilder);
Dabei wird beim Hinzufügen die build()
Methode aufgerufen, das gebaute Menu Model hinzugefügt und
zurückgegeben. Damit können zum Beispiel Konstrukte der
folgenden Art realisiert werden:
1 final IMenuModel menu1 = menuBar.addMenu( 2 MenuModel 3 .builder() 4 .setId(MENU_1_ID) 5 .setText("Menu1") 6 .setMnemonic('1')); 7 8 final IMenuModel menu2 = menuBar.addMenu( 9 MenuModel 10 .builder() 11 .setId(MENU_2_ID) 12 .setText("Menu2") 13 .setMnemonic('2'));
Die folgenden Methoden erlauben das erstellen und Hinzufügen von Menüs mit einem Aufruf:
IMenuModel addMenu(); IMenuModel addMenu(String text);
Dabei wird ein neues Menu Model erzeugt, hinzugefügt und zurückgegeben. Das folgende Beispiel demonstriert die Verwendung:
1 final IMenuModel menu1 = menuBar.addMenu("Menu1"); 2 final IMenuModel menu2 = menuBar.addMenu("Menu2"); 3 final IMenuModel menu3 = menuBar.addMenu("Menu3");
Die folgenden Methoden können verwendet werden, um ein Item an eine bestimmte Stelle in einer Menu Bar hinzuzufügen:
void addBefore(IMenuModel newMenu, String id); void addAfter(IMenuModel newMenu, String id);
Der id
gibt dabei das Menu an, bezüglich
welcher das neue Menü hinzugefügt werden soll. Ist dieses
nicht vorhanden, wird eine
IllegalArgumentException
geworfen. Mittels
der Methode findMenuById(String id)
kann
vorab überprüft werden, ob ein solches Menü vorhanden ist.
Die Verwendung soll anhand eines Beispiels demonstriert werden. Der folgende Code erzeugt eine Menu Bar mit drei Menüs wobei das letzte ein Hilfe Menu mit fester id ist:
1 final IMenuModel menu1 = menuBar.addMenu("Menu1"); 2 final IMenuModel menu2 = menuBar.addMenu("Menu2"); 3 4 IMenuModel helpMenu = menuBar.addMenu( 5 MenuModel 6 .builder() 7 .setId(HELP_MENU_ID) 8 .setText("Help"));
An einer anderen Stelle könnte man eine Contribution zur Menu Bar wie folgt machen:
1 final IMenuModel customMenu = new MenuModel("Custom menu"); 2 menuBar.addBefore(customMenu, HELP_MENU_ID);
Die folgende Abbildung zeigt das Ergebnis:
Mit Hilfe der folgenden Methode werden alle Menüs der übergebenen Menu Bar hinzugefügt:
void addMenusOfModel(IMenuBarModel model);
Dabei wird eine Referenz der Items hinzugefügt und keine Kopie!
Mit Hilfe der folgenden Methoden können Menüs aus einer Menu Bar entfernt werden:
void removeMenu(final IMenuModel item); void removeMenu(int index); void removeAllMenus();
Um sich über das Hinzufügen oder Entfernen von Menüs
informieren zu lassen, kann ein
IListModelListener
verwendet werden:
void addListModelListener(IListModelListener listener); void removeListModelListener(IListModelListener listener);
Dieser hat die folgenden Methoden:
void afterChildAdded(int index); void beforeChildRemove(int index); void afterChildRemoved(int index);
Die folgende Methode liefert eine nicht modifizierbare Kopie der aktuell vorhandenen Menüs der Menu Bar.
List<IMenuModel> getMenus();
Um ein Menu Anhand einer id zu finden, kann die folgende Methode verwendet werden:
IMenuModel findMenuById(String id);
Existiert kein solches Menü in der Menu Bar, wird null zurückgegeben.
Mit Hilfe der folgenden Methode kann eine Kopie (Deep Copy) einer Menu Bar erzeugt werden. Die Kopie hat dabei die gleichen Menüs wie das Original (jedoch nicht die Selben). Registrierte Listener werden nicht mitkopiert. Dadurch sind bereits gebundene Items nicht an die Kopie gebunden.
IMenuBarModel createCopy();
Die Klasse
org.jowidgets.tools.model.item.MenuBarModel
liefert eine Implementierung der
IMenuBarModel
Schnittstelle. Eine neu
Instanz kann entweder mittels new
wie folgt
erzeugt werden:
IMenuBarModel menuBar = new MenuBarModel();
oder man verwendet die statische create()
Methode:
IMenuBarModel menuBar = MenuBarModel.create()
Man kann eine Instanz aber auch direkt von einem Frame mittels
IMenuBarModel getMenuBarModel();
oder von einer Menu Bar mittels
IMenuBarModel getModel();
erhalten.
Um ein existierendes Menu Bar Model auf einem Frame zu setzen, kann die folgende Methode verwendet werden:
void setMenuBar(IMenuBarModel model);