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.