El "punto de partida" para suministrar comportamiento personalizado al entorno de trabajo es la designación de un WorkbenchAdvisor para configurar el entorno de trabajo. El conector cliente rico debe ampliar esta clase abstracta para suministrar la configuración específica de la aplicación al entorno de trabajo. El ejemplo de navegador realiza esta operación mediante la clase BrowserAdvisor.
... int code = PlatformUI.createAndRunWorkbench(display, new BrowserAdvisor()); ...
Un asesor de entorno de trabajo es responsable de alterar temporalmente los métodos destinados a configurar el entorno de trabajo con su diseño y características deseados, como por ejemplo los elementos de la barra de acciones o la página de introducción.
Los métodos de ciclo de vida suministrados por el asesor del entorno de trabajo permiten a la aplicación "engancharse" a la creación del entorno de trabajo en cualquier momento e influir sobre el comportamiento. La lista siguiente de métodos de ciclo de vida del asesor que pueden alterarse temporalmente proviene del javadoc de WorkbenchAdvisor.
initialize
- se llama en primer lugar; antes de las ventanas; se utiliza para registrar elementospreStartup
- se llama en segundo lugar; después de inicializar pero antes de abrir la primera ventana; se utiliza para inhabilitar temporalmente elementos durante el inicio o la restauraciónpostStartup
- se llama en tercer lugar; después de abrir la primera ventana; se utiliza para volver a habilitar elementos temporalmente inhabilitados en el paso anteriorpostRestore
- se llama después de recrear el entorno de trabajo y sus ventanas a partir de un estado guardado anteriormente; se utiliza para ajustar el entorno de trabajo restauradopreWindowOpen
- se llama al abrir cada una de las ventanas; se utiliza para configurar aspectos de la ventana que no sean las barras de acciones fillActionBars
- se llama después de preWindowOpen
para configurar las barras de acciones de una ventanapostWindowRestore
- se llama después de recrear una ventana a partir de un estado guardado anteriormente; se utiliza para ajustar la ventana restauradapostWindowCreate
- se llama después de crear una ventana a partir de un estado inicial o a partir de un estado restaurado; se utiliza para ajustar la ventanaopenIntro
- se llama inmediatamente antes de abrir una ventana para poder crear el componente de introducción, si existepostWindowOpen
- se llama después de abrir una ventana; se utiliza para colgar los escuchas de ventana, etc.preWindowShellClose
- se llama cuando el usuario cierra la shell de una ventana; se utiliza para previsualizar los cierres de ventanaeventLoopException
- se llama para manejar el caso en el que el bucle de eventos ha fallado; se utiliza para informar al usuario del fracaso de la operacióneventLoopIdle
- se llama cuando actualmente no hay más eventos que procesar; se utiliza para realizar otros trabajos o producir hasta que nuevos eventos entran en la colapreShutdown
- se llama inmediatamente después de que un bucle de eventos haya terminado, pero antes de haber cerrado las ventanas; permite a la aplicación vetar el cierrepostShutdown
- se llama en último lugar; después de que haya terminado el bucle de eventos y se hayan cerrado todas las ventanas; se utiliza para desregistrar elementos registrados durante la inicializaciónComo puede observar, una aplicación cliente rica ejerce un gran control sobre la configuración e implementación del entorno de trabajo. En el ejemplo de navegador, la función principal de BrowserAdvisor consiste en configurar las barras de acciones con opciones de menú adecuadas para un navegador. Esta operación se realiza en el método fillActionBars:
public void fillActionBars(IWorkbenchWindow window, IActionBarConfigurer configurer, int flags) { ... BrowserActionBuilder builder = new BrowserActionBuilder(window); getWorkbenchConfigurer().getWindowConfigurer(window).setData(BUILDER_KEY, builder); builder.fillActionBars(configurer, flags); }
En este método, el entorno de trabajo se configura con un constructor de acciones especializado. Este constructor de acciones se utiliza para rellenar las barras de acciones del entorno de trabajo. Revisaremos los detalles de la especificación de acciones en la sección Definir las acciones. Por ahora, nos centraremos en la configuración del entorno de trabajo.
Observe la utilización del método getWorkbenchConfigurer() en el ejemplo anterior. IWorkbenchConfigurer e IWorkbenchWindowConfigurer se utilizan conjuntamente con WorkbenchAdvisor para personalizar la ventana. Estas clases permiten alterar temporalmente muchos aspectos de la creación del entorno de trabajo a diferentes niveles. Por ejemplo, IWorkbenchWindowConfigurer define un protocolo que presupone una configuración de controles determinada en la ventana del entorno de trabajo, como por ejemplo una barra de acciones, una línea de estado, una barra de perspectivas, una barra de elementos de interés, etc. Su protocolo le permite personalizar y llenar estos elementos. IWorkbenchConfigurer opera a un nivel superior, permitiendo almacenar datos específicos de aplicaciones en el entorno de trabajo. WorkbenchAdvisor proporciona acceso a estos configuradores en los métodos de ciclo de vida indicados anteriormente. Los métodos de nivel inferior de WorkbenchAdvisor pueden alterarse temporalmente para sustituir por completo el comportamiento por omisión. Por ejemplo, el asesor del entorno de trabajo puede alterar temporalmente el método que crea los controles SWT en la ventana a fin de suministrar una implementación completamente diferente de la ventana principal.
En otras palabras, existen muchas formas de personalizar el entorno de trabajo y varios niveles diferentes a los que pueden utilizarse estas técnicas. El javadoc de WorkbenchAdvisor, IWorkbenchConfigurer e IWorkbenchWindowConfigurer incluye una descripción completa del protocolo disponible. Consulte también la implementación completa de BrowserAdvisor para conocer implementaciones alternativas.