As classes de ação permitem que você defina os comandos do usuário independentemente de suas apresentações na UI. Isso fornece flexibilidade para alterar a apresentação de uma ação no plug-in sem alterar o código que realmente executa o comando assim que é escolhido. As classes de contribuição são utilizadas para gerenciar os itens da UI real representando os comandos. Você não programa para classes de contribuição, mas as verá em algum workbench e em JFace API.
Uma ação (IAction) representa um comando que pode ser disparado pelo usuário final. As ações são tipicamente associadas aos botões, itens de menu e itens nas barras de ferramentas.
Embora as ações não se coloquem na UI, elas tem propriedades orientadas da UI, como texto de dica de ferramenta, texto de etiqueta e uma imagem. Isso permite que outras classes construam widgets para a apresentação da ação.
Quando o usuário dispara a ação na UI, o método de execução da ação é chamado para executar o trabalho atual. Um padrão comum no método de execução é consultar as seleções do workbench e manipular os objetos que são selecionados. Outro padrão comum é lançar um assistente ou diálogo quando uma ação é escolhida.
Não se deve implementar diretamente a interface IAction. Em vez disso, você deve fazer classes filhas da classe Ação. Procure as classes filhas dessa classe para ver muitos padrões comuns de ações. O código abaixo implementa a ação "Sobre". É uma das ações mais simples no workbench.
public void run() { new AboutDialog(workbenchWindow.getShell()).open(); }
Já vimos as interfaces do workbench IViewActionDelegate e IEditorActionDelegate. Essas interfaces são utilizadas quando contribuem com ações de exibição ou ações do editor para o workbench. A ação que o workbench delega é inicializada com uma referência às suas exibições ou editores associados. Com esse conhecimento, eles podem navegar para a página do workbench ou janela, acessando seleções ou qualquer outra informação necessária para executar a ação.
Você implementará suas próprias classes de ação no momento que desejar definir um comando no seu plug-in. Se estiver contribuindo com ações para outras exibições e editores, você implementará ações delegadas.
Um item de contribuição(IContributionItem) representa a parte da UI de uma ação. Mais especificamente, representa um item que é contribuído para um recurso da UI compartilhado como um menu ou barra de ferramentas.
Os itens de contribuição sabem como preencher um SWT widget específico com o item SWT apropriado que representa a contribuição.
Não se preocupe com a criação de um item de contribuição quando estiver fazendo contribuição de ações na UI do workbench. Isso é feito a seu favor quando o workbench cria itens da UI para as ações que você definiu.
Um gerenciador de contribuição(IContributionManager) representa uma coleção de itens de contribuição que serão apresentados na UI. É possível incluir e inserir itens de contribuição utilizando IDs de contribuição de nome para colocar os itens na ordem apropriada. É possível também localizar itens por id e remover itens individuais.
Cada implementação de IContributionManager sabe como preencher um SWT widget específico com seus itens. O JFace fornece gerenciadores de contribuição para menus (IMenuManager), barras de ferramentas(IToolBarManager) e linhas de status (IStatusLineManager).
Como um desenvolvedor de plug-in, não é necessário implementar essas interfaces, mas você verá referências a alguns desses gerenciadores nos métodos API.