org.eclipse.ui.actionSets

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 desordem 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 conjuntos de ações como grupos de comandos. Um visto de um grupo de comando significa que o menu e as ações da barra de ferramentas estão visíveis no workbench. Você pode selecionar o nome do grupo de comando para consultar a lista de ações do menu e da barra de ferramentas à direita. A figura a seguir mostra a lista de grupos de comando disponíveis no nosso workbench.  (O workbench talvez tenha uma aparência diferente, dependendo dos plug-ins instalados e da perspectiva ativa).

Diálogo Personalizar Perspectiva com lista do conjunto de ações

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.png"
			   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 e as próprias ações aparecem.

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 additions do menu window.  (Para obter uma discussão dos caminhos e slots de menu, consulte Caminhos do 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.

O Menu da Janela Workbench com Entrada do Editor de Arquivo Leia-me

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 adicionar a ação em um slot no menu que acabamos de definir ( "window/org_eclipse_ui_examples_readmetool/slot1").

Menu do Editor de Arquivo Leia-me com Itens de Menu

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.

Barra de Ferramentas do Workbench com Ação de Leia-me

O que acontece quando a ação é selecionada pelo usuário?  A ação é implementada pela classe especificada no atributo class.  A classe de ação deve implementar IWorkbenchWindowActionDelegate ou IWorkbenchWindowPulldownDelegate se a ação será mostrada como um item de ferramenta de opções na barra de ferramentas.  Como não estamos criando um item de ferramenta de opções, nós fornecemos WindowActionDelegate.  Essa classe é semelhante a ObjectActionDelegate.  Ela ativa o diálogo de seções do leia-me quando o usuário escolhe a ação.  (Discutiremos 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 (enablesFor="1") arquivo leia-me (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 classe da ação.

Veremos as outras duas ações posteriormente no contexto de ações reatingíveis.