Description : ce point d'extension est utilisé pour ajouter des menus, des options de menu et des boutons de barre d'outils aux zones communes de la fenêtre du plan de travail. Ces contributions sont collectivement connues sous le nom de jeux d'actions et apparaissent dans la fenêtre du plan de travail lorsque l'utilisateur personnalise une perspective.
L'activation et/ou visibilité d'une action se définissent respectivement à l'aide des éléments enablement et visibility. Ces deux éléments contiennent une expression booléenne qui entraîne l'activation et/ou la visibilité.
La syntaxe des éléments enablement et visibility est identique. Ils contiennent chacun un unique sous-élément d'expression booléenne. Dans les cas les plus simples, il s'agit d'un élément objectClass, objectState, pluginState ou systemProperty. Dans les cas plus complexes, les éléments and, or et not peuvent être combinés pour former une expression booléenne. Les éléments and et or doivent chacun contenir 2 sous-éléments. L'élément not ne doit en contenir qu'un.
Marques de configuration :
<!ELEMENT
extension
(actionSet+)>
<!ATTLIST extension
point CDATA #REQUIRED
id CDATA #IMPLIED
name CDATA #IMPLIED
>
<!ELEMENT actionSet (menu* , action*)>
Cet élément définit un groupe d'actions et/ou de menus.
<!ATTLIST actionSet<!ELEMENT action (selection* | enablement?)>
Cet élément définit une action que l'utilisateur peut appeler dans l'interface utilisateur.
<!ATTLIST actionpush | option de menu ou d'outil classique. | |
radio | option de menu ou d'outil de style bouton d'option. Les actions de type option du même menu ou de la même barre d'outils se comportent comme un ensemble de boutons d'option. La valeur initiale est définie par l'attribut state. | |
toggle | - case à cocher ou bouton d'activation/désactivation. La valeur initiale est définie par l'attribut state. | |
pulldown | - menu en cascade ou déroulant en regard de l'élément de barre d'outils. |
! | - aucun élément sélectionné | |
? | - aucun ou un élément sélectionné | |
+ | - un ou plusieurs éléments sélectionnés | |
multiple, 2+ | - deux ou plusieurs éléments sélectionnés | |
n | - nombre précis d'éléments sélectionnés. Par exemple : enablesFor=" 4" active l' action uniquement lorsque 4 éléments sont sélectionnés. | |
* | - n'importe quel nombre d'éléments sélectionnés |
<!ELEMENT menu (separator+ , groupMarker*)>
Cet élément définit un nouveau menu.
<!ATTLIST menu<!ELEMENT separator EMPTY>
Cet élément crée un séparateur de menu dans le nouveau menu.
<!ATTLIST separator<!ELEMENT groupMarker EMPTY>
Cet élément crée un groupe nommé dans le nouveau menu. Il ne possède aucune représentation visuelle dans le nouveau menu, à la différence de l'élément separator.
<!ATTLIST groupMarker<!ELEMENT selection EMPTY>
Cet élément détermine l'activation de l'action en fonction de la sélection courante. Ignoré si l'élément enablement n'est pas spécifié.
<!ATTLIST selection<!ELEMENT enablement (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Cet élément définit l'activation de l'action.
<!ELEMENT visibility (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Cet élément définit la visibilité de l'action.
<!ELEMENT and (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Cet élément représente une opération booléenne AND en résultat de l'évaluation de ses deux expressions de sous-élément.
<!ELEMENT or (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Cet élément représente une opération booléenne OR en résultat de l'évaluation de ses deux expressions de sous-élément.
<!ELEMENT not (and | or | not | objectClass | objectState | pluginState | systemProperty)>
Cet élément représente une opération booléenne NOT en résultat de l'évaluation de ses deux expressions de sous-élément.
<!ELEMENT objectClass EMPTY>
Cet élément évalue la classe ou l'interface de chaque objet de la sélection courante. Si chaque objet de la sélection implémente la classe ou l'interface spécifiée, l'expression est considérée vraie.
<!ATTLIST objectClass<!ELEMENT objectState EMPTY>
Cet élément évalue l'état d'attribut de chaque objet de la sélection courante. Si chaque objet de la sélection présente l'état d'attribut spécifié, l'expression est considérée vraie. Pour évaluer ce type d'expression, chaque objet de la sélection doit implémenter (ou s'adapter à) l'interface org.eclipse.ui.IActionFilter.
<!ATTLIST objectState<!ELEMENT pluginState EMPTY>
Cet élément évalue l'état d'un plug-in. L'état du plug-in est installé ou activé.
<!ATTLIST pluginState<!ELEMENT systemProperty EMPTY>
Cet élément évalue l'état de certaines propriétés système. La valeur de la propriété système est déterminée en appelant java.lang.System.
<!ATTLIST systemProperty
<extension point = "org.eclipse.ui.actionSets"> <actionSet id="com.xyz.actionSet" label="My Actions"> <menu id="com.xyz.xyzMenu" label="XYZ Menu" path="additions"> <separator name="group1"/> <separator name="option1"/> </menu> <action id="com.xyz.runXYZ" label="&Run XYZ Tool" style="toggle" state="false" menubarPath="com.xyz.xyzMenu/group1" icon="icons/runXYZ.gif" tooltip="Run XYZ Tool" helpContextId="com.xyz.run_action_context" class="com.xyz.actions.RunXYZ" enablesFor="1"> <selection class="org.eclipse.core.resources.IFile" name="*.java"/> </action> <action id="com.xyz.runABC" label="&Run ABC Tool" style="push" menubarPath="com.xyz.xyzMenu/group1" toolbarPath="Normal/XYZ" icon="icons/runABC.gif" tooltip="Run ABC Tool" helpContextId="com.xyz.run_abc_action_context" retarget="true" allowLabelUpdate="true"> <enablement> <and> <objectClass name="org.eclipse.core.resources.IFile"/> <not> <objectState name="extension" value="java"/> </not> </and> </enablement> </action> <action id="com.xyz.runDEF" label="&Run DEF Tool" style="radio" state="true" menubarPath="com.xyz.xyzMenu/option1" icon="icons/runDEF.gif" tooltip="Run DEF Tool" class="com.xyz.actions.RunDEF" helpContextId="com.xyz.run_def_action_context"> </action> <action id="com.xyz.runGHI" label="&Run GHI Tool" style="radio" state="false" menubarPath="com.xyz.xyzMenu/option1" icon="icons/runGHI.gif" tooltip="Run GHI Tool" class ="com.xyz.actions.RunGHI" helpContextId="com.xyz.run_ghi_action_context"> </action> <action id ="com.xyz.runJKL" label="&Run JKL Tool" style="radio" state="false" menubarPath ="com.xyz.xyzMenu/option1" icon="icons/runJKL.gif" tooltip="Run JKL Tool" class="com.xyz.actions.RunJKL" helpContextId ="com.xyz.run_jkl_action_context"> </action> </actionSet> </extension>
Dans l'exemple ci-dessus, le jeu d'actions spécifié, désigné par "My Actions", n'est pas initialement visible dans chaque perspective car l'attribut visible n'est pas spécifié.
L'action XYZ apparaîtra sous forme de case à cocher de menu, initialement non cochée. Elle n'est activée que si le nombre de sélections est égal à 1 et si la sélection contient une ressource de fichier Java.
L'action ABC apparaît à la fois dans le menu et dans la barre d'outils. Elle n'est activée que si la sélection ne contient pas de ressource de fichier Java. Comme il s'agit d'une action de redirection de libellé, aucun attribut class n'est proposé.
Les actions DEF, GHI et JKL apparaissent en tant que boutons d'option de menu. Elles sont en permanence activées, quel que soit l'état de la sélection courante.
Informations d'API : la valeur de l'attribut class doit être le nom complet qualifié d'une classe qui implémente org.eclipse.ui.IWorkbenchWindowActionDelegate ou org.eclipse.ui.IWorkbenchWindowPulldownDelegate. Le second devant être implémenté lorsque l'attribut style a la valeur pulldown. Cette classe est le gestionnaire chargé d'exécuter l'action. Si l'attribut retarget a la valeur true, il est ignoré et ne doit pas être fourni.Cette classe est chargée aussi tardivement que possible afin d'éviter le chargement du plug-in tout entier avant que cela ne soit réellement nécessaire.
Les critères d'activation d'une extension d'action d'action sont initialement définis par enablesFor, et aussi par selection ou enablement. Cependant, une fois le délégué d'action instancié, il peut contrôler l'état d'activation de l'action directement dans sa méthode selectionChanged.
Notez que le plan de travail ne génère pas de menus à la demande de plug-in. Les chemins de menus doit faire référence à des menus existant déjà.
Les libellés d'actions et de menus peuvent contenir des caractères spéciaux qui encodent les mnémoniques en respectant les règles suivantes :
Les éléments selection et enablement sont mutuellement exclusifs. L'élément enablement peut remplacer l'élément selection en utilisant les sous-éléments objectClass et objectState. Par exemple :
<selection class="org.eclipse.core.resources.IFile" name="*.java"> </selection>peut s'exprimer comme suit :
<enablement> <and> <objectClass name="org.eclipse.core.resources.IFile"/> <objectState name="extension" value="java"/> </and> </enablement>
Implémentation fournie : les plug-in peuvent utiliser ce point d'extension pour ajouter de nouveaux menus de niveau supérieur. Les plug-in peuvent également définir des groupes désignés qui permettent aux autres plug-in d'y ajouter leurs actions.
Des menus de niveau supérieur sont créés à l'aide de la valeur suivante pour l'attribut path :
Les groupes par défaut dans une fenêtre du plan de travail sont définis dans l'interface IWorkbenchActionConstants. Ces constantes peuvent être utilisées dans du code pour une contribution dynamique. Les valeurs peuvent être également copiées dans un fichier XML pour une intégration étroite aux menus et à la barre d'outils existants dans le plan de travail.
Plusieurs éléments des menus et de la barre d'outils de la fenêtre du plan de travail sont définis par algorithme. Dans ce cas, un mécanisme distinct doit être utilisé pour étendre la fenêtre. Par exemple, ajoutez une nouvelle vue de plan de travail pour faire apparaître une nouvelle option dans le menu Perspective. Les extensions Importation, Exportation et Nouveaux assistants sont également ajoutées automatiquement à la fenêtre.
Copyright (c) 2000, 2003 IBM Corporation and others.
All rights reserved. Ce programme et les produits qui l'accompagnent
sont fournis sous licence v1.0 associée à cette distribution et
disponibles à l'adresse suivante :
http://www.eclipse.org/legal/cpl-v10.html