Początkowy etap definiowania wtyczki aplikacji klienta pełnego jest podobny do etapów wykonywanych podczas definiowani innych wtyczek, które zostały przeanalizowane wcześniej. Jedyną różnicą w pliku MANIFEST.MF jest fakt, że lista wymaganych wtyczek jest znacznie krótsza niż dotychczas.
Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %pluginName Bundle-SymbolicName: org.eclipse.ui.examples.rcp.browser; singleton:=true Bundle-Version: 3.2.0.qualifier Bundle-ClassPath: browser.jar Bundle-Activator: org.eclipse.ui.examples.rcp.browser.BrowserPlugin Bundle-Vendor: %providerName Bundle-Localization: plugin Require-Bundle: org.eclipse.core.runtime, org.eclipse.uiEclipse-AutoStart: true Eclipse-AutoStart-comment: Use Eclipse-AutoStart instead of Eclipse-LazyStart because the browser example should run against 3.1 as well as 3.2.
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. Wtyczka 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.