org.eclipse.ui.menus

Declaración de limitación de responsabilidad: El punto de extensión org.eclipse.ui.menus sólo está parcialmente implementado en Eclipse 3.2. No da soporte actualmente a definiciones ni extensiones de menú o de barra de herramientas (con estos fines, deben utilizarse las extensiones de contribución existentes). Sin embargo, es el único mecanismo a través del cual pueden añadirse widgets de 'ajuste' al entorno de trabajo. En esta sección se hará una demostración de cómo utilizarlo para este propósito.

Un widget de 'ajuste' es un control que se sitúa en una ubicación (denominada 'Área de ajuste') en el límite exterior de la ventana del entorno de trabajo. El ejemplo más habitual es la 'línea de estado' genérica que la mayoría de las GUI tienen situada a lo largo de la parte inferior de la ventana. El punto de extensión org.eclipse.ui.menus permite a los plug-ins añadir vistas al entorno de trabajo. Los plug-ins que añaden ajuste deben registrarlo en su archivo plugin.xml y proporcionar información de configuración acerca del ajuste, como por ejemplo su clase de implementación, el grupo de ajuste (barra de ajuste) en el que reside e información de diseño, como por ejemplo si el ajuste desea utilizar espacio adicional disponible durante su diseño dentro del área de ajuste.

la interfaz para los ajustes añadidos se define en IWorkbenchWidget, pero los plug-ins pueden (en realidad es aconsejable) optar por ampliar la clase AbstractWorkbenchTrimWidget en lugar de implementar la interfaz desde cero.

Para el ejemplo de readmetool, se ha añadido un widget de ajuste bastante sencillo que simplemente visualiza una serie y una indicación del lado en el que el ajuste está anclado actualmente.

Observemos la definición del punto de extensión utilizada para añadir este componente de ajuste:

La primera sección de la extensión (la definición de 'group') define simplemente el ID del grupo y define una ubicación ('location') para el grupo que indica que se encuentra al principio del grupo 'status' (es decir, al principio del área de ajuste de la parte inferior). La segunda sección (la definición de 'widget') especifica la 'clase' de implementación del widget y define la ubicación ('location') del widget como situada dentro del grupo definido anteriormente.

Observe que, en ambos casos, el tipo ('type') de la barra se define como trim (que es el único tipo soportado actualmente).

Una vez instalado el ejemplo de readmetool real, observe la implementación del método fill de ReadmeTrimWidget. Este difiere de los otros métodos fill utilizados al añadir widgets a las barras de herramientas o menús en que, debido a que el ajuste puede arrastrarse de un área a otra, también pasa el lado ('side') en el que se coloca el ajuste, permitiendo que el implementador adapte la visualización del widget en función de su ubicación cambiando la orientación, etc. La implementación actual simplemente cambia el texto visualizado para reflejar la ubicación actual. Observe también cómo se ha manejado el ciclo de vida de eliminación/relleno ('dispose'/'fill'); habrá llamadas repetidas a dispose y fill generadas por los cambios del entorno de trabajo (es decir, por el cambio de perspectivas o el arrastre del ajuste a otro lado).

Un aspecto que no se refleja en el código de este ejemplo es que el gestor de diseño del ajuste se basa en la implementación adecuada por parte del ajuste del método computeSize del control del widget. El widget debe ser capaz de calcular y devolver su tamaño 'preferido', ya que éste se utiliza en toda la implementación de gestión del diseño para determinar, por ejemplo, cuánto espacio es necesario para un área de ajuste determinada. Consulte la documentación de SWT para obtener notas sobre la correcta implementación de computeSize.