O plug-in pode contribuir com menus, itens de menu e itens da barra de ferramentas para os menus e barra de ferramentas do workbench, utilizando o ponto de extensão org.eclipse.ui.actionSets. Para reduzir a confusão que seria causada por ter todas as contribuições de menu do plug-in exibidas ao mesmo tempo, elas são agrupadas em conjuntos de ações, cuja visualização pode ser obtida de acordo com a preferência do usuário.
Você pode ver quais conjuntos de ações contribuíram com o workbench, selecionando Janela->Personalizar Perspectiva... no menu do workbench. Esta opção mostrará um diálogo que lista os atalhos e conjuntos de ações disponíveis para a perspectiva atual. Os conjuntos de ações estão listados em Outros. Um visto ao lado do conjunto de ações significa que as ações do menu e da barra de ferramentas estão visíveis no workbench. Você pode selecionar o nome do conjunto de ações para ver a lista de ações disponíveis à direita. A figura abaixo mostra a lista de conjuntos de ações disponíveis no nosso workbench. (O workbench talvez tenha uma aparência diferente, dependendo dos plug-ins instalados e da perspectiva ativa).
A ferramenta Leia-me utiliza um conjunto de ações para contribuir com várias ações diferentes de "Abrir Navegador do Leia-me" para o menu do workbench. (Contribuímos com uma ação semelhante para o menu pop-up do navegador de recurso). Segue-se a marcação:
<extension point = "org.eclipse.ui.actionSets"> <actionSet id="org_eclipse_ui_examples_readmetool_actionSet" label="%ActionSet.name" visible="true"> <menu id="org_eclipse_ui_examples_readmetool" label="%ActionSet.menu" path="window/additions"> <separator name="slot1"/> <separator name="slot2"/> <separator name="slot3"/> </menu> <action id="org_eclipse_ui_examples_readmetool_readmeAction" menubarPath="window/org_eclipse_ui_examples_readmetool/slot1" toolbarPath="readme" label="%ReadmeAction.label" tooltip="%ReadmeAction.tooltip" helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context" icon="icons/ctool16/openbrwsr.gif" class="org.eclipse.ui.examples.readmetool.WindowActionDelegate" enablesFor="1"> <selection class="org.eclipse.core.resources.IFile" name="*.readme"> </selection> </action> ... </actionSet> </extension>
Nossa, há muita coisa acontecendo aqui! Vamos por etapas, olhando apenas a primeira ação por enquanto.
Primeiro, o conjunto de ações é declarado e recebe um rótulo. O rótulo "Ações do Leia-me" (definido pela chave %ActionSet.name no arquivo de propriedades do plug-in) é utilizado para exibir o conjunto de ações no diálogo mostrado acima. Como definimos visible como true, o workbench terá, inicialmente, o conjunto de ações marcado com um visto na lista de conjuntos de ações e as ações ficarão visíveis.
O restante da declaração do conjunto de ações está relacionado à definição do menu no qual as ações aparecem e as próprias ações.
Definimos um menu cujo rótulo aparece nos menus do workbench. O path do menu informa ao workbench para posicionar o novo menu no slot inclusões do menu janela. (Para obter uma discussão sobre caminhos de menu e slots, consulte Caminhos de menu e da barra de ferramentas.) Também definimos alguns slots em nosso novo menu para que as ações possam ser inseridas em localizações específicas do nosso menu.
Apenas esta marcação é suficiente para fazer com que o menu apareça no menu Janela do workbench.
Em seguida, definimos as próprias ações.
A definição da ação (id, label, icon, class) é semelhante às outras ações que vimos em exibições, editores e pop-ups. Focalizaremos aqui a diferença: para onde a ação vai? Utilizamos menubarPath e toolbarPath para indicar a localização. Primeiro, definimos o menubarPath para incluir a ação em um slot no menu que acabamos de definir ( "window/org_eclipse_ui_examples_readmetool/slot1").
Em seguida, definimos um novo toolbarPath para inserir nossas ações na barra de ferramentas do workbench. Como já definimos um novo caminho para as ferramentas, "readme", o workbench decidirá para onde ele vai com relação às outras contribuições da barra de ferramentas do plug-in.
O que acontece quando a ação é selecionada pelo usuário? Ela é implementada pela classe especificada no atributo class. A ação class deve implementar IWorkbenchWindowActionDelegate ou IWorkbenchWindowPulldownDelegate se a ação for mostrada como um item de ferramenta do menu de opções na barra de ferramentas. Como não estamos criando um item de ferramenta do menu de opções, fornecemos WindowActionDelegate. Essa classe é semelhante a ObjectActionDelegate. Ela lança o diálogo de seções do Leia-me quando o usuário seleciona a ação. Veremos o diálogo de seções em Diálogos do aplicativo.)
A ação também fornece condições de ativação para seu item de menu e item da barra de ferramentas. Os itens de menu e da barra de ferramentas serão ativados apenas quando um único arquivo readme (enablesFor="1") (selectionClass ="org.eclipse.core.resources.IFile" name="*.readme") for selecionado. Os itens de menu e da barra de ferramentas desta ação aparecem e são ativados com base na marcação no arquivo plugin.xml. Nenhum dos códigos do plug-in será executado até que o usuário escolha a ação e o workbench execute a ação class.
Veremos as outras duas ações posteriormente no contexto de ações reatingíveis.