"Punktem wejścia" dla dostarczenia niestandardowego zachowania dla środowiska roboczego jest wyznaczenie klasy WorkbenchAdvisor w celu skonfigurowania środowiska roboczego. Moduł dodatkowy klienta pełnego powinien rozszerzać tę klasę abstrakcyjną, aby udostępniać dla środowiska roboczego konfigurację dla konkretnej aplikacji. Przykładowa przeglądarka robi to przy użyciu klasy BrowserAdvisor.
... int code = PlatformUI.createAndRunWorkbench(display, new BrowserAdvisor()); ...
Klasa doradcy środowiska roboczego jest odpowiedzialna za przesłanianie metod w celu skonfigurowania środowiska z żądanym układem i składnikami, takimi jak pasek akcji czy strona wprowadzenia.
Metody cyklu życia udostępniane przez doradcę środowiska roboczego umożliwiają aplikacji ustawienie haka w dowolnym momencie procesu tworzenia środowiska roboczego i wpływanie na jego zachowanie. Poniższa lista metod cyklu życia doradcy, które mogą zostać przesłonięte pochodzi z dokumentacji javadoc dla klasy WorkbenchAdvisor.
initialize
- wywoływana jako pierwsza; przed wszystkimi oknami; używana do rejestracji elementów.preStartup
- wywoływana jako druga; po metodzie initialize, ale przed otwarciem pierwszego okna; używana do tymczasowego wyłączania elementów w czasie uruchamiania lub odtwarzania.postStartup
- wywoływana jako trzecia; po otwarciu pierwszego okna; używana do ponownego włączania elementów tymczasowo wyłączonych w poprzednim kroku.postRestore
- wywoływana po odtworzeniu środowiska roboczego i jego okien na podstawie wcześniej zapisanego stanu; używana do dostosowania odtworzonego środowiska roboczego.preWindowOpen
- wywoływana przy otwieraniu każdego okna; używana do konfigurowania aspektów okna innych niż paski akcji.fillActionBars
- wywoływana po metodzie preWindowOpen
w celu skonfigurowania pasków akcji okna.postWindowRestore
- wywoływana po odtworzeniu okna na podstawie wcześniej zapisanego stanu; używana do dostosowania odtworzonego okna.postWindowCreate
- wywoływana po utworzeniu okna zarówno na podstawie stanu początkowego, jak i stanu odtworzonego; używana do dostosowania okna.openIntro
- wywoływana tuż przed otwarciem okna w celu utworzenia składnika wprowadzenia, jeśli taki ma zostać utworzony.
postWindowOpen
- wywoływana po otwarciu okna; używana do ustawiania haka dla obiektów nasłuchiwania okna itp.preWindowShellClose
- wywoływana w momencie zamykania powłoki okna przez użytkownika; używana do wstępnego sprawdzenia okna przed jego zamknięciem.eventLoopException
- wywoływana do obsługi przypadku, gdy pętla zdarzeń ulega awarii; używana do informowania użytkownika o niepowodzeniu.eventLoopIdle
- wywoływana, gdy w danym momencie nie ma więcej zdarzeń do przetworzenia; używana do wykonywania innej pracy lub zajmowania wydajności procesora do czasu pojawienia się kolejnego zdarzenia w kolejce.preShutdown
- wywoływana po zakończeniu pętli zdarzeń, ale przed zamknięciem jakiegokolwiek okna; pozwala aplikacji odrzucić żądanie zamknięcia systemu.postShutdown
- wywoływana jako ostatnia; po zakończeniu pętli zdarzeń i zamknięciu wszystkich okien; używana do wyrejestrowywania elementów zarejestrowanych przez metodę initialize.Aplikacja klienta pełnego ma dużą kontrolę nad sposobem konfigurowania i instalowania środowiska roboczego. W przykładowej przeglądarce podstawową funkcją klasy BrowserAdvisor jest konfigurowanie pasków akcji z odpowiednimi dla przeglądarki elementami menu. To zadanie wykonuje metoda 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); }
W tej metodzie środowisko robocze zostało skonfigurowane ze specjalnym programem budującym akcje. Ten program budujący akcje jest używany do wypełniania pasków akcji środowiska roboczego. W sekcji Definiowanie akcji przyjrzymy się bardziej szczegółowo sposobom określania akcji. W tej chwili skoncentrujemy się na konfigurowaniu środowiska roboczego.
Należy zwrócić uwagę na zastosowanie metody getWorkbenchConfigurer() powyżej. W celu dostosowania okna interfejsy IWorkbenchConfigurer i IWorkbenchWindowConfigurer są używane w połączeniu z klasą WorkbenchAdvisor. Te klasy umożliwiają użytkownikowi zastąpienie wielu aspektów tworzenia środowiska roboczego na różnych poziomach. Interfejs IWorkbenchWindowConfigurer na przykład definiuje protokół, który zakłada konkretną konfigurację elementów sterujących w oknie środowiska roboczego, takich jak pasek akcji, wiersz statusu, pasek perspektywy, pasek coolbar itp. Jego protokół umożliwia dostosowywanie i zapełnianie tych elementów. Interfejs IWorkbenchConfigurer działa na wyższym poziomie, umożliwiając przechowywanie w środowisku roboczym danych dotyczących konkretnej aplikacji. Klasa WorkbenchAdvisor umożliwia dostęp do tych narzędzi konfiguracyjnych dzięki metodom cyklu życia opisanym powyżej. Metody niższego poziomu wewnątrz klasy WorkbenchAdvisor mogą zostać przesłonięte i całkowicie zmienić zachowanie domyślne. Doradca środowiska roboczego na przykład mógłby przesłonić metodę tworzącą w oknie element sterujący SWT w celu udostępnienia całkowicie innej implementacji okna głównego.
Inaczej mówiąc, istnieje wiele sposobów dostosowywania środowiska roboczego i kilka różnych poziomów, na których można zastosować te techniki. Dokumentacja javadoc dla klasy WorkbenchAdvisor oraz interfejsów IWorkbenchConfigurer i IWorkbenchWindowConfigurer zawiera kompletny opis dostępnego protokołu. Komentarze dotyczące alternatywnych implementacji zawiera sekcja opisująca pełną implementację klasy BrowserAdvisor.