Generalmente i plug-in 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 plug-in 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 plug-in 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.gif" 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 plug-in 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 plug-in 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.