Il est courant pour les plug-ins d'ajouter un comportement à des vues qui existent déjà dans le plan de travail. Ceci est réalisé via le point d'extension org.eclipse.ui.viewActions. Ce point d'extension permet aux plug-ins d'ajouter des options de menu, des sous-menus et des entrées de barre d'outils au menu en incrustation local et à la barre d'outils locale d'une vue existante.
Vous avez peut-être remarqué un élément dans la barre d'outils locale de la vue du navigateur qui est activé chaque fois qu'un fichier readme est sélectionné. Cet élément apparaît également dans le menu déroulant local de la vue. Ces actions s'affichent car le plug-in de l'outil readme y contribue à l'aide de l'extension viewActions.
La contribution adéquate du fichier plugin.xml est la suivante :
<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="&Readme View Extension"
menubarPath="additions"
toolbarPath="additions"
icon="icons/basic/obj16/editor.gif"
tooltip="Run Readme View Extension"
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>
Une contribution de vue avec un ID unique est spécifiée. La vue à laquelle nous ajoutons l'action est spécifiée dans targetID. Nous contribuons au menu de la vue du navigateur de ressources. Nous spécifions le libellé avec les emplacements de la barre de menus et de la barre d'outils pour la nouvelle action. (Pour plus de détails sur les emplacements de menus et de la barre d'outils, reportez-vous à la section Chemins d'accès aux menus et à la barre d'outils.)
Nous spécifions également les conditions sous lesquelles l'action doit être activée. Vous pouvez voir que cette action est activée lorsqu'il y a une sélection du type IFile, dont le nom porte l'extension de fichier ".readme". C'est sans aucun doute ce qui se passe lorsque vous cliquez dans le navigateur de ressources.
Les informations contenues dans le fichier plugin.xml sont suffisantes pour remplir les menus et les barres d'outils appropriés. Aucun code du plug-in n'est exécuté tant que l'action n'est pas réellement sélectionnée dans le menu ou la barre d'outils. La classe d'implémentation spécifiée dans le fichier plugin.xml doit implémenter l'interface IViewActionDelegate.
Dans cet exemple, le plug-in du readme fournit ViewActionDelegate pour implémenter l'action. Si vous parcourez cette classe, vous verrez qu'elle inclut des méthodes pour traiter les changements de sélection, appeler l'action et se rappeler la vue pour laquelle elle a été créée.
L'action lance simplement une boîte de dialogue annonçant que l'action d'affichage a été exécutée.
public void run(org.eclipse.jface.action.IAction action) {
MessageDialog.openInformation(view.getSite().getShell(),
"Readme Editor",
"View Action executed");
}
Bien que cette action soit simple, nous pouvons imaginer comment l'utilisation de sélections et de boîtes de dialogue plus fonctionnelles pourrait faire faire à cette action quelque chose de plus intéressant.