Su plug-in puede contribuir suministrando menús, elementos de menú y elementos de barra de herramientas a los menús y barras de herramientas del entorno de trabajo utilizando el punto de extensión org.eclipse.ui.actionSets. Para reducir el desorden que se produciría si se mostrasen a la vez todas las contribuciones de menú de cada plug-in, estas se agrupan en conjuntos de acciones que pueden establecerse como visibles según las preferencias del usuario.
Para ver los conjuntos de acciones que se han añadido al entorno de
trabajo, elija
Ventana > Personalizar perspectiva...
en el menú del entorno de trabajo. Esta opción abre un diálogo en el que
figuran los conjuntos de acciones en forma de grupos de mandatos. Si hay una marca de
selección junto a un grupo de mandatos, las acciones de la barra de menús y de la barra de
herramientas estarán visibles en el entorno de trabajo.
Puede seleccionar el nombre del
grupo de mandatos para ver la lista de acciones de menú y de barra de herramientas disponibles en el lado
derecho. La figura siguiente muestra la lista de grupos de mandatos
disponibles en el entorno de trabajo. (Su entorno de trabajo puede ser
diferente, en función de los plug-ins que haya instalado y de qué perspectiva
esté activa).
La herramienta readme emplea un conjunto de acciones para suministrar varias acciones distintas de tipo "Abrir navegador del readme" al menú del entorno de trabajo. (Hemos suministrado una acción similar al menú emergente del navegador de recursos).A continuación figuran los códigos XML:
<extension point = "org.eclipse.ui.actionSets"> <actionSet id="org_eclipse_ui_examples_readmetool_actionSet" label="%ActionSet.name" visible="true"> <menu id="org_eclipse_ui_examples_readmetool" label="%ActionSet.menu" path="window/additions"> <separator name="slot1"/> <separator name="slot2"/> <separator name="slot3"/> </menu> <action id="org.eclipse.ui.examples.readmetool.readmeAction" menubarPath="window/org_eclipse_ui_examples_readmetool/slot1" toolbarPath="readme" label="%ReadmeAction.label" tooltip="%ReadmeAction.tooltip" helpContextId="org.eclipse.ui.examples.readmetool.open_browser_action_context" icon="icons/ctool16/openbrwsr.png" class="org.eclipse.ui.examples.readmetool.WindowActionDelegate" definitionId="org.eclipse.ui.examples.readmetool.readmeAction" enablesFor="1"> <selection class="org.eclipse.core.resources.IFile" name="*.readme"> </selection> </action> ... </actionSet> </extension>
Hay mucho que explicar en estos códigos XML. Vayamos paso a paso y examinemos solamente la primera acción por ahora.
En primer lugar, se declara el conjunto de acciones y se le proporciona una etiqueta, en el atributo label. La etiqueta "Acciones del readme" (definida para la clave %ActionSet.name en el archivo de propiedades del plug-in) sirve para visualizar el conjunto de acciones en el diálogo mostrado más arriba. Dado que establecemos la propiedad visible en el valor true, el entorno de trabajo tendrá inicialmente marcado este conjunto de acciones en la lista de conjuntos, y las acciones estarán visibles.
El resto de la declaración del conjunto de acciones se ocupa de definir el menú en el que figuran las acciones y luego las propias acciones.
Definimos un menú cuya etiqueta, atributo label, aparece en los menús del entorno de trabajo. La vía de acceso, atributo path, del menú indica al entorno de trabajo que coloque el nuevo menú en la ranura additions del menú Ventana, window. (Hallará una descripción de las vías de acceso de los menús y de las ranuras en el tema Vías de acceso de los menús y barras de herramientas).También definimos algunas ranuras en nuestro nuevo menú, para que las acciones se puedan insertar en ubicaciones específicas del menú.
Estos códigos XML pueden hacer por sí mismos que el menú aparezca en el menú Ventana del entorno de trabajo.
Ahora definiremos las acciones.
La definición de acción (atributos id, label, icon, class) es similar a la de otras acciones que hemos visto en las vistas, editores y menús emergentes. Aquí nos centraremos en lo que las distingue: ¿dónde se situará la acción? Empleamos los atributos menubarPath y toolbarPath para indicar su ubicación. Primero definimos el atributo menubarPath para añadir la acción a una ranura del menú que acabamos de definir ("window/org_eclipse_ui_examples_readmetool/slot1").
A continuación, definimos un nuevo atributo toolbarPath para insertar nuestras acciones en la barra de herramientas del entorno de trabajo. Como hemos definido una nueva vía de acceso a la barra de herramientas, "readme", el entorno de trabajo decidirá dónde se va a situar en relación con las otras contribuciones de barra de herramientas del plug-in.
¿Qué ocurre cuando el usuario selecciona la acción? La clase especificada en el atributo class implementa la acción. La clase de la acción debe implementar IWorkbenchWindowActionDelegate o IWorkbenchWindowPulldownDelegate si la acción va a aparecer como opción de menú desplegable en la barra de herramientas. Puesto que no estamos creando una opción de menú desplegable, indicamos WindowActionDelegate. Esta clase es similar a ObjectActionDelegate. Lanza el diálogo de secciones de readme cuando el usuario elige la acción. (Trataremos el diálogo de secciones en el tema Diálogos de aplicación.)
La acción también suministra las condiciones de habilitación del elemento de menú y del elemento de barra de herramientas. Los elementos de menú y barra de herramientas solo se habilitarán cuando se seleccione un único (enablesFor="1") archivo readme (selectionClass ="org.eclipse.core.resources.IFile" name="*.readme"). Los elementos de menú y barra de herramientas de esta acción aparecerán y quedarán habilitados en virtud de los códigos XML del archivo plugin.xml. El código del plug-in no se ejecutará hasta que el usuario elija la acción y el entorno de trabajo ejecute la clase (class) de la acción.
definitionId permite enlazar la acción con un mandato creado por la extensión org.eclipse.ui.commands, que puede utilizarse para enlaces de teclas. Todas las acciones de un actionSets deben estar enlazadas con un mandato, ya sean mandatos existentes suministrados por el entorno de trabajo o mandatos creados por el plug-in que realiza contribuciones. Consulte la sección Mandatos.
Más adelante veremos las otras dos acciones, en el contexto de las acciones redirigibles.