É 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 exibição existente.
Talvez você tenha notado um item na barra de ferramentas local da exibição do navegador que é ativado toda vez que o arquivo Leia me é selecionado. Esse item aparece também no menu de opções local da exibição. 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="&Readme View Extension"
menubarPath="additions"
toolbarPath="additions"
icon="icons/basic/obj16/editor.gif"
tooltip="Run Readme View Extension"
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 exibição com um ID exclusivo é especificada. A exibição na qual estamos incluindo a ação é especificada em targetID. Estamos contribuindo com o menu da exibição do navegador. Especificamos a etiqueta juntamente com as localizações da barra de ferramentas e da barra de menus para a 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 é ativada quando há um seleção do tipo IFile, cujo nome tem ".readme" na extensão do arquivo. 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 preencher os menus e as barras de ferramentas apropriados. Nenhum código do plug-in será executado enquanto a ação não tiver sido realmente selecionada no menu ou na barra de ferramentas. 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 por essa classe, verá que ela inclui métodos para manipular as alterações de seção, chamar a ação e lembrar para qual exibição foi criada.
A própria ação simplesmente lança um diálogo que anuncia que a ação de exibição foi executada.
public void run(org.eclipse.jface.action.IAction action) {
MessageDialog.openInformation(view.getSite().getShell(),
"Readme Editor",
"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.