Generalmente i plugin forniscono funzionalità a viste già esistenti nel workbench. Il contributo viene offerto mediante il punto di estensione org.eclipse.ui.viewActions. Questo punto di estensione consente ai plugin di contribuire con voci di menu, sottomenu e barre degli strumenti a un menu a discesa e a una barra degli strumenti locali di una vista esistente.
Nella barra degli strumenti locale del pannello di selezione è presente un elemento che diventa attivo ogni qualvolta viene selezionato un file readme. Lo stesso elemento viene visualizzato nel menu a discesa locale del pannello di selezione. Queste azioni vengono mostrate perché sono fornite dal plugin dello strumento readme mediante l'estensione viewActions.
Il contributo rilevante per plugin.xml è il seguente:
<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>
È specificato un contributo di visualizzazione con un unico id. La vista a cui viene aggiunta l'azione è specificata nel targetID. Il contributo viene aggiunto al menu di selezione risorse. È necessario specificare l'etichetta e i percorsi della barra del menu e della barra degli strumenti per la nuova azione. Per una trattazione relativa ai percorsi di menu e barre degli strumenti, consultare la sezione Percorsi di menu e barre degli strumenti.
È necessario specificare anche le condizioni in cui l'azione deve essere attivata. Nel caso specifico, questa azione sarà attivata in presenza di una selezione (enablesFor="1") di tipo IFile (class="org.eclipse.core.resources.IFile"), che abbia ".readme" come estensione del file (name="*.readme"). L'azione, ad esempio, sarà attivata se si fa clic nel pannello di selezione risorse.
L'informazione presente nel plugin.xml è sufficiente per aggiungere voci ai menu e alla barra degli strumenti poiché il codice di plugin verrà eseguito solo quando l'azione sarà effettivamente selezionata dal menu o dalla barra degli strumenti. Per fornire la funzione dell'azione, la classe di implementazione specificata in plugin.xml deve implementare l'interfaccia IViewActionDelegate.
In questo esempio, il plugin di readme fornisce ViewActionDelegate per implementare l'azione. L'esplorazione di questa classe mostra che essa include metodi per mantenere traccia della vista, gestire le modifiche di selezione e richiamare l'azione. Quando viene richiamata, l'azione avvia semplicemente una finestra di dialogo nella quale viene segnalata la sua esecuzione.
public void run(org.eclipse.jface.action.IAction action) { MessageDialog.openInformation(view.getSite().getShell(), MessageUtil.getString("Readme_Editor"), MessageUtil.getString("View_Action_executed")); }
Sebbene questa azione sia semplice, si può immaginare che l'utilizzo di selezioni e finestre di dialogo più funzionali possano renderla più complessa.