Definizione di un'applicazione rich client

La definizione del plugin di un'applicazione rich client inizia allo stesso modo degli altri plugin esaminati. The only difference in the MANIFEST.MF file is that the list of required plug-ins is much smaller than we've been used to!

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.ui
Eclipse-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.

Finora, sono state fornite funzioni alla piattaforma dichiarando le estensioni che aggiungono elementi al workbench. Nel contenuto del file plugin.xml esaminato, sono stati ricercati solo i singoli contributi a un workbench. Nella piattaforma rich client, non esistono applicazioni già definite. Il plugin rich client è l'unico responsabile della definizione della classe che deve essere eseguita all'avvio della piattaforma. Questa operazione viene eseguita nell'estensione 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>

In questa estensione, viene specificata la classe che deve essere eseguita quando la piattaforma viene avviata per la prima volta. Questa classe deve implementare il metodo IPlatformRunnable, il che significa che deve semplicemente implementare un metodo run. Il metodo run è responsabile della creazione della visualizzazione SWT e dell'avvio di un workbench. La classe PlatformUI implementa i metodi di convenienza per l'esecuzione di queste attività.

	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 ();
		}
	}

La chiamata a createAndRunWorkbench non viene restituita fino alla chiusura del workbench. Il ciclo di eventi SWT e altre logiche di livello inferiore sono gestite all'interno di questo metodo. In questa fase, non è così importante comprendere i meccanismi sottostanti nell'esecuzione di un'applicazione SWT. Questo codice può essere copiato nell'applicazione rich client con modifiche minime. In effetti, l'hook da aggiungere alle funzioni è WorkbenchAdvisor, trasferito come argomento al momento della creazione del workbench. Si osservi questo aspetto più attentamente.