org.eclipse.ui.actionSets

O plug-in pode contribuir com menus, artigos de menu e artigos de barra de ferramentas para os menus e barra de ferramentas da área de trabalho através do ponto de extensão org.eclipse.ui.actionSets. Para reduzir os volumes decorrentes da apresentação simultânea dos contributos de menu de cada plug-in, os contributos são agrupados em conjuntos de acções, os quais podem ficar visíveis consoante a preferência do utilizador.

Pode ver quais os conjuntos de acções foram contribuídos para a área de trabalho ao seleccionar Janela > Personalizar Perspectiva... no menu da área de trabalho. Esta opção mostra uma caixa de diálogo que enumera conjuntos de acções na qualidade de grupos de comandos. Uma marca de confirmação junto a um grupo de comandos significa que as acções de menu e barra de ferramentas ficam visíveis na área de trabalho. Pode seleccionar o nome do grupo de comandos para ver a lista de acções de menu e barra de ferramentas à direita. A figura abaixo mostra a lista de grupos de comandos disponíveis na área de trabalho.   (A área de trabalho poderá parecer diferente consoante os plug-ins que estiverem instalados e a perspectiva que estiver activa.)

caixa de diálogo Personalizar Perspectiva com lista de conjuntos de acções

A ferramenta readme utiliza um conjunto de acções para contribuir com várias acções "Abrir Browser Readme" diferentes para o menu da área de trabalho.   (Contrinuímos com uma acção semelhante para o menu emergente do navegador de recursos.)  De seguida é apresentada 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"
			   definitionId="org.eclipse.ui.examples.readmetool.readmeAction"
			   enablesFor="1">
			   <selection class="org.eclipse.core.resources.IFile"
					name="*.readme">
			   </selection>
		</action>
		   ...
	</actionSet>
   </extension>

Ora a marcação é bem extensa.  Vamos ver uma coisa de cada vez, neste caso, a primeira acção.   

Primeiro, o conjunto de acções é declarado e recebe uma etiqueta.  A etiqueta "Acções ReadMe" (definida para a chave %ActionSet.name no ficheiro de propriedades do plug-in) é utilizada para apresentar o conjunto de acções na caixa de diálogo mostrado supra.  Dado que definimos visible como verdadeiro, a área de trabalho terá inicialmente o conjunto de acções com entrada dada na lista de conjuntos de acções e as acções estarão visíveis.

O resto da declaração de conjuntos de acções diz respeito à definição do menu na qual as acções aparecem e às próprias acções.

Definimos um menu cuja etiqueta aparece nos menus da área de trabalho.  O caminho de menu indica à área de trabalho que coloque o novo menu na ranhura adições do menu janela.   (Para uma abordagem sobre caminhos de menu e ranhuras, consulte Caminhos de menus e barras de ferramentas.)  Também definimos algumas ranhuras no nosso novo menu para que possam ser inseridas acções em localizações específicas no nosso menu.

Basta esta marcação para fazer com que o menu apareça no menu Janela da área de trabalho.

Menu Janela da área de trabalho com entrada do Editor do Ficheiro Readme

Em seguida, definimos as próprias acções.   

A definição da acção (id, etiqueta, ícone, classe) é semelhante a outras acções que vimos em vistas, editores e menus emergentes.  Vamos abordar aqui o que é diferente:  para onde vai a acção? Utilizamos   menubarPath e toolbarPath para indicar a localização.  Primeiro, definimos o menubarPath para adicionar a acção a uma ranhura no menu que acabámos de definir ( "window/org_eclipse_ui_examples_readmetool/slot1").

menu do Editor do Ficheiro Readme com artigos de menu

Em seguida, definimos novo toolbarPath para inserir as nossas acções na barra de ferramentas da área de trabalho.  Dado que definimos novo caminho de ferramentas, "readme", a área de trabalho irá decidir para onde vai relativamente a outros contributos de barra de ferramentas de plug-in.

barra de ferramentas da área de trabalho com acção readme

O que acontece quando a acção é seleccionada pelo utilizador?  a acção é implementada pela classe especificada no atributo classe.  A classe da acção deve implementar um IWorkbenchWindowActionDelegate ou um IWorkbenchWindowPulldownDelegate se a acção vier a ser mostrada como artigo de ferramenta pendente na barra de ferramentas.  Dado que não vamos criar um artigo de ferramenta pendente, facultamos WindowActionDelegate.  Esta classe é semelhante a ObjectActionDelegate. Lança a caixa de diálogo de secções readme quando o utilizador escolhe a acção.   (Veremos a caixa de diálogo de secções em Caixas de diálogo de aplicações.)

A acção também faculta condições de activação para a respectiva opção de menu e artigo de barra de ferramentas.  Os artigos de menu e barra de ferramentas só serão activados quando for seleccionado um único ficheiro readme (enablesFor="1") (selectionClass ="org.eclipse.core.resources.IFile" name="*.readme").  Estes artigos de menu e barra de ferramentas aparecem e são activados devido à marcação no ficheiro plugin.xml.  Não é executado nenhum do código do plug-in enquanto o utilizador não escolher a acção e a área de trabalho não executar a classe da acção.

O definitionId permite que a acção seja ligada ao comando criado pela extensão org.eclipse.ui.commands, que pode ser utilizada para associações de teclas. Todas as actions no actionSets deverão ser ligadas a comandos, quer sejam comandos existentes facultados pela área de trabalho ou comandos criados pelo plug-in de contribuição. Consulte Comandos.

Veremos as outras duas acções mais tarde no contexto de acções redestináveis.