Descripción: este punto de extensión permite añadir acciones al menú y a la barra de herramientas para las vistas registradas por otros conectores. Cada vista posee un menú desplegable local, que se activa generalmente al pulsar en el área superior derecha. Los otros conectores pueden contribuir suministrando submenús y acciones a este menú. Los conectores también pueden contribuir proporcionando acciones a la barra de herramientas de una vista. Los propietarios de la vista son los primeros en recibir la opción de poblar estas áreas. Las adiciones opcionales de otros conectores se añaden al final.
Códigos XML de configuración:
<!ELEMENT viewContribution (menu | action)*>
<!ATTLIST viewContribution
id
CDATA #REQUIRED
targetID CDATA #REQUIRED
>
<!ELEMENT menu (separator)+>id: identificador exclusivo que permite hacer referencia a esta contribución. targetID: identificador exclusivo de la vista (tal como se especifica en el registro) en la que se efectúa la contribución.
<!ELEMENT action (selection)* (enablement)?>name: nombre del separador, al que más adelante se puede hacer referencia como último símbolo de la vía de acceso de la acción. Por lo tanto, los separadores actúan a modo de grupos con nombre a los que pueden añadirse acciones.
En la versión 2.0 de Eclipse, puede usarse un elemento enablement para definir la habilitación de la acción. Hallará más información sobre cómo utilizar el elemento enablement en actionExpressions.html.Los criterios de habilitación de una extensión de acciones se definen inicialmente con los atributos enablesFor, selection y enablement. Sin embargo, una vez creada una instancia del delegado de la acción, dicha instancia puede controlar el estado de habilitación de la acción directamente dentro del correspondiente método selectionChanged.
Las etiquetas de acción y de menú pueden contener caracteres especiales que codifican nemotécnicos, que se especifican utilizando el carácter & delante de un carácter nemotécnico del texto traducible. Como el símbolo ampersand no está permitido en las series XML, hay que utilizar la entidad de tipo carácter &.
Si se contribuye suministrando dos o más acciones a un menú o barra de herramientas mediante una extensión individual, las acciones aparecerán en el orden inverso de como figuran en el archivo plugin.xml. Este comportamiento es definitivamente poco intuitivo. No obstante, se descubrió después de haber congelado la API de la plataforma Eclipse. Si se cambiara ahora el comportamiento, quedarían dañados todos los conectores que se basan en el comportamiento existente.
Ejemplos:
A continuación figura un ejemplo de punto de extensión de acciones de una vista (fíjese en los subelementos y en la manera de utilizar los atributos):
<extension point="org.eclipse.ui.viewActions">
<viewContribution
id="com.xyz.xyzViewC1"
targetID="org.eclipse.ui.views.ResourceNavigator">
<menu id="com.xyz.xyzMenu"
label="Menú XYZ"
path="additions">
<separator name="group1"/>
</menu>
<action id="com.xyz.runXYZ"
label="&Ejecutar herramienta XYZ"
menubarPath="com.xyz.xyzMenu/group1"
toolbarPath="Normal/XYZ"
icon="icons/runXYZ.gif"
tooltip="Ejecutar herramienta XYZ"
helpContextId="com.xyz.run_action_context"
class="com.xyz.actions.RunXYZ"
enablesFor="1"/>
<selection class="org.eclipse.core.resources.IFile" name="*.java">
</action>
</viewContribution>
</extension>
En el ejemplo anterior, la acción especificada solo se habilitará para una selección individual (atributo enablesFor). Además, cada objeto de esta selección debe implementar la interfaz especificada (IFile) y tiene que ser un archivo Java. Pueden especificarse múltiples elementos selection, lo que significa "uno de".
Información sobre las API: el valor del atributo class debe ser un nombre totalmente calificado de una clase Java que implemente org.eclipse.ui.IViewActionDelegate. Esta interfaz se cargará lo más tarde posible para evitar que se cargue todo el conector antes de que sea realmente necesario. Amplía org.eclipse.ui.IActionDelegate y añade un método adicional que permite al delegado inicializar con la instancia de vista con la que está contribuyendo.
Implementación suministrada: normalmente, cada vista viene con varios elementos estándar en el menú desplegable y en la barra de herramientas local. Las adiciones de los otros conectores se añadirán al final del complemento estándar. Es útil publicar los identificadores de las acciones de una vista dentro de una interfaz pública. Por ejemplo, las acciones y los grupos principales de la ventana del entorno de trabajo están definidos en org.eclipse.ui.IWorkbenchActionConstants.