O "ponto de entrada" para facultar comportamento de área de trabalho personalizado é a designação de um WorkbenchAdvisor para configurar a área de trabalho. O plug-in de cliente complexo deve estender esta classe abstracta para facultar a configuração específica de aplicação à área de trabalho. O exemplo de browser fá-lo com a classe BrowserAdvisor.
... int code = PlatformUI.createAndRunWorkbench(display, new BrowserAdvisor()); ...
Um consultor de área de trabalho é responsável pela sobreposição de métodos para configurar a área de trabalho com o esquema e as funções pretendidas como, por exemplo, artigos de barra de acções ou página de introdução.
Os métodos de ciclo de vida facultados pelo consultor de área de trabalho permitem à aplicação ligar-se à criação da área de trabalho em qualquer altura e influenciar o seu comportamento. A lista seguinte de métodos de ciclo de vida de consultor que podem ser sobrepostos é oriunda do javadoc para WorkbenchAdvisor.
initialize
- chamado primeiro; antes de quaisquer janelas; utilizado para registar coisas preStartup
- chamado em segundo lugar; depois de initialize mas antes da primeira janela se aberta; utilizado para desactivar temporariamente coisas durante o arranque ou o restauro postStartup
- chamado em terceiro lugar; após a primeira janela se abrir; utilizado para reactivar coisas temporariamente desactivadas no passo anterior postRestore
- chamado depois de a área de trabalho e suas janelas serem recriadas a partir de um estado anteriormente guardado; utilizado para ajustar a área de trabalho restaurada preWindowOpen
- chamado à medida que se abre cada janela; utilizado para configurar aspectos da janela além das barras de acções fillActionBars
- chamado depois de preWindowOpen
para configurar as barras de acções de uma janela postWindowRestore
- chamado depois de uma janela ser recriada a partir de um estado anteriormente guardado; utilizado para ajustar a janela restaurada postWindowCreate
- chamado depois de uma janela ter sido criada, quer a partir de um estado inicial quer restaurado; utilizado para ajustar a janela openIntro
- chamado imediatamente antes de uma janela se abrir para criar o componente de introdução, se o houver. postWindowOpen
- chamado depois de uma janela ser aberta; utilizado para ligar ouvintes de janela via gancho, etc. preWindowShellClose
- chamado quando a shell (interface) de uma janela ser fechada pelo utilizador; utilizado para prever fechos de janelas eventLoopException
- chamado para tratar do caso em que o ciclo de eventos tenha fracassado; utilizado para informar o utilizador de que algo não vai bem eventLoopIdle
- chamado quando não houver mais eventos a processar; utilizado para executar outros trabalhos ou para dar a vez até que outros eventos entrem na fila preShutdown
- chamado logo após o ciclo de eventos terminar mas antes de se fecharem quaisquer janelas; permite à aplicação vetar o encerramento postShutdown
- chamado em último; após o ciclo de eventos terminar e de se fecharem todas as janelas; utilizado para anular registos a coisas registadas durante o método initializeComo podemos ver, uma aplicação cliente complexa tem muito controlo sobre a configuração e implementação da área de trabalho. No exemplo de browser, o principal papel do BrowserAdvisor é configurar as barras de acções com artigos de menu apropriados para um browser. Tal realiza-se no 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); }
Neste método, a área de trabalho é configurada com um construtor de acções especializado. Este construtor de acções é usado para preencher as barras de acções da área de trabalho. Veremos os detalhes da especificação de acções em Definir as acções. Por agora, focamos a configuração da área de trabalho.
Repare na utilização do método getWorkbenchConfigurer() supra. O IWorkbenchConfigurer e o IWorkbenchWindowConfigurer são utilizados junto com o WorkbenchAdvisor para personalizar a janela. Estas classes permitem sobrepor muitos aspectos da criação da área de trabalho a vários níveis. Por exemplo, o IWorkbenchWindowConfigurer define protocolo que presume determinada configuração de controlos na janela da área de trabalho como, por exemplo, barra de acções, linha de estado, barra de perspectiva, #cool bar, etc. O protocolo permite personalizar e preencher estes artigos. O IWorkbenchConfigurer funciona a um nível mais elevado, permitindo armazenar dados específicos de aplicação com a área de trabalho. O WorkbenchAdvisor faculta acesso a estes configuradores nos métodos de ciclo de vida mencionados supra. Os métodos de nível mais baixo dentro de WorkbenchAdvisor podem ser sobrepostos para substituir totalmente comportamento predefinido. Por exemplo, o consultor da área de trabalho poderá sobrepor o método que cria os controlos de SWT na janela a fim de facultar uma implementação completamente diferente para a janela principal.
Por outras palavras, há muitas maneiras de personalizar a área de trabalho e vários níveis diferentes nos quais se podem utilizar estas técnicas. O javadoc para WorkbenchAdvisor, IWorkbenchConfigurer e IWorkbenchWindowConfigurer inclui uma descrição completa do protocolo disponível. Consulte também a implementação completa do BrowserAdvisor para ver comentários sobre implementações alternativas.