org.eclipse.ui.viewActions

É comum os plug-ins contribuírem com comportamento para exibições já existentes no workbench.Isso é feito através do ponto de extensão org.eclipse.ui.viewActions. Esse ponto de extensão permite aos plug-ins contribuir com itens de menu, submenus e entradas da barra de ferramentas para um menu de opção local e uma barra de ferramentas local de uma visualização existente.

Talvez você tenha observado um item na barra de ferramentas local do navegador que é ativado toda vez que um arquivo leia-me é selecionado. Esse item também aparece no menu de opções local do navegador. Essas ações aparecem porque o plug-in da ferramenta leia-me contribui com elas, utilizando a extensão viewActions.

A contribuição plugin.xml relevante está abaixo.

<extension
    point = "org.eclipse.ui.viewActions">
      <viewContribution 
         id="org.eclipse.ui.examples.readmetool.vc1" 
         targetID="org.eclipse.ui.views.ResourceNavigator">
	   <action id="org.eclipse.ui.examples.readmetool.va1" 
              label="%PopupMenu.ResourceNav.label" 
	      menubarPath="additions"
              toolbarPath="additions" 
              icon="icons/obj16/editor.png"
              tooltip="%PopupMenu.ResourceNav.tooltip"
   	      helpContextId="org.eclipse.ui.examples.readmetool.view_action_context"
              class="org.eclipse.ui.examples.readmetool.ViewActionDelegate"
              enablesFor="1">
		<selection class="org.eclipse.core.resources.IFile" name="*.readme"/> 
	   </action>
      </viewContribution>
 </extension>

Uma contribuição de visualização com um ID exclusivo é especificada. A visualização na qual estamos incluindo a ação é especificada em targetID. Estamos contribuindo com o menu do navegador do recurso.  Especificamos o rótulo e as localizações da barra de menus e da barra de ferramentas da nova ação.  (Para obter uma discussão completa sobre as localizações do menu e da barra de ferramentas, consulte Caminhos do menu e da barra de ferramentas).

Especificamos também as condições nas quais a ação deve ser ativada. Você pode ver que essa ação será ativada quando houver uma seleção (enablesFor="1") do tipo IFile (class="org.eclipse.core.resources.IFile"), cujo nome tenha ".readme" na extensão do arquivo (name="*.readme"). Com certeza, é exatamente o que acontece quando você clica ao redor do navegador de recurso.  

As informações no plugin.xml é tudo o que se precisa para incluir itens nos menus e nas barras de ferramentas, uma vez que o código de plug-in será executado apenas quando a ação for realmente selecionada no menu ou na barra de ferramentas. Para fornecer o comportamento da ação, a classe de implementação especificada no plugin.xml deve implementar a interface IViewActionDelegate.

Neste exemplo, o plug-in leia-me fornece ViewActionDelegate para implementar a ação. Se você navegar nessa classe, verá que ela inclui métodos para lembrar sua visualização, tratar as alterações da seleção e chamar sua ação.  Quando chamada, a própria ação simplesmente ativa um diálogo que anuncia que foi executa.

public void run(org.eclipse.jface.action.IAction action) {
	MessageDialog.openInformation(view.getSite().getShell(),
		MessageUtil.getString("Readme_Editor"),  
		MessageUtil.getString("View_Action_executed"));
}

Embora esta ação seja simples, podemos imaginar como a utilização de seleções e de diálogos mais funcionais poderia fazê-la executar algo mais interessante.