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