O "ponto de entrada" para fornecer comportamento do workbench personalizado é a atribuição de um WorkbenchAdvisor para configurar o workbench. Seu plug-in rich client deve estender essa classe abstrata para fornecer a configuração específica do aplicativo para o workbench. O exemplo do navegador faz isso utilizando a classe BrowserAdvisor.
... int code = PlatformUI.createAndRunWorkbench(display, new BrowserAdvisor()); ...
Um orientador do workbench é responsável por substituir métodos para configurar o workbench com o layout desejado e os recursos, como os itens da barra de ação ou a página de introdução.
Os métodos do ciclo de vida fornecidos pelo orientador do workbench permitem que o seu aplicativo participe da criação do workbench a qualquer momento e influencie o comportamento. A seguinte lista dos métodos do ciclo de vida do orientador que podem ser substituídos vem do javadoc para oWorkbenchAdvisor.
initialize
- chamado primeiro; antes de qualquer janela; utilizado para
registrar coisaspreStartup
- chamado em segundo; depois da inicialização, mas
antes que a primeira janela seja aberta; utilizado para desativar temporariamente as coisas durante
a inicialização ou a restauraçãopostStartup
- chamado em terceiro; depois que a primeira janela é
aberta; utilizado para reativar as coisas que foram temporariamente desativadas na etapa anteriorpostRestore
- chamado depois que o workbench e suas janelas
foram recriados a partir de um estado salvo anteriormente; utilizado para ajustar
o workbench restauradopreWindowOpen
- chamado na medida em que cada janela está sendo aberta;
utilizado para configurar aspectos da janela diferentes das barras de açãofillActionBars
- chamado depois de preWindowOpen
para
configurar uma barra de ação da janelapostWindowRestore
- chamado depois de uma janela ter sido
recriada a partir de um estado salvo anteriormente; utilizado para ajustar a janela
restauradapostWindowCreate
- chamado depois de uma janela ter sido criada,
a partir de um estado inicial ou de um estado restaurado; utilizado para ajustar a
janelaopenIntro
- chamado imediatamente antes que uma janela seja aberta
para criar o componente de introdução, se houver.
postWindowOpen
- chamado depois de uma janela ter sido
aberta; utilizado para atender os listeners da janela, etc.preWindowShellClose
- chamado quando um shell de janela
é fechado pelo usuário; utilizado para encerramentos da janela anterior à telaeventLoopException
- chamado para manipular o caso em que o loop
de evento travou; utilizado para informar o usuário que as coisas não estão bemeventLoopIdle
- chamado quando não há mais eventos atualmente a
serem processados; utilizado para executar outro trabalho ou para recuar até que
novos eventos entrem na filapreShutdown
- chamado logo depois que o loop de eventos foi encerrado,
mas antes que as janelas sejam fechadas; permite que o aplicativo vete o encerramentopostShutdown
- chamado por último, depois que o loop de eventos foi encerrado
e todas as janelas foram fechadas; utilizado para remover o registro das coisas registradas durante
a inicializaçãoComo você pode ver, um aplicativo rich client tem muito controle sobre como o workbench é configurado e implementado. No exemplo do navegador, a função principal de BrowserAdvisor é configurar as barras de ação com os itens de menu apropriados para um navegador. Isso é feito 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, o workbench é configurado com um construtor de ação especializado. Este construtor de ação é utilizado para preencher as barras de ação do workbench. Observaremos os detalhes de como as ações são especificadas em Definindo as Ações. No momento, estamos enfatizando como configurar o workbench.
Observe a utilização do método getWorkbenchConfigurer() acima. O IWorkbenchConfigurer e o IWorkbenchWindowConfigurer são utilizados em conjunto com o WorkbenchAdvisor para personalizar a janela. Essas classes permitem que você substitua muitos aspectos da criação do wrokbench em níveis diferentes. Por exemplo, o IWorkbenchWindowConfigurer define o protocolo que assume uma configuração específica dos controles na janela do workbench, como a barra de ação, linha de status, barra de perspectiva, cool bar, etc. Seu protocolo permite personalizar e ocupar esses itens. O IWorkbenchConfigurer opera em um nível superior, permitindo armazenar dados específicos do aplicativo com o workbench. O WorkbenchAdvisor fornece acesso a esses configuradores nos métodos do ciclo de vida observado acima. Os métodos de nível inferior WorkbenchAdvisor podem ser substituídos para substituir completamente o comportamento padrão. Por exemplo, seu orientador do workbench pode substituir o método que cria os controles SWT na janela para fornecer uma implementação completamente diferente para a janela principal.
Em outras palavras, há muitas maneiras de personalizar o workbench e vários níveis diferentes em que essas técnicas podem ser utilizadas. 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 obter comentários sobre implementações alternativas.