Definitionen av en Rich Client-tillämpning börjar på ungefär samma sätt som de andra insticksprogram vi har studerat. Den enda skillnaden i filen MANIFEST.MF är att listan med nödvändiga insticksprogram är mycket kortare än vi varit vana vid!
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-kommentar: Använd Eclipse-AutoStart i stället för Eclipse-LazyStart eftersom webbläsarexemplet ska köras mot både 3.1 och 3.2.
Fram tills nu har vi bidragit med funktioner till plattformens arbetsmiljö genom att deklarera utökningar som lägger till element i arbetsmiljön. I allt plugin.xml-innehåll som vi gått igenom hittills har vi bara tittat på individuella bidrag till en arbetsmiljö som antas finnas där. På Rich Client-plattformen finns det ingen tillämpning definieras. Ditt Rich Client-insticksprogram är det som ansvarar för att ange den klass som ska köras när plattformen startas. Detta görs i utökningenorg.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 den här utökningen anger vi den klass som ska köras när plattformen startas. Den här klassen måste implementera IPlatformRunnable, vilket helt enkelt betyder att den måste implementera en run-metod. Körmetoden ansvarar för att skapa SWT-visningen och starta en arbetsmiljö. KlassenPlatformUI implementerar bekvämlighetsmetoder som utför dessa aktiviteter.
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(); } }
Anropet till createAndRunWorkbench returnerar inte förrän arbetsmiljön avslutas. SWT-händelseslingan och annan lågnivålogistik hanteras i denna metod. I det här steget är det inte så viktigt att du förstår den underliggande mekaniken för att köra en SWT-tillämpning. Den här koden kan kopieras till din Rich Client-tillämpning med minimala ändringar. Faktum är att den anslutning du kan använda till att lägga till egen funktionalitet är den WorkbenchAdvisor som skickas som argument när arbetsmiljön skapas. Låt oss ta en närmare titt.