Początkowy etap definiowania modułu dodatkowego aplikacji klienta pełnego jest podobny do etapów wykonywanych podczas definiowani innych modułów dodatkowych, które zostały przeanalizowane wcześniej. Jedyną różnicą w pierwszej części kodu jest lista wymaganych modułów dodatkowych, która jest znacznie krótsza niż zazwyczaj.
<?xml version="1.0" encoding="UTF-8"?> <?eclipse version="3.0"?> <plugin id="org.eclipse.ui.examples.rcp.browser" name="%pluginName" version="3.0.0" provider-name="%providerName"> <runtime> <library name="browser.jar"> </library> </runtime> <requires> <import plugin="org.eclipse.core.runtime"/> <import plugin="org.eclipse.ui"/> </requires>
Do tej pory dodawaliśmy funkcję do środowiska roboczego platformy, deklarując rozszerzenia, które dodawały do niego elementy. We wszystkich plikach plugin.xml do tej pory przyglądaliśmy się jedynie pojedynczym elementom dodawanym do środowiska roboczego, które powinny się tam znajdować. Na platformie klienta pełnego nie ma żadnych zdefiniowanych wcześniej aplikacji. Moduł dodatkowy klienta pełnego odpowiada za określenie klasy, która powinna zostać uruchomiona wraz z platformą. W tym celu należy użyć rozszerzenia org.eclipse.core.runtime.applications.
<extension point="org.eclipse.core.runtime.applications" id="app" name="%appName"> <application> <run class="org.eclipse.ui.examples.rcp.browser.BrowserApp"> </run> </application> </extension>
W tym rozszerzeniu określamy klasę, która powinna zostać uruchomiona wraz z pierwszym uruchomieniem platformy. Ta klasa musi implementować interfejs IPlatformRunnable, co oznacza po prostu, że musi implementować metodę run. Metoda run odpowiada za utworzenie ekranu SWT i uruchomienie platformy. Gotowe do użycia metody pozwalające wykonać te czynności zostały zaimplementowane w klasie PlatformUI.
public Object run(Object args) throws Exception { Display display = PlatformUI.createDisplay(); try { int code = PlatformUI.createAndRunWorkbench(display, new BrowserAdvisor()); // Zamyka aplikację, zwracając odpowiedni kod. return code == PlatformUI.RETURN_RESTART ? EXIT_RESTART : EXIT_OK; } finally { if (display != null) display.dispose(); } }
Wywołanie metody createAndRunWorkbench nie zwróci wartości, dopóki środowisko robocze nie zostanie zamknięte. Pętla zdarzeń SWT oraz inne logiki niskiego poziomu są obsługiwane wewnątrz tej metody. Na tym etapie znajomość bazowych mechanizmów działających wewnątrz aplikacji SWT nie jest taka istotna. Po wprowadzeniu minimalnych zmian ten kod można skopiować do aplikacji klienta pełnego. Hakiem umożliwiającym dodanie nowej funkcjonalności jest obiekt WorkbenchAdvisor, który jest przekazywany jako argument w momencie tworzenia środowiska roboczego. Przyjrzyjmy mu się bliżej.