Azioni ridestinabili

Generalmente viste ed editor di un plug-in implementano le azioni semanticamente simili a quelle esistenti nel workbench, come taglia/copia/incolla, aggiorna vista o visualizza proprietà.  Il menu di scelta rapida per viste o editor potrebbe risultare piuttosto confuso se ogni vista o editor dovesse definire azioni univoche per queste operazioni e dovesse includerle nel proprio menu. 

Per risolvere questo problema, il workbench definisce azioni ridestinabili (denominate anche globali) che possono essere gestite da qualsiasi vista o editor.  Quando una vista o un editor sono attivi, il relativo gestore verrà eseguito nel momento in cui l'utente sceglie un'azione dal menu o dalla barra degli strumenti del workbench.  In questo modo, per azioni semanticamente simili, viste ed editor possono condividere lo spazio disponibile sul workbench.

IWorkbenchActionConstants documenta le azioni del workbench e denota le azioni ridestinabili come globali.  Qui di seguito, come esempio, è riportata la definizione dell'azione Proprietà.

public static final String PROPERTIES = "properties"; // Azione globale. 

La tabella seguente fa un riepilogo delle azioni ridestinabili più comuni implementate da viste ed editor:

  Menu File Menu modifica Menu Esplora Menu Progetto
viste sposta
rinomina
aggiorna
proprietà
  vai in
vai alla risorsa
sincronizza con editor
indietro
avanti
su
successivo
precedente
apri
chiudi
genera
rigenera
editor ripristina
stampa
trova    
viste ed editor   taglia
copia
incolla
elimina
seleziona tutto
annulla
ripeti
   

Le azioni ridestinabili vengono create utilizzando RetargetAction.  Il frammento di codice di seguito riportato è tratto da WorkbenchActionBuilder.

 propertiesAction = createGlobalAction(IWorkbenchActionConstants.PROPERTIES, "file", false); 

Il metodo createGlobalAction mostra esattamente come creare una RetargetAction.

private RetargetAction createGlobalAction(String id, String actionDefPrefix, boolean labelRetarget) {
	RetargetAction action;
	if (labelRetarget) {
		action = new LabelRetargetAction(id, WorkbenchMessages.getString("Workbench." + id)); 
	}
	else {
		action = new RetargetAction(id, WorkbenchMessages.getString("Workbench." + id)); 
	}
	...
	return action;
}

Quando si crea un'azione ridestinabile, il workbench assegna l'id per l'azione e l'etichetta predefinita.  Si noti che esistono due stili per le azioni ridestinabili.  RetargetAction consente semplicemente a una vista o a un editor di reimplementare un'azione.  LabelRetargetAction consente a viste ed editor di reimpostare anche l'etichetta dell'azione.   Questa operazione è utile per rendere più specifica l'etichetta del menu, come avviene, ad esempio, rietichettando l'azione Annulla in Annulla immissione.  

In questa sezione è stato esaminato il modo in cui le azioni ridestinabili vengono definite dal workbench. Nella prossima verrà trattato il modo in cui una vista o un editor possono fornire un'implementazione per un'azione ridestinabile.  Questa operazione viene eseguita attraverso l'impostazione di un gestore di azione globale.

Copyright IBM Corporation e altri 2000, 2003.