3.10.7. Action Menu Item

Ein Action Menu Item ist ein Menu Item, welches beim Anklicken ein Action Event auslöst. Die folgende Abbildung zeigt ein Menu mit zwei Action Menu Items:

Abbildung 23. Action Menu Item Beispiel

Action Menu Item Beispiel

Neben denen von IMenuItem, Item und IWidget geerbten Methoden hat die Schnittstelle IActionMenuItem die folgenden weiteren Funktionen:

Menu Model

Mit Hilfe der folgenden Methoden kann das Model gesetzt und ausgelesen werden. Siehe auch Menü und Item Models.

    void setModel(IActionItemModel model);
    
    IActionItemModel getModel();
Action Events

Mit Hilfe der folgenden Methoden kann man sich als Listener registrieren, um Action Events zu erhalten:

    void addActionListener(IActionListener actionListener);

    void removeActionListener(IActionListener actionListener);

Ein IActionListener hat die folgende Methode:

    void actionPerformed();

Diese wird aufgerufen, wenn das Item die Aktion ausführen soll, zum Beispiel durch Anklicken oder die Verwendung eines Tastaturkürzels. Anmerkung: Dies wird als Action Event bezeichnet, auch wenn der IActionListener kein explizites Event Objekt übergeben bekommt.

Action Binding

Mit der folgenden Methode kann eine IAction an das Item gebunden werden:

    void setAction(IAction action);

Weitere Details finden sich im Abschnitt Actions und Commands

Tastaturkürzel

Mit Hilfe der folgenden Methode kann das Tastaturkürzel (Key Accelerator) festgelegt werden, mit welchem die Aktion (ohne Maus) ausgeführt werden soll:

    void setAccelerator(Accelerator accelerator);

Ist das zugehörige Item in einem Main Menu eines aktiven Frames, wird das Tastaturkürzel automatisch ausgewertet und ein Action Event gefeuert, wenn die entsprechende Tastenkombination gedrückt wird.

Bei Action Items in Popup Menüs ist das nicht der Fall. Dort muss man sich, z.B. mit Hilfe eines KeyListener, selbst um das Auslösen der Aktionen kümmern. Die Utility Klasse MenuModelKeyBinding kann dabei unterstützen.

Action Item BluePrint

Ein Action Item kann (u.A.) mit Hilfe eines IActionMenuItemBluePrint erzeugt werden. Die Klasse BPF liefert die folgenden Methoden für die Erzeugung eines BluePrint:

    public static IActionMenuItemBluePrint menuItem() {...}

    public static IActionMenuItemBluePrint menuItem(final String text) {...}

Die zweite Methode ermöglicht das gleichzeitige setzen des Label Textes auf dem BluePrint bei der Erzeugung.

Ein IActionMenuItemBluePrint hat die folgenden Methoden zur Konfiguration:

    IActionMenuItemBluePrint setText(String text);

    IActionMenuItemBluePrint setToolTipText(String toolTipText);

    IActionMenuItemBluePrint setIcon(IImageConstant icon);
    
    IActionMenuItemBluePrint setMnemonic(Character mnemonic);
    
    IActionMenuItemBluePrint setAccelerator(Accelerator accelerator);

Diese können analog zu den Methoden der Schnittstelle IActionMenuItem verwendet werden.

Das folgende Beispiel demonstriert die Verwendung von Action Menu Items:

  1      final IActionMenuItemBluePrint copyItemBp = BPF.menuItem();
  2      copyItemBp
  3          .setText("Copy")
  4          .setToolTipText("Copies the selection into the clipboard")
  5          .setIcon(IconsSmall.COPY)
  6          .setAccelerator(new Accelerator(VirtualKey.C, Modifier.CTRL));
  7          
  8      final IActionMenuItem copyItem = editMenu.addItem(copyItemBp);
  9      copyItem.addActionListener(new IActionListener() {
 10          @Override
 11          public void actionPerformed() {
 12              System.out.println("Perform copy");
 13          }
 14      });
 15  
 16      final IActionMenuItemBluePrint pasteItemBp = BPF.menuItem();
 17      pasteItemBp
 18          .setText("Paste")
 19          .setToolTipText("Pastes the clipboard into the selection")
 20          .setIcon(IconsSmall.PASTE)
 21          .setAccelerator(new Accelerator(VirtualKey.V, Modifier.CTRL));
 22          
 23      final IActionMenuItem pasteItem = editMenu.addItem(pasteItemBp);
 24      pasteItem.addActionListener(new IActionListener() {
 25          @Override
 26          public void actionPerformed() {
 27              System.out.println("Perform paste");
 28          }
 29      });

Bemerkung: Für größeren Anwendungen wird anstatt der obigen Vorgehensweise die Verwendung von Actions empfohlen.


Siehe auch PDF Version dieses Dokuments, Jowidgets API Spezifikation