Generalmente visualizzazioni ed editor di un plug-in implementano le azioni semanticamente simili a quelle esistenti nel workbench, come taglia/copia/incolla, aggiorna visualizzazione o visualizza proprietà. Il menu di scelta rapida per visualizzazioni o editor potrebbe diventare piuttosto confuso se ogni visualizzazione 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 visualizzazione o editor. Quando una visualizzazione 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, visualizzazioni 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"; // Global action.
La tabella seguente fa un riepilogo delle azioni ridestinabili più comuni implementate da visualizzazioni ed editor:
Menu File | Menu modifica | Menu Esplora | |
visualizzazioni | sposta rinomina aggiorna proprietà |
vai in indietro avanti su successivo precedente |
|
editor | ripristina stampa |
trova | |
visualizzazioni 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 visualizzazione o a un editor di reimplementare un'azione. LabelRetargetAction consente a visualizzazioni ed editor anche di reimpostare 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 visualizzazione o un editor possono fornire un'implementazione per un'azione ridestinabile. Questa operazione viene eseguita attraverso l'impostazione di un gestore di azione globale.