Parancsok

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.

Parancs megadása

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ég társítása egy paranccsal

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.