Definitionen af en plugin til en Rich Client-program starter på samme måde som til andre plugins. Den eneste forskel i MANIFEST.MF er, at listen over nødvendige plugins er meget mindre end tidligere.
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-kommentar: Brug Eclipse-AutoStart i stedet for Eclipse-LazyStart, fordi browsereksemplet skal køre mod 3.1 og 3.2.
Indtil nu har du leveret funktionalitet til platformens arbejdsbænk ved at erklære udvidelser, der tilføjer elementer til arbejdsbænken. I al det plugin.xml-indhold, der er gennemgået indtil nu, er det kun individuelle leveringer til arbejdsbænken, som antages at være der. På Rich Client-platformen er der ikke defineret et program på forhånd. Rich Client-plugin'en er den, der er ansvarlig for at angive klassen, som skal udføres, når platformen startes. Det gøres i udvidelsen 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 udvidelse skal du angive den klasse, der skal udføres, når platformen startes. Denne klasse skal implementere IPlatformRunnable, som betyder, at den bare skal implementere en run-metode. Run-metoden er ansvarlig for at oprette SWT-fremvisningen og for at oprette en arbejdsbænk. Klassen PlatformUI implementerer convenience-metoder til brug for udførelse af disse opgaver.
public Object run(Object args) throws Exception { Display display = PlatformUI.createDisplay(); try { int code = PlatformUI.createAndRunWorkbench(display, new BrowserAdvisor()); // afslutter programmet med en relevant returkode return code == PlatformUI.RETURN_RESTART ? EXIT_RESTART : EXIT_OK; } finally { if (display != null) display.dispose(); } }
Kaldet til createAndRunWorkbench returneres ikke, før arbejdsbænken er lukket. SWT-aktivitetsløkken og anden logistik på lavt niveau håndteres inden i denne metode. Det er ikke nødvendigt i øjeblikket, at du forstår de underliggende mekanismer til brug for udførelse af et SWT-program. Denne kode kan kopieres til Rich Client-programmet med ganske få ændringer. Den hook, du kan bruge til at tilføje egen funktionalitet, er WorkbenchAdvisor, som overføres som et argument, når arbejdsbænken oprettes. Det skal undersøges nærmere.