Definiowanie aplikacji klienta pełnego

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.