org.eclipse.ui.viewActions

Det er vanlig at plugin-moduler bidrar med funksjonalitet til visninger som allerede finnes i arbeidsbenken. Dette gjøres via utvidelsespunktet org.eclipse.ui.viewActions. Via dette utvidelsespunktet kan plugin-moduler bidra med menypunkter, undermenyer og verktøylinjeoppføringer på lokale valgmenyer og verktøylinjer i en eksisterende visning.

Du har kanskje lagt merke til at et element i navigatorens lokale verktøylinje aktiveres når det velges en readme-fil. Dette elementet vises også i navigatorens lokale valgmeny. Disse handlingene vises fordi readme-verktøyets plugin-modul bidrar med den via utvidelsen viewActions.

Nedenfor ser du det aktuelle plugin.xml-bidraget.

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

Det angis et visningsbidrag med en unik ID. Visningen som vi legger til handling i, angis i targetID. Vi bidrar til ressursnavigatorens meny. Vi angir etiketten og hvor menylinjen og verktøylinjen skal plasseres for den nye handlingen. (Du finner en fullstendig beskrivelse av plassering av menyen og verktøylinjen, under Meny- og verktøylinjebaner).

Vi angir også hvilke betingelser handlingen skal aktiveres under. Du ser at denne handlingen blir aktivert når det er ett utvalg (enablesFor="1") av typen IFile (class="org.eclipse.core.resources.IFile") med ".readme" som filtype (name="*.readme"). Dette er akkurat det som skjer når du klikker rundt i ressursnavigatoren.  

Informasjonen i plugin.xml er alt du trenger for å legge til elementer og menyer og verktøylinjer siden plugin-koden bare kjøres når handlingen er valgt fra menyen eller verktøylinjen. Hvis du vil oppgi handlingsfunksjonaliteten, må implementeringsklassen som er oppgitt i plugin.xml, implementere grensesnittet IViewActionDelegate.

I dette eksempelet oppgir readme-plugin-modulen ViewActionDelegate for å implementere handlingen. Hvis du blar gjennom denne klassen, vil du se at den inneholder metoder som husker visningene, håndterer utvalgsendringer og aktiverer handlingen. Når handlingen aktiveres, starter den en dialogboks som angir at handlingen er utført.

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

Selv om dette er en enkel handling, får vi et innblikk i hvordan vi gjennom utvalg og mer funksjonelle dialogbokser kan gjøre denne handlingen mer interessant.