Su conector 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 conector, estas se agrupan en conjuntos de acciones que pueden establecerse como visibles según las preferencias del usuario.
Para ver los conjuntos de acciones con los que se ha contribuido en el entorno de trabajo, elija las opciones 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 conectores 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" 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 conector) 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 conector.
¿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 conector no se ejecutará hasta que el usuario elija la acción y el entorno de trabajo ejecute la clase (class) de la acción.
Más adelante veremos las otras dos acciones, en el contexto de las acciones redirigibles.