O plug-in pode contribuir com menus, itens de menu e itens da barra de ferramentas aos menus e à barra de ferramentas do workbench, utilizando o ponto de extensão org.eclipse.ui.actionSets. Para reduzir a confusão de ter todas as contribuições de menu do plug-in exibidas ao mesmo tempo, as contribuições são agrupadas em conjuntos de ações cuja visualização pode ser disponibilizada de acordo com a preferência do usuário.
Você pode ver quais conjuntos de ações contribuíram com o workbench, selecionando Perspectiva->Personalizar... no menu do workbench. Isso mostrará um diálogo que lista todos os conjuntos de ações disponíveis. 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 a ação "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="ReadMe Actions"
visible="true">
<menu id="org_eclipse_ui_examples_readmetool"
label="Readme &File Editor"
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="&Open Readme
Browser@Ctrl+R"
tooltip="Open Readme Browser"
helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context"
icon="icons/basic/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>
Uau, há muita coisa acontecendo aqui! Vamos dar um passo de cada vez.
Primeiro, o conjunto de ações é declarado e recebe uma etiqueta. A etiqueta "Ações do Leia me" é utilizada para exibir o conjunto de ações no diálogo mostrado acima. Como definimos visible como true, o workbench terá o conjunto de ações marcado com um visto na lista de conjuntos de ações e as ações estarão visíveis.
O restante da declaração do conjunto de ações está relacionado à definição do menu no qual a ação aparece e na própria ação.
Definimos um menu cuja etiqueta ("Leia me &Editor de Arquivo") aparece nos menus do workbench. O caminho do menu diz ao workbench para posicionar o novo menu no slot inclusões do menu da janela. (Para obter uma discussão sobre caminhos de menu e slots, consulte Caminhos de menu e da barra de ferramentas). Definimos alguns slots em nosso novo menu que podem ser utilizados para inserir ações em localizações específicas do nosso menu.
Apenas isso é o suficiente para fazer com que o menu apareça no menu Janela do workbench.
A seguir, definimos a própria ação. A definição da ação (id, label, icon, class) é semelhante àquela das 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, incluímos a ação em um slot no menu que acabamos de definir.
Em seguida, definimos um novo ToolbarPath para inserir nossa ação na barra de ferramentas do workbench, Como é o caminho de uma nova ferramenta, o workbench decidirá para onde ela vai com relação às outras contribuições da barra de ferramentas do plug-in.
Observe que as condições de ativação também são fornecidas para essa ação. Nosso novo item de menu e de barra de ferramentas será ativado somente quando um único(enablesFor="1") arquivo Leia me(selectionClass ="org.eclipse.core.resources.IFile" name="*.readme") for selecionado.
Esses itens de menu e barra de ferramentas aparecem e são ativados com base exclusivamente na marcação no arquivo plugin.xml. Nenhum dos códigos do plug-in será executado enquanto o usuário não selecionar a ação e o ambiente e trabalho não executar a ação class.
A ação class deverá implementar IWorkbenchWindowActionDelegate ou IWorkbenchWindowPulldownDelegate, se o conjunto de ações for mostrado como um menu de opções em uma barra de ferramentas. Como não estamos criando um menu de opções da barra de ferramentas, fornecemosWindowActionDelegate. Essa classe é semelhante ao ObjectActionDelegate. Ela lança o diálogo das 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.