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
.