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

È stato utile?

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.

properties of a command

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top