Pergunta

Quais são as diferenças entre ações e comandos no contexto do Eclipse RCP? Eu sei que ambos contribuem para as entradas do menu, mas qual é o melhor? E por quê?

De todos os recursos on-line que eu li, eu não poderia obter um firme entendimento das diferenças entre ambos. Eu realmente não tenho tentou usá-los, mas só queria entendê-los para começar a partir de maior ponto de vista nível.

Graças

Foi útil?

Solução

Você leu o eclipse wiki FAQ Qual é a diferença entre um comando e uma ação?

Você provavelmente já entendeu que as ações e Comandos fazer basicamente a mesma coisa: Eles causam um certo pedaço de código a ser executado. Eles são acionados, principalmente, a partir artificats dentro da interface de usuário

A principal preocupação com Ações é que o manifestação e o código é tudo armazenado na Action .
Embora haja alguma separação no Delegados de ação, eles ainda estão ligados à acção subjacente. eventos de seleção são passados ??para Ações de modo que eles podem mudar seu estado habilitado (programaticamente) com base na seleção atual. Isso não é muito elegante. Também para colocar uma ação em uma determinada parte bancada você tem que usar vários pontos de extensão.

Comandos praticamente resolver todas estas questões. A idéia básica é que o comando é apenas a idéia abstrata de algum código a ser executado. A manipulação real do código é feito por, bem, manipuladores . Manipuladores são activados por um determinado estado da bancada. Este estado é consultado pelas expressões plataforma central. Isto significa que só precisa de um comando Salvar global, que se comporta de forma diferente com base no qual manipulador está ativo atualmente.

propriedades de um comando

Este artigo detalha as diferenças

Ações :

  • O UI e manuseio estão sempre atreladas . Não há nenhuma maneira você pode separar um do outro
  • Enquanto Ações podem ser contribuíram para diferentes partes da bancada (menu pop-up / barra de ferramentas), todos eles eram diferentes pontos de extensão e assim você acaba duplicando o XML em vários lugares. O pior de tudo é que nem todos os pontos de extensão esperar a mesma configuração.
  • Especificando Ações em vários lugares é um manutenção pesadelo . Se você tiver que alterar o ícone de uma ação, você precisa mudar em todos os lugares.
  • Outro problema com a duplicação de Ações em plugin.xml é que instância múltiplo das mesmas ações será criado na memória .

Comandos envolver mais pontos de extensão, mas:

  • Handler pode ser declarado separadamente de um comando. Isso permite que a múltiplas declarações manipulador para o mesmo comando .
  • O activeWhen para todos os manipuladores são avaliados e aquele que retorna true para a condição mais específica for selecionada. Todas essas coisas são feito, mesmo sem carregar o manipulador na memória. Mesmo sem carregar o seu plugin !
  • Definir os parâmetros é tudo sobre o retorno um mapa de exibição nomes e as identificações. O nome seria exibido na página de teclas eo id seria usado para invocar o comando quando a sequência de teclas é pressionada.
  • Definir um IExecutionListener, que é apenas um observador da execução do comando para que ele não pode nem veto sobre ele, nem fazer quaisquer alterações ao evento

Outras dicas

Basta adicionar a excelente resposta do VonC, comandos pode ser um pouco exagerado se sua aplicação é relativamente pequeno. Eles são relativamente mais difícil de configurar, e eles brilham mais quando você tem múltiplas perspectivas, editores e visualizações.

Para algo simples, eu iria com acções.

E lembre-se que a acção pode ser preterido na versão mais recente do Eclipse. Eu sugiro que você use Command desde o início.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top