Il "punto di ingresso" per fornire il comportamento del workbench personalizzato è la designazione di un WorkbenchAdvisor per la configurazione del workbench. Il plugin rich client deve estendere questa classe astratta per fornire la configurazione specifica dell'applicazione per il workbench. Il browser di esempio effettua questa attività mediante la classe BrowserAdvisor.
... int code = PlatformUI.createAndRunWorkbench(display, new BrowserAdvisor()); ...
Un advisor del workbench è responsabile della sostituzione dei metodi per configurare il workbench con il layout e le funzioni desiderate, ad esempio gli elementi della barra delle azioni o la pagina introduttiva.
I metodi del ciclo di vita forniti dall'advisor del workbench consentono all'applicazione di agganciarsi alla creazione del workbench in qualsiasi momento e di influenzarne il comportamento. L'elenco di seguito riportato dei metodi del ciclo di vita dell'advisor che possono essere sostituiti deriva dal javadoc relativo a WorkbenchAdvisor.
initialize
- richiamare per primo, prima di qualsiasi finestra, utilizzato per registrare elementipreStartup
- richiamare per secondo, dopo l'inizializzazione ma prima dell'apertura della prima finestra, utilizzato per disabilitare temporaneamente gli elementi durante l'avvio o il ripristinopostStartup
- richiamare per terzo, dopo l'apertura della prima finestra, utilizzato per riabilitare gli elementi temporaneamente disabilitati nella fase precedentepostRestore
- richiamare dopo la nuova creazione del workbench e delle relative finestre da uno stato precedentemente salvato, utilizzato per regolare il workbench ripristinatopreWindowOpen
- richiamare all'apertura di ciascuna finestra, utilizzato per configurare gli aspetti della finestra diversi dalle barre di azione fillActionBars
- richiamare dopo preWindowOpen
per configurare le barre di azione di una finestrapostWindowRestore
- richiamare dopo la nuova creazione di una finestra da uno stato precedentemente salvato, utilizzato per regolare la finestra ripristinatapostWindowCreate
- richiamare dopo la creazione di una finestra da uno stato iniziale o da uno stato ripristinato, utilizzato per regolare la finestraopenIntro
- richiamare subito dopo l'apertura di una finestra per creare il componente di introduzione, se esiste.postWindowOpen
- richiamare dopo l'apertura di una finestra, utilizzato per agganciarsi ai listener delle finestre e così via.preWindowShellClose
- richiamare quando la shell di una finestra viene chiusa dall'utente, utilizzato per visualizzare in precedenza la chiusura delle finestreeventLoopException
- richiamare per gestire il caso in cui il ciclo di eventi risulta danneggiato, utilizzato per informare l'utente che il sistema non funziona correttamenteeventLoopIdle
- richiamare quando non esistono altri eventi da elaborare, utilizzare per eseguire altre attività o per interrompere il funzionamento fino a quando nella coda non vengono inseriti nuovi eventipreShutdown
- richiamare solo dopo il completamento del ciclo di eventi ma prima della chiusura di una finestra, consente all'applicazione di gestire la chiusurapostShutdown
- richiamare per ultimo, dopo che il ciclo di eventi è stato terminato e che tutte le finestre sono state chiuse, utilizzare per annullare la registrazione degli elementi registrati durante l'inizializzazioneUn'applicazione rich client esercita un largo controllo sul modo in cui il workbench è configurato ed implementato. Nel browser di esempio, la funzione principale di BrowserAdvisor è quella di configurare le barre di azione con elementi di menu appropriati per un browser. Questa operazione viene effettuata nel metodo 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); }
In questo metodo, il workbench è configurato con un generatore di azioni specifico. Questo generatore viene utilizzato per inserire dati nelle barre di azione del workbench. Nella sezione Definizione delle azioni, viene illustrato nei dettagli il modo in cui le azioni sono specificate. In questa sezione, invece, viene illustrato come configurare il workbench.
Si osservi l'uso del metodo getWorkbenchConfigurer. I metodi IWorkbenchConfigurer e IWorkbenchWindowConfigurer sono utilizzati insieme al metodo WorkbenchAdvisor per personalizzare la finestra. Queste classi consentono di sostituire molti aspetti della creazione del workbench su livelli diversi. Ad esempio, il metodo IWorkbenchWindowConfigurer definisce il protocollo che presuppone una determinata configurazione di controlli nella finestra del workbench, ad esempio la barra di azione, la riga di stato, la barra della prospettiva, la barra cool e così via. Il protocollo consente di personalizzare e di inserire dati in questi elementi. Il metodo IWorkbenchConfigurer funziona ad un livello più elevato, consentendo di memorizzare i dati specifici dell'applicazione con il workbench. Il metodo WorkbenchAdvisor fornisce l'accesso a questi programmi di configurazione nei metodi del ciclo di vita riportati in alto. I metodi di livello inferiore presenti all'interno del metodo WorkbenchAdvisor, possono essere sovrascritti per sostituire completamente il comportamento predefinito. Ad esempio, l'advisor del workbench potrebbe sostituire il metodo che crea i controlli SWT nella finestra, per fornire un'implementazione completamente diversa per la finestra principale.
In altre parole, esistono diversi modi per personalizzare il workbench e diversi livelli in cui queste tecniche possono essere utilizzate. Il javadoc relativo a WorkbenchAdvisor, IWorkbenchConfigurere IWorkbenchWindowConfigurer include una descrizione completa del protocollo disponibile. Per i commenti sulle implementazioni alternative, fare riferimento anche all'implementazione completa di BrowserAdvisor.