Il est courant pour les plug-in 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-in 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 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 du navigateur. 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="%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>
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 du navigateur de ressources. Nous indiquons le libellé et les emplacements des barres de menus et d'outils pour la nouvelle action. Pour en savoir plus sur ces emplacements, consultez 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 remarquez que cette action sera activée lorsqu'il existe une sélection (enablesFor="1") du type IFile (class="org.eclipse.core.resources.IFile"), dont le nom comporte ".readme" dans l'extension du fichier (name="*.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 suffisent pour ajouter des options aux menus et à la barre d'outils puisque le code du plug-in s'exécutera uniquement lorsque l'action sera sélectionnée. Pour fournir un comportement d'action, 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 le rappel de sa vue, la gestion des changements de sélections et l'appel de son action. Lorsque l'action est appelée, elle ouvre une boîte de dialogue annonçant qu'elle a été exécutée.
public void run(org.eclipse.jface.action.IAction action) { MessageDialog.openInformation(view.getSite().getShell(), MessageUtil.getString("Readme_Editor"), MessageUtil.getString("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.