Definere en Rich Client-applikasjon

Definisjonen av en plugin-modul for Rich Client-applikasjon begynner omtrent på samme måte som andre plugin-moduler vi har sett på. Den eneste forskjellen i filen MANIFEST.MF er at listen over obligatoriske plugin-moduler er mye mindre enn vi er vant til.

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: %pluginName
jundle-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.ui
Eclipse-AutoStart: true
Eclipse-AutoStart-comment: Bruk Eclipse-AutoStart i stedet for Eclipse-LazyStart, for nettlesereksempelet bør kjøres mot 3.1 i tillegg til 3.2.

Tidligere har vi bidratt med funksjoner i plattformens arbeidsbenk ved å deklarere utvidelser som legger til elementer i arbeidsbenken. I alt plugin.xml-innhold som vi har gått gjennom hittil, har vi bare sett på enkeltbidrag til det som antas å være en eksisterende arbeidsbenk. I Rich Client-plattformen finnes ingen ferdig definert applikasjon. Det er Rich Client-plugin-modulens ansvar å angi klassen som skal utføres når plattformen startes. Dette gjøres i utvidelsen 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>

I denne utvidelsen angir vi klassen som skal kjøres når plattformen startes. Klassen må implementere IPlatformRunnable, noe som betyr at den må implementere en run-metode. Kjøremetoden har ansvar for å opprette SWT-visningen og starte arbeidsbenken. Klassen PlatformUI implementerer bekvemmelighetsmetoder som utfører disse oppgavene.

	public Object run(Object args) throws Exception {
		Display display = PlatformUI.createDisplay();
		try {
			int code = PlatformUI.createAndRunWorkbench(display,
					new BrowserAdvisor());
			// exit the application with an appropriate return code
			return code == PlatformUI.RETURN_RESTART
					? EXIT_RESTART
					: EXIT_OK;
		} finally {
			if (display != null)
				display.dispose ();
		}
	}

Kallet til createAndRunWorkbench returnerer ikke før arbeidsbenken er avsluttet. SWT-hendelsessløyfen og annen logistikk på lavere nivåer, håndteres i denne metoden. Foreløpig er det ikke så viktig å forstå den underliggende mekanismen for kjøring av en SWT-applikasjon. Koden kan kopieres til Rich Client-applikasjonen med minimale endringer. Faktum er at du kan legge til din egen funksjonalitet via WorkbenchAdvisor, som sendes som et argument når arbeidsbenken opprettes. La oss se nærmere på dette.