Eclissi RCP:Azioni VS comandi
Domanda
Quali sono le differenze tra azioni e comandi nel contesto di Eclipse RCP?So che entrambi contribuiscono alle voci del menu, ma qual è il migliore?E perché?
Di tutte le risorse online che ho letto, non sono riuscito a comprendere appieno le differenze tra i due.In realtà non ho provato a usarli, ma volevo solo capirli per iniziare da un punto di vista di livello superiore.
Grazie
Soluzione
Hai letto la wiki di Eclipse FAQ Qual è la differenza tra un comando e un'azione?
Probabilmente hai già capito che Azioni e Comandi fanno sostanzialmente la stessa cosa:Causano l'esecuzione di un determinato pezzo di codice.Vengono attivati principalmente da artefatti all'interno dell'interfaccia utente
La preoccupazione principale con Azioni è quello il manifestazione e il codice sono tutti memorizzati nell'Azione.
Sebbene vi sia una certa separazione nei delegati dell'azione, sono comunque collegati all'azione sottostante.Gli eventi di selezione vengono passati alle azioni in modo che possano modificare il proprio stato abilitato (a livello di codice) in base alla selezione corrente.Questo non è molto elegante.Inoltre per posizionare un'azione su una determinata parte del banco di lavoro è necessario utilizzare diversi punti di estensione.Comandi praticamente risolvi tutti questi problemi.L'idea di base è questa il comando è solo l'idea astratta di un codice da eseguire.La gestione effettiva del codice viene eseguita, beh, dai gestori.I gestori vengono attivati da un determinato stato del workbench.Questo stato viene interrogato dalle espressioni principali della piattaforma.Ciò significa che abbiamo bisogno di un solo comando Salva globale che si comporta in modo diverso a seconda del gestore attualmente attivo.
Questo articolo dettaglia le differenze
Azioni:
- IL L'interfaccia utente e la gestione sono sempre legate.Non c'è modo di separarvi
- Sebbene sia possibile contribuire alle azioni in diverse parti dell'ambiente di lavoro (menu a comparsa/barra degli strumenti), tutte lo erano diversi punti di estensione e così finisci per duplicare l'XML in più posti.La cosa peggiore è che non tutti i punti di estensione prevedono la stessa configurazione.
- Specificare azioni in più punti è a incubo di manutenzione.Se devi cambiare l'icona di un'azione, devi cambiarla in tutti i posti.
- Un altro problema con la duplicazione delle azioni in plugin.xml è questo nella memoria verranno create più istanze delle stesse azioni.
I comandi coinvolgono più punti di estensione, ma:
- Il gestore può essere dichiarato separatamente da un comando.Ciò consente più dichiarazioni di gestori per lo stesso comando.
- IL attivoQuando per tutti i gestori vengono valutati e viene selezionato quello che restituisce true per la condizione più specifica.Tutte queste cose lo sono fatto senza nemmeno caricare il tuo gestore in memoria.Anche senza caricare il plugin!
- La definizione dei parametri consiste nel restituire una mappa di nomi visualizzati e ID.Il nome verrebbe visualizzato nella pagina delle associazioni dei tasti e l'id verrebbe utilizzato per richiamare il comando quando viene premuta la sequenza di tasti.
- Definire un IExecutionListener, che è semplicemente un osservatore dell'esecuzione del comando in modo da non poter porre il veto né apportare modifiche all'evento
Altri suggerimenti
Basta aggiungere alla risposta eccellente di VonC, i comandi potrebbero essere un po 'eccessivo se l'applicazione è relativamente piccolo. Essi sono relativamente più difficili da installare, e che brillano di più quando si dispone di più prospettive, editori e punti di vista.
Per qualcosa di semplice, vorrei andare con le azioni.
E ricorda che l'azione possa essere deprecato sulla versione successiva di Eclipse. Io suggerirei di utilizzare Command dall'inizio.