"Indgangspunktet" for angivelse af tilpasset arbejdsbænkfunktionalitet er designatoren af en WorkbenchAdvisor til brug for konfiguration af arbejdsbænken. Rich Client-plugin'en skal udvide denne abstract-klasse for at stille det programspecifikke konfiguration til rådighed for arbejdsbænken. Browser-eksemplet gør dette vha. BrowserAdvisor-klassen.
... int code = PlatformUI.createAndRunWorkbench(display, new BrowserAdvisor()); ...
En arbejdsbænk-advisor har ansvaret for at tilsidesætte metoder for at konfigurere arbejdsbænken med det ønskede layout og de ønskede funktioner, f.eks. funktionslinjeelementer eller introduktionsside.
Livscyklusmetoder, som stilles til rådighed af arbejdsbænken, giver programmet mulighed for at hægte sig på oprettelsen af arbejdsbænken på et hvilket som helst tidspunkt og at have indflydelse på funktionaliteten. Følgende liste over livscyklusmetoder for advisor, som kan tilsidesættes, stammer fra javadoc for WorkbenchAdvisor.
initialize
- første kald; før nogen vinduer; bruges til at registrere tingpreStartup
- andet kald; efter initialisering, men før det første vindue åbnes; bruges til at deaktivere ting midlertidigt under start eller gendannelse postStartup
- tredje kald; efter første vindue er åbnet; bruges til at aktivere ting igen, som er blevet midlertidigt deaktiveret i forrige trinpostRestore
- kaldes efter arbejdsbænken, og dennes vinduer er genoprettet fra en tidligere gemt tilstand; bruges til at justere den gendannede arbejdsbænkpreWindowOpen
- kaldes, mens hvert vindue åbnes;
bruges til at konfigurere andre af vinduets aspekter end funktionslinjenfillActionBars
- kaldes efter preWindowOpen
for at
konfigurere et vindues funktionslinjepostWindowRestore
- kaldes, efter et vindue er genoprettet fra en tidligere tilstand; bruges til at justere det gendannede vinduepostWindowCreate
- kaldes, efter et vindue er oprettet - enten fra den oprindelige tilstand eller fra en genoprettet tilstand; bruges til at justere vinduetopenIntro
- kaldes, umiddelbart før et vindue åbnes for at oprette introduktionskomponenten, hvis en sådan eksisterer.postWindowOpen
- kaldes, efter et vindue er åbnet; bruges bl.a. til at hægte vindueslyttere påpreWindowShellClose
- kaldes, når et vindues shell lukkes af brugeren; bruges til at vise et skærmbillede inden vindueslukningereventLoopException
- kaldes for at håndtere det problem, som bevirkede, at aktivitetsløkken brød sammen; bruges til at informere brugeren om fejleventLoopIdle
- kaldes, når der ikke er flere aktiviteter, der skal behandles; bruges til at udføre andet arbejde eller til at vente, indtil nye aktiviteter kommer i kø preShutdown
- kaldes lige efter afslutning af aktivitetsløkken, men før lukning af nogen vinduer; tillader programmet at vetoe nedlukning.postShutdown
- kaldes til sidst; når aktivitetsløkken er afsluttet, og alle vinduer er lukket; bruges til at afregistrere de ting, der er blevet registreret under initialiseringen Som du kan se, har et Rich Client-program meget kontrol over, hvordan arbejdsbænken er konfigureret og implementeret. I browsereksemplet er den primære funktion for BrowserAdvisor at konfigurere funktionslinjen med menupunkter, der er relevant for en browser. Det gøres i fillActionBars-metoden:
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); }
I denne metode konfigureres arbejdsbænken med et specialiseret funktionsbygggeprogram. Dette funktionsbyggeprogram bruges til at fylde arbejdsbænkens funktionslinjer. I Definér funktioner gennemgås det, hvordan funktioner angives. Her fokuseres på konfiguration af arbejdsbænken.
Bemærk brugen af metoden getWorkbenchConfigurer() ovenfor. IWorkbenchConfigurer og IWorkbenchWindowConfigurer bruges sammen med WorkbenchAdvisor til at tilpasse vinduet. Med disse klasser kan du tilsidesætte mange aspekter af oprettelsen af arbejdsbænken på forskellige niveau. IWorkbenchWindowConfigurer definerer f.eks. protokol, der antager en bestemt konfiguration af kontroller på arbejdsbænkens vindue, f.eks. funktionslinje, statuslinje, perspektivlinje osv. Dens protokol giver dig mulighed for at tilpasse og udfylde disse elementer. IWorkbenchConfigurer fungerer på et højere niveau og giver dig mulighed for at gemme programspecifikke data sammen med arbejdsbænken. WorkbenchAdvisor giver adgang til disse konfigurationer i ovenstående livscyklusmetoder. Metoder på lavere niveau i WorkbenchAdvisor kan tilsidesættes for helt at erstatte standardfunktionalitet. Arbejdsbænk-advisoren kan f.eks. tilsidesætte den metode, der opretter SWT-kontrollerne i vinduet, for at stille en helt anden implementering til rådighed for hovedvinduet.
Med andre ord er der mange måder at tilpasse arbejdsbænken på, og der er flere niveauer, hvorpå disse teknikker kan bruges. Javadoc for WorkbenchAdvisor, IWorkbenchConfigurer og IWorkbenchWindowConfigurer indeholder en komplet beskrivelse af den tilgængelige protokol. Se også den komplette implementering af BrowserAdvisor for at læse kommentarer om alternative implementeringer.