É 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.