Definizioni delle azioni

Una definizione dell'azione è la dichiarazione di un'azione mediante id.  Le definizioni delle azioni vengono utilizzate per dichiarare azioni semantiche in modo che le le azioni definite in serie di azioni ed editor possano associarsi a una particolare definizione di azione semantica.  La separazione tra definizione e implementazione dell'azione consente a più plug-in di definire azioni che implementano la stessa azione semantica.  La definizione dell'azione è ciò che viene associato alle combinazioni di tasti di scelta rapida.

Il workbench definisce molte definizioni delle azioni comuni nel file plugin.xml e, nei casi in cui sia significativo, le associazioni tra le azioni dei plug-in e queste definizioni vengono agevolate.  In questo modo, azioni semanticamente simili implementate in plug-in differenti possono condividere la stessa associazione di tasti.

Definizione di una definizione dell'azione

Le definizioni delle azioni vengono definite mediante il punto di estensione org.eclipse.ui.actionDefinitions.  Il codice riportato di seguito è ricavato dal tag del workbench:

<extension
         point="org.eclipse.ui.actionDefinitions">
      <actionDefinition
            id="org.eclipse.ui.file.close">
      </actionDefinition>
      <actionDefinition
            id="org.eclipse.ui.file.closeAll">
      </actionDefinition>
      <actionDefinition
            id="org.eclipse.ui.file.save">
      </actionDefinition>
      ...

La definizione in sé è semplice.  Non fa altro che specificare un id per un'azione semantica.  Una definizione di azione diventa concreta soltanto nel momento in cui un plug-in le associa un'azione.

Associazione di un'azione a una definizione di azione

E possibile associare azioni a definizioni delle azioni nel codice o nel file plugin.xml per serie di azioni.  La scelta dipende dal luogo in cui l'azione viene definita.

Le azioni per le quali è stata creata un'istanza nel codice possono essere anche associate a una definizione dell'azione utilizzando il protocollo IAction.  Questa operazione viene eseguita tipicamente nel momento in cui l'azione viene creata.  WorkbenchActionBuilder utilizza questa tecnica per inizializzare le sue azioni.  

private void makeActions() {
	...
	saveAction = new SaveAction(window);
	saveAction.setImageDescriptor(WorkbenchImages.getImageDescriptor(IWorkbenchGraphicConstants.IMG_CTOOL_SAVE_EDIT));
	saveAction.setHoverImageDescriptor(WorkbenchImages.getImageDescriptor(IWorkbenchGraphicConstants.IMG_CTOOL_SAVE_EDIT_HOVER));
	saveAction.setDisabledImageDescriptor(WorkbenchImages.getImageDescriptor(IWorkbenchGraphicConstants.IMG_CTOOL_SAVE_EDIT_DISABLED));
	partService.addPartListener(saveAction);
	saveAction.setActionDefinitionId(saveActionDefId);
	...

In questo modo, l'azione di implementazione (SaveAction) viene associata alla definizione dell'azione saveActionDefId.  Che cosa è saveActionDefId?  Un rapido esame delle definizioni dei campi statici in WorkbenchActionBuilder mostra quanto segue:

private static final String saveActionDefId = "org.eclipse.ui.file.save";

Si consiglia di definire delle costanti per le definizioni delle azioni in modo che possano essere facilmente referenziate nel codice. 

Se si definisce un'azione in una serie di azioni, di solito non è necessario crearne un'istanza.  A questo provvederà il workbench nel momento in cui l'utente richiamerà l'azione da un menu o dalla tastiera.  In questo caso, è possibile associare l'azione a una definizione nel tag XML.  Il codice di seguito riportato mostra un ipotetico tag per una serie di azioni:

<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>

L'attributo definitionID viene utilizzato per dichiarare un id di definizione per l'azione.

Utilizzando una di queste tecniche, l'associazione dell'azione a una definizione determina una associazione di tasti che viene definita per la definizione dell'azione org.eclipse.ui.file.save per richiamare l'azione al momento opportuno. 

Di seguito verrà discusso il modo in cui le associazioni di tasti vengono definite.

 

Copyright
IBM Corp. e altri 2000,2002.