org.eclipse.ui.viewActions

Det er almindeligt for plugins at bidrage med funktionsmåder til oversigter, som allerede findes på arbejdsbænken. Det gøres via udvidelsespunktet org.eclipse.ui.viewActions. Udvidelsespunktet giver plugins mulighed for at bidrage med menupunkter, undermenuer og indgange på værktøjslinjen til en eksisterende oversigts lokale menu og lokale værktøjslinje.

Du har muligvis bemærket et element på navigatorens lokale værktøjslinje, der aktiveres, hver gang en Readme-fil bliver valgt. Dette element vises også i navigatorens lokale menu. Funktionerne vises, fordi plugin'en med Readme-værktøjet bidrager med dem ved hjælp af udvidelsen viewActions.

Det relevante plugin.xml-bidrag findes nedenfor.

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

Der er angivet et oversigtsbidrag med en entydig id. Den oversigt, som funktionen skal føjes til, er angivet i targetID. Der bidrages til ressourcenavigatorens menu. Vi angiver etiketten, menulinjen og menulinjeplaceringer for den nye funktion. Der er en komplet beskrivelse af menu- og værktøjslinjeplaceringer i Menu- og værktøjslinjestier.

Vi angiver også betingelserne for aktivering af funktionen. Du kan se, at denne funktion aktiveres, når der er ét valg (enablesFor="1") af type IFile (class="org.eclipse.core.resources.IFile"), hvis navn indeholder ".readme" som filtype (name="*.readme"). Det er præcis, hvad der sker, når du klikker forskellige steder i ressourcenavigatoren.  

Oplysningerne i plugin.xml er alt, hvad der behøves for at tilføje elementer til menuer og værktøjslinjer, fordi plugin-koden kun udføres, når funktionen faktisk vælges på menuen eller værktøjslinjen. Den implementeringsklasse, der er angivet i plugin.xml, skal implementere grænsefladen IViewActionDelegate for at stille funktionsmåden til rådighed.

I dette eksempel leverer plugin'en med Readme-værktøjet ViewActionDelegate for at implementere funktionen. Hvis du blader i klassen, kan du se, at den omfatter metoder til at huske sin oversigt, håndtere valgændringer og starte sin funktion. Når funktionen startes, starter den selv en dialogboks med en meddelelse om, at den er udført.

public void run(org.eclipse.jface.action.IAction action) {
	MessageDialog.openInformation(view.getSite().getShell(),
		MessageUtil.getString("Readme_Editor"),  
		MessageUtil.getString("View_Action_executed")); 
}

Selvom funktionen er enkel, kan man godt forestille sig, hvordan brug af valg og mere funktionelle dialogbokse kan få funktionen til at udføre noget mere interessant.