A parancs a felhasználói tevékenység azonosító szerinti deklarációja. A parancsok szemantikus tevékenységeket deklarálnak, így a tevékenységkészletben és szerkesztőkben megadott tevékenységmegvalósítások egy adott szemantikus parancshoz társíthatók. A parancs és a tevékenységmegvalósítás elválasztásával több bedolgozó adhat meg tevékenységeket, amelyek ugyanazt a szemantikus parancsot valósítják meg. A parancs megadja, hogy mi van társítva egy adott billentyűkombinációhoz.
A munkaterület számos általános parancsot ad meg a plugin.xml fájlban, és biztatja a bedolgozókat, hogy társítsák saját tevékenységeiket ezekkel a parancsokkal, ha ennek van értelme. Ily módon a különböző bedolgozókban megvalósított szemantikailag hasonló tevékenységek használhatják ugyanazt a billentyűkombinációt.
A parancsok az org.eclipse.ui.commands kiterjesztési pont segítségével kerülnek megadásra. Az alábbiak a munkaterület-leírónyelvből származnak:
<extension point="org.eclipse.ui.commands"> ... <command name="%command.save.name" description="%command.save.description" categoryId="org.eclipse.ui.category.file" id="org.eclipse.ui.file.save"> </command> ...
A parancsdefiníció egy nevet, leírást és azonosítót ad meg a tevékenységhez. Ez a parancs kategóriájának azonosítóját is megadja, amely csoportosítja a parancsokat a beállítások párbeszédablakban. A kategóriák szintén az org.eclipse.ui.commands kiterjesztési pontban kerülnek megadásra:
... <category name="%category.file.name" description="%category.file.description" id="org.eclipse.ui.category.file"> </category> ...
Ne feledje el, hogy a parancshoz nincs megvalósítás megadva. A parancs csak akkor válik konkréttá, ha a bedolgozó egy tevékenységet rendelt a parancsazonosítóhoz.
Tevékenységek a kódban vagy a tevékenységkészletek plugin.xml fájljában társíthatók a parancshoz. A választás a tevékenység megadásának helyétől függ.
A kódban példányosított tevékenységek az IAction protokoll segítségével hozzárendelhetők egy tevékenységdefinícióhoz. Ez jellemzően a tevékenység létrehozásakor történik. A SaveAction inicializáláskor ezt az egyedi technikát használja.
public SaveAction(IWorkbenchWindow window) { ... setText... setToolTipText... setImageDescriptor... setActionDefinitionId("org.eclipse.ui.file.save"); }
(Megjegyzés: A setActionDefinitionID metódus megfelelőbb neve setCommandID lehetne. A metódusnév a billentyűkombinációk eredeti megvalósítását tükrözi és elavult terminológiát használ.)
A setActionDefinitionID meghívásával a megvalósítási tevékenység (SaveAction) a tartozóazonosítóval van társítva, amelyet a parancsdefiníció-leírónyelve használ. Érdemes lehet a tevékenységdefiníciókhoz konstansokat megadni, így egyszerűen lehet rájuk kódban hivatkozni.
Ha a tevékenységkészletben ad meg egy tevékenységet, akkor magát a tevékenységet nem kell példányosítani. A munkaterület elvégzi ezt, amikor a felhasználó meghívja a tevékenységet a menüről vagy a billentyűzetről. Ebben az esetben a tevékenységet egy parancsazonosítóval társíthatja az XML leírónyelvben. Az alábbi egy elképzelt leírónyelvet ad meg egy tevékenységkészlethez:
<extension point = "org.eclipse.ui.actionSets"> <actionSet id="com.example.actions.actionSet" label="Example Actions" visible="true"> <action id="com.example.actions.action1" menubarPath="additions" label="Example Save Action" class="org.example.actions.ExampleActionDelegate" definitionID="org.eclipse.ui.file.save"> </action> ... </actionSet> </extension>
A definitionID attribútum egy parancsazonosítót deklarál a tevékenységhez.
Bármely módszert is használja, a tevékenység parancsazonosítóval társítása hatására az org.eclipse.ui.file.save parancshoz megadott billentyűkombinációk meghívják a tevékenységet, ha ez megfelelő.
Most nézzük meg a billentyűkombinációk megadásának módját.