As classes de acção permitem definir comandos de utilizador independentemente da respectiva apresentação na UI. Isto confere a flexibilidade de alterar a apresentação de uma acção no plug-in sem alterar o código que realiza na verdade o comando, depois de escolhido. As classes de contributo são utilizadas para gerir os verdadeiros artigos da UI que representam os comandos. Não se programa para classes de contributo mas estas podem ver-se em algumas das APIs de área de trabalho e JFace.
Uma acção (IAction) representa um comando que pode ser desencadeado pelo utilizador final. As acções estão normalmente associadas a botões, artigos de menu, e artigos em barras de ferramentas.
Embora as acções não se coloquem na UI, têm propriedades orientadas para a UI como, por exemplo, texto de sugestão, texto de etiqueta e uma imagem. Isto permite a outras classes construírem widgets para a apresentação da acção.
Quando o utilizador desencadeia a acção na UI, o método de execução da acção é invocado para realizar o verdadeiro trabalho. Um padrão comum no método de execução consiste em consultar as selecções da área de trabalho e manipular os objectos que são seleccionados. Outro padrão comum consiste em lançar um assistente ou diálogo quando é escolhida uma acção.
Não deverá implementar directamente a interface IAction. Em contrapartida, deverá constituir uma subclasse da classe Action. Procure as subclasses desta classe para ver muitos dos padrões comuns para acções. O código infra implementa a acção "About" (acerca de). É uma das acções mais simples na área de trabalho.
public void run() { new AboutDialog(workbenchWindow.getShell()).open(); }
Anteriormente vimos as interfaces IViewActionDelegate e IEditorActionDelegate de área de trabalho. Estas interfaces são utilizadas ao contribuir com acções de vista ou editor para a área de trabalho. Os delegados da acção de área de trabalho iniciam-se com uma referência à respectiva vista ou ao editor associado(a). Com este conhecimento, podem navegar até à página ou janela de área de trabalho, aceder a selecções ou outras informações necessárias para executar a acção.
Irá implementar as suas próprias classes de acções sempre que quiser definir um comando no seu plug-in. Se contribuir com acções para outras vistas e editores, irá implementar delegados de acções.
Um artigo de contributo (IContributionItem) representa a porção da UI de uma acção. Mais especificamente, representa um artigo que seja contributo para um recurso de UI partilhado como, por exemplo, um menu ou uma barra de ferramentas.-
Os artigos de contributo sabem como preencher um widget de SWT específico com o artigo de SWT apropriado que represente o contributo.
Não é preciso preocupar-se com a criação de um artigo de contributo quando estiver a contribuir com acções para a UI da área de trabalho. Tal realiza-se por si quando a área de trabalho criar artigos de UI para as acções que tiver definido.
Um gestor de contributos (IContributionManager) representa uma recolha de artigos de contributo que serão apresentados na UI. Poderá adicionar e inserir artigos de contributo com IDs de contributo denominados para colocar os artigos pela ordem apropriada. Também poderá localizar artigos por ID e remover artigos individuais.
Cada implementação do IContributionManager sabe como preencher um widget de SWT específico com os seus artigos. O JFace proporciona gestores de contributos para menus (IMenuManager), barras de ferramentas (IToolBarManager) e linhas de estado (IStatusLineManager).
Como programador de plug-ins, não é preciso implementar estas interfaces, mas verá referências a alguns destes gestores em métodos de API.