É comum para os plug-ins contribuírem com comportamentos para vistas que já existam na área de trabalho. Tal efectua-se por meio do ponto de extensão org.eclipse.debug.ui.viewActions. Este ponto de extensão permite aos plug-ins contribuírem com artigos de menu, submenus e entradas de barra de ferramentas para o menu emergente local e a barra de ferramentas local de uma vista existente.
Poderá ter reparado num artigo na barra de ferramentas local do navegador que fica activado sempre que se selecciona um ficheiro readme. Este artigo também aparece no menu pendente local do navegador. Estas acções aparecem porque o plug-in da ferramenta readme contribui com eles através da extensão viewActions.
O contributo plugin.xml segue-se em baixo.
<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>
É especificado um contributo de vista com um ID único. A vista à qual adicionamos a acção está especificada no targetID. Contribuímos para o menu do navegador de recursos. Especificamos a etiqueta e as localizações da barra de menus e barra de ferramentas para a nova acção. (Para uma abordagem completa às localizações de barras de menus e de ferramentas, consulte Caminhos de menus e barras de ferramentas.)
Também especificamos as condições nas quais a acção deve ser activada. Pode ver que esta acção será activada quando houver uma selecção (enablesFor="1") do tipo (IFile (class="org.eclipse.core.resources.IFile"), cujo nome tenha ".readme" na extensão do ficheiro (name="*.readme"). Naturalmente, é isto que acontece quando se faz clique no navegador de recursos.
As informações no ficheiro plugin.xml bastam para adicionar artigos a barras de menus e ferramentas, dado que o código do plug-in só será executado quando a acção estiver mesmo seleccionada na barra de menus ou ferramentas. Para facultar o comportamento da acção, a classe de implementação especificada em plugin.xml deve implementar a interface IViewActionDelegate.
Neste exemplo, o plug-in readme faculta um ViewActionDelegate para implementar a acção. Se procurar nesta classe verá que inclui métodos para recordar a respectiva vista, tratar alterações a selecções e invocar a respectiva acção. Quando invocada, a própria acção lança simplesmente um diálogo que anuncia que foi executada.
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 acção seja simples, podemos imaginar como a utilização de selecções e diálogos mais funcionais pode fazer com que esta acção realize algo mais interessante.