簡單地講 , 一個 RCP 應用就是一個可獨立於 Eclispe IDE 開發環境啟動並執行 Eclipse 外掛程式 。 下面我們以一個簡單的例子開始我們的 RCP 旅程 。
一、 建立外掛程式工程 因為 RCP 應用本身就是一個 Eclispe 外掛程式 , 所以從建立一個 Eclispe 外掛程式工程開始 。 1) 啟動 Eclispe, 從 Eclispe 的 File 菜單建立一個外掛程式工程 : File -> New -> Project -> Plug-in Development -> Plug-in Project 點擊 Next, 進入 New Plug-in Project 外掛程式嚮導 : 在 Project Name 中輸入工程名稱 : simplebrowser ( 最好小寫 ) 。 勾選 “ Create an OSGi bundle mainfest ” 使用 OSGi 打包清單 。 OSGi 是 Eclipse 3.0 以上版本用於動態裝載外掛程式的標準 , 在 Eclipse 2.1 中是不需要的 。 最好選中它 。 點擊 Next 按鈕 。 修改 Plug-in ID 及其他外掛程式屬性值 。 這裡採用預設值 , 在 “ Rich Client Application ” 一欄中 , “ Would you like to create a rich client application ? ” 一項選擇 “ Yes ” 設定建立的外掛程式為 RCP 應用 。 點擊 Next 。 在模板中選擇最基本的 Hello RCP 模板 , 點擊 “ Finish ” 按鈕 , Eclispe 將會建立一個簡單的 RCP 應用並且自動開啟外掛程式清單編輯器的首頁面 。 在這裡你可以方便的配置你的 RCP 應用 , 免去手工編寫和修改設定檔的麻煩 。 在外掛程式清單編輯器的 OverView 頁 , 點擊 “ Launch an Eclipse application ” 連結就會看到你的 RCP 應用運行時的樣子 。 2) 工程建立完成後 , Eclipse 將自動產生以下內容 : Application 類 ApplicationActionBarAdvisor 類 ApplicationWorkbenchAdvisor 類 ApplicationWorkbenchWindowAdvisor 類 SimplebrowserPlugin 類 Perspective 類 plugin.xml 檔案 build.properties 檔案
a) Application
類 Application 類是 RCP 應用的主程式 , 相當於整個 RCP 應用的控制器 。 Application 類的職責是建立一個工作台 (Workbench) 然後添加一個工作台顧問類 (WorkbenchAdvisior) 。 它是啟動 RCP 應用啟動並執行第一個程式 。 這個類實現了 Eclipse 的 IPlatformRunnable 介面 。 對於絕大多數的 RCP 應用 , 這個類的代碼都是不用修改的 。 工作台 (Workbench) 是 RCP 架構的一部分 , 一個 RCP 應用只能有一個工作台 , 但是可以有多個工作台視窗 (WorkbenchAdvisior) 。 工作台的結構如下 :
b) Advisor
類 ApplicationActionBarAdvisor , ApplicationWorkbenchAdvisor 和 ApplicationWorkbenchWindowAdvisor 這三個類是 RCP 應用的三個核心 Advisor 類 。 它們都繼承於相應的抽象 Advisor 父類 。 是 RCP 應用生命週期中非常重要的三個類 。
ApplicationWorkbenchAdvisor 在主程式 Application 類的 run() 方法中引用了 ApplicationWorkbenchAdvisor 類 。 這個 Workbench Advisor 類對 Workbench 的外觀進行了配置 。 ApplicationWorkbenchAdvisor 繼承了 WorkbenchWindowAdvisor 抽象類別 , 外掛程式工程嚮導自動填滿了 createWorkbenchWindowAdvisor 和 getInitialWindowPerspectiveId 方法體 , 我們同樣可以覆寫 ( override ) 父類的其他方法 。 這個類的方法會在工作台 ( Workbench ) 的生命週期的各個關鍵時刻由 RCP 平台叫用 。 是最重要的一個 Advisor 類 。 下面是對 Workbench Advisor 類中幾個重要的方法的簡要說明 :
| 方法 |
說明 |
| initialize |
在啟動工作台 ( Workbench ) 前進行初始化 。 這個方法有只有一個 參數 : IWorkbenchConfigurer |
| preStartup |
在初始化完成之後 , 開啟第一個視窗之前調用 , 在這裡可以對開啟編輯器和視圖的初始化參數進行設定 。 |
| postStartup |
在所有視窗開啟或恢複以後開始事件迴圈之前調用 。 在這裡可以進行一些類似自動批處理的工作 。 |
| preShutdown |
在事件迴圈結束以後 , 關閉任何一個視窗之前調用 |
| postShutdown |
在所有視窗關閉之後 , 關閉工作台 ( Workbench ) 之前調用 , 可以用來儲存當前應用的狀態 , 清理 initialize 方法建立的內容 |
現在我們不需要對這個類進行任何修改 。
ApplicationWorkbenchWindowAdvisor ApplicationWorkbenchWindowAdvisor 繼承了 WorkbenchWindowAdvisor 類 , 這個類主要負責對 Worbench Window 進行控制 , 例如狀態列 , 工具條 , 標題 , 視窗尺寸等 。 這個類中的方法在 Workbench Window 的生命週期中起著重要作用 。
| 方法 |
說明 |
| preWindowOpen |
在 WorkBench Window 的建構函式中調用 , 用於設定視窗的一些特徵 , 如 是否顯示狀態列 。 但是這個時候還沒有建立任何表單控制項 , 所以在這裡還不能引用它們 。 |
| postWindowRestore |
在視窗恢複到以前儲存的狀態之後 , 開啟視窗之前調用這個方法在建立視窗 , Workbench 第一次運行 , 以及沒有儲存視窗狀態的情況下都不會調用 。 在這裡可以調用 IWorkbench.close() 方法關閉 Workbench 和所有開啟的 Workbench Window 。 |
| postWindowCreate |
在視窗建立以後 , 開啟以前調用 。 或者是視窗恢複到以前儲存的狀態後 , 在執行 postWindowRestore 方法之後調用 |
| openIntro |
Intro 就是你第一次開啟 Eclispe 的時候看到的內容 , 這個方法的預設的實現是 : 如果 IWorkbenchPreferences.SHOW_INTRO 屬性被設定為 True , 那麼在第一次開啟視窗的時候將會調用這個方法 , 在 Intro 顯示過之後該屬性將會設定為 False 。 後來 , 只有在 WorkbenchConfigurer.getSaveAndRestore() 方法返回 True , 並且關閉視窗時 intro 仍然顯示的時候才會調用這個方法 。 |
| postWindowOpen |
在 Workbench 視窗開啟之後調用 , 可以在這裡開 / 關 (Tweak) 表單控制項 , 例如設定 Title, 改變視窗尺寸等等 。 |
| preWindowShellClose |