RCPActionFrameworkTable of ContentsÜbersichtAction KonfigurationDie commands-context.xml DateiDie Datei The command-context.xml ist eine Spring Context Datei und enthält die Definitionen aller global Actions, die Menubar und die Toolbar. Die visuelle SeiteJede Action benötigt eine eineindeutige ID. Diese ID wird zum laden visueller Informationen genutzt, um die Action auf dem Bildschirm zu rendern. Angenommen man besitzt einen Öffnen Command, welcher +O+ pen als Label besitzt (Mit O als mnemonic), welcher auf Ctrl-O auslöst, dann sehen die Einträge in der messages.properties Datei folgendermaßen aus: (Das caption Attribut definiert den Tooltiptext für die Action) openCommand.label=&Open@ctrl O openCommand.caption=Open the selected item(s) Beschriftung (Label) Das Label Attribut kann entweder ein Label ohne mnemonic (Open) sein, oder ein Label mit mnemonic (&Open) und einem optionalen @accelerator Eintrag. Shortcut (Accelerator key) Eine accelerator Zeichenkette muss der folgenden Syntax entsprechen: <modifiers>* (<typedID> | <pressedReleasedID>) modifiers := shift | control | ctrl | meta | alt | button1 | button2 | button3 typedID := typed <typedKey> typedKey := string of length 1 giving Unicode character. pressedReleasedID := (pressed | released) key key := KeyEvent key code name, i.e. the name following "VK_". Siehe auch KeyEvent Beispiele:
Titel (Caption) Das caption Attribut wird als Tooltip für die gerenderte Action genutzt. Icon Um ein Icon mit der Action zu verknüpfen, muss man folgenden Eintrag zur Datei images.properties hinzugefügt werden: openCommand.icon=open.gif Falls das angegebene Icon nicht gefunden werden kann, wird ein broken image indicator verwendet. Die Controller (Handler) SeiteUm eine Action zu implementieren muss man die Klasse ActionCommand ableiten und die MethodedoExecuteCommand} überschreiben. Beispiel Die Zeichenkette, welche zum Super-Konstruktor weitergeleitet wird, stellt die ID des Commands dar und wird genutzt, um nach den Labeln und Icons zu suchen.
public class RenameCommand extends ActionCommand
{
public RenameCommand()
{
super("renameCommand");
}
protected void doExecuteCommand()
{
// do whatever your command has to do
}
}
Man kann auch einen ActionCommandExecutor implementieren, falls das Ableiten der ActionCommand Klasse keine Option darstellt. Der NewOwnerWizard zum Beispiel verfährt so, um die Logik für das Öffnen des NewOwnerWizard Dialogs zu kapseln. Mit diesem Ansatz nutzt man eine Komposition einer TargetableActionCommand Instanz, indem man den Executor für den targetable Action Command setzt (sogar wenn der Commad selbst nicht retarget wird nach dem Startup). Action Bar Contribution PoliciesTo MenusTo ToolBarsGroup Markers and SeparatorsGlobal ActionsGlobale Commands sind Commands, die nur im Fenster ihre Gültigkeit besitzen. Sie werden in der Datei commands-context.xml definiert. Die dort definierten Commands werden in der Command Registry des instaziierenden Fensters registriert. Sie bestehen typischerweise aus:
Es gibt einige globalen Standard Commands, welche in der GlobalCommandIds Klasse definiert sind. Die definierten globalen Actions sind:
Handler RegistrierungSiehe Views für Beispiele. Interaktion mit der middle-tierPopupMenus erzeugenUm ein contextbasiertes PopupMenu zu Erzeugen, kann man die PopupMenuMouseListener Hilfsklasse nutzen. Der PopupMenuMouseListener kann auf zwei unterschiedliche Arten genutzt werden:
JTree tree = ...; JPopupMenu popupMenu = ...; tree.addMouseListener(new PopupMenuMouseListener(popupMenu));
Hierfür erzeugt man eine anonyme innere Klasse, welche ein PopupMenu zurückgibt, abhängig von extenrnen Faktoren.
JTree tree = ...;
tree.addMouseListener(new PopupMenuMouseListener()
{
protected JPopupMenu getPopupMenu()
{
// create your popup menu here based on the selection
}
}
);
Um ein PopupMenu zu erzeugen muss man zuerst eine CommandGroup erzeugen. Die CommandGroup hat Hilfsmethoden zum erzeugen einer ToolBar, eines PopupMenus etc. etc.
CommandGroup group = getWindowCommandManager().createCommandGroup("ownerCommandGroup",
new Object[] { renameCommand, "separator", "deleteCommand", "separator", "propertiesCommand" });
JPopupMenu poupMenu = group.createPopupMenu();
So könnte man 2 unterschiedliche CommandGroups erzeugen (zum Beispiel eine für Kunden, eine für Bestellungen), und das passende PopupMenu für den ausgewählten Knoten im Baum zurückgeben, oder man erzeugt ein statisches Popupmenu wenn man mit einer Tabelle arbeitet.
Go to top
Edit this page.
More info...
Attach file...
This page last changed on 10-Nov-2006 13:29:50 CET by PeterSchneider-Manzell. |