Menús, barras de herramientas y acciones de las vistas

Identificador: org.eclipse.ui.viewActions

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
   >

  • 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 menu (separator)+>
       <!ATTLIST menu
          id         CDATA #REQUIRED
          label      CDATA #REQUIRED
          path       CDATA #IMPLIED
       >    <!ELEMENT separator EMPTY>
       <!ATTLIST separator
          name       CDATA #REQUIRED
       >
  • 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.
  •    <!ELEMENT action (selection)* (enablement)?>
       <!ATTLIST action
          id                NMTOKEN #REQUIRED
          label             CDATA #REQUIRED
          menubarPath       CDATA #IMPLIED
          toolbarPath       CDATA #IMPLIED
          icon              CDATA #IMPLIED
          disabledIcon      CDATA #OPTIONAL
          hoverIcon         CDATA #OPTIONAL
          tooltip           CDATA #IMPLIED
          helpContextId     CDATA #IMPLIED
          state             (true | false) #IMPLIED
          class             CDATA #REQUIRED
          enablesFor        CDATA #IMPLIED
       >    <!ELEMENT selection EMPTY>
       <!ATTLIST selection
          class             CDATA #REQUIRED
          name              CDATA #IMPLIED
       >    <!ELEMENT enablement (and | or | not | objectClass | objectState | systemProperty
            | pluginState)>
       <!ATTLIST enablement EMPTY>
    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 &amp;.

    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="&amp;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.

    Copyright IBM Corporation y otros 2000, 2002.