定義豐富的用戶端應用程式

Rich Client 應用程式外掛程式的定義開始方式與我們曾研讀過的其他外掛程式很類似。MANIFEST.MF 檔中的唯一差異是所需外掛程式的清單比我們所習慣者小得多!

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.

截至目前,我們已經利用宣告新增元素到工作台的延伸來提供功能給平台工作台。到目前為止,我們檢視過的所有 plugin.xml 內容中,我們只看到假設原來就已存在的工作台個別構成要素。在 Rich Client Platform 中,並未定義任何應用程式。您的 Rich Client 外掛程式要負責指定當平台啟動時要執行的類別。這項工作是在 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>

在這個延伸中,我們指定當平台第一次啟動時應該執行的類別。這個類別必須實作 IPlatformRunnable,這只是表示必須實作 run 方法。run 方法負責建立 SWT 顯示並啟動工作台。類別 PlatformUI 實作方便執行這些作業的方法。

	public Object run(Object args) throws Exception {
		Display display = PlatformUI.createDisplay();
		try {
			int code = PlatformUI.createAndRunWorkbench(display,
					new BrowserAdvisor());
			// 結束應用程式並傳回適當的回覆碼
			return code == PlatformUI.RETURN_RESTART
					? EXIT_RESTART
					: EXIT_OK;
		} finally {
			if (display != null)
				display.dispose();
		}
	}

呼叫 createAndRunWorkbench 在工作台關閉之前將不會返回。這個方法內部處理 SWT 事件迴圈和其他低層次邏輯。在這個階段,瞭解執行 SWT 應用程式的基礎機制並不是很重要。這段程式碼只要很小的變更即可複製到您的 Rich Client 應用程式。事實上,讓您新增自己的功能的連結鉤是 WorkbenchAdvisor,在建立工作台時以引數方式傳入。讓我們更深入瞭解。