Vaak worden met behulp van plugins aanvullende gedragspatronen toegevoegd aan bestaande views van de workbench. U hebt hier het extensiepunt org.eclipse.ui.viewActions voor nodig. Op basis van dit extensiepunt kunnen plugins menu-items, submenu's en werkbalkitems toevoegen aan de bestaande lokale keuzemenu's en werkbalken van bestaande views.
Wellicht bent u al een item tegengekomen op de werkbalk van de navigator dat beschikbaar is wanneer u een README-bestand selecteert. Het item verschijnt ook in het lokale keuzemenu van de navigator. De acties worden afgebeeld omdat ze door de plugin van de readme-tool worden toegevoegd met de extensie viewActions.
Hieronder ziet u de definitie in het bestand plugin.xml.
<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>
Een view met een uniek ID wordt opgegeven. De view waaraan de actie wordt toegevoegd, is opgegeven met het doel-ID (targetID). Het doel voor de actie het menu van de resourcenavigator. Ook worden een label en de locaties voor de locatie van de nieuwe actie in het menu en op de werkbalk verstrekt. (Raadpleeg Paden van menu's en werkbalken voor meer informatie over menu- en werkbalklocaties.)
Verder wordt aangegeven wanneer de actie ingeschakeld mag zijn. De actie moet beschikbaar zijn wanneer er één selectie is (enablesFor="1") van het type IFile (class="org.eclipse.core.resources.IFile"), waarvan de bestandsnaam eindigt op ".readme" (name="*.readme"). Tijdens het klikken in de resourcenavigator zal aan deze voorwaarde worden voldaan.
Voor het toevoegen van items aan menu's en werkbalken hebt u alleen de gegevens uit het bestand plugin.xml nodig. Zodra de actie wordt gekozen in het menu of op de werkbalk, wordt code in de plugin uitgevoerd. U kunt het actiegedrag toepassen door ervoor te zorgen dat de implementatieklasse uit het bestand plugin.xml de interface IViewActionDelegate implementeert.
In dit voorbeeld wordt ViewActionDelegate door de readme-plugin verstrekt voor het implementeren van de actie. Bladert u door deze klasse, dan treft u methoden aan voor het onthouden van de view, het afhandelen van selectiewijzigingen en het starten van de actie. Zodra de actie wordt opgeroepen, wordt een dialoogvenster gestart dat aangeeft dat de actie is uitgevoerd.
public void run(org.eclipse.jface.action.IAction action) { MessageDialog.openInformation(view.getSite().getShell(), MessageUtil.getString("Readme_Editor"), MessageUtil.getString("View_Action_executed")); }
Deze actie mag dan eenvoudig zijn, het is mogelijk een nuttigere wending aan deze actie te geven door middel van selecties en functionelere dialoogvensters.