1. 程式人生 > >rcp(外掛開發)深入淺出Eclipse RCP(1):Hello RCP 轉載

rcp(外掛開發)深入淺出Eclipse RCP(1):Hello RCP 轉載

寫的很詳細,以下是原文連結:

Eclipse RCP(Rich Client Platform)允許開發者使用Eclipse架構設計靈活的、可擴充套件的、美觀的應用程式。本系列希望通過層層深入的介紹,一步一步帶您進入Eclipse RCP的玄妙世界。

第一個RCP程式

開啟Eclipse,新建一個Plug-in Project,點選Next。在Project name文字框中輸入專案名稱net.kirin.rcp.hello,如下圖所示。

image

點選Next,如下圖所示,在“Would you like to create a rich client application?”後面選中Yes。其餘均可保留預設值。

image

點選Next,選擇Hello RCP模板。

image

點選Next,開啟如下對話方塊,各項均可保留預設值。

image

點選Finish,將建立結構如下的專案。

image

雙擊MANIFEST.MF檔案,將開啟一個名為Overview的介面,點選Launch an Eclipse application,

image

結果如下圖所示。

image

這就是我們的第一個RCP程式。當然,我們沒有寫一行程式碼,完全是Hello RCP模板自動為我們建立的。

程式碼解析

可以看到,RCP模板自動為我們建立了Application.java、ApplicationActionBarAdvisor.java、ApplicationWorkbenchAdvisor.java、ApplicationWorkbenchWindowAdvisor.java、Perspective.java這5個類。下面我們對這5個類進行逐一分析。

Application類

在普通的Java程式中,總有一個main()方法作為應用程式的入口點。而RCP程式的入口點則是Application類。開啟Application.java檔案,可以看到該類實現了IPlatformRunnable介面,入口方法如下所示:

publicObject run(Object args)throwsException{Display display =PlatformUI.createDisplay();try{intreturnCode =PlatformUI.createAndRunWorkbench(display,newApplicationWorkbenchAdvisor
());if(returnCode ==PlatformUI.RETURN_RESTART){returnIPlatformRunnable.EXIT_RESTART;}returnIPlatformRunnable.EXIT_OK;}finally{ display.dispose();}}

run()方法為IPlatformRunnable介面所定義的方法,在RCP程式啟動時,會首先執行該方法。Application首先建立一個Display物件, 然後呼叫PlatformUI.createAndRunWorkbench()方法建立並啟動工作臺,這將開啟應用程式主視窗,並使該視窗處於持續開啟狀態。應用程式開始處理使用者的滑鼠單擊、滑鼠移動、按鍵等各種事件,直到使用者關閉程式退出,這就是所謂的事件迴圈。當然,在關閉之前,必須用display.dispose()銷燬Display物件以釋放資源。

ApplicationWorkbenchAdvisor類

在PlatformUI.createAndRunWorkbench()方法中,還傳入了一個新建的ApplicationWorkbenchAdvisor物件。它類負責應用程式生命週期管理,它繼承自WorkbenchAdvisor類。開發人員可以在該類中實現程式啟動或者關閉時的某種處理。該類的具體實現只是給使用者一個初始的檢視介面而已,還需要配合WorkbenchWindowAdvisor、ActionBarAdvisor才能構成一個較為完整的使用者介面。

開啟ApplicationWorkbenchAdvisor.java檔案,程式碼如下:

publicclassApplicationWorkbenchAdvisorextendsWorkbenchAdvisor{privatestaticfinalStringPERSPECTIVE_ID ="net.kirin.rcp.hello.perspective";publicWorkbenchWindowAdvisor createWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer){returnnewApplicationWorkbenchWindowAdvisor(configurer);}publicString getInitialWindowPerspectiveId(){returnPERSPECTIVE_ID;}}

createWorkbenchWindowAdvisor()方法初始化在主介面顯示的透檢視,並返回ApplicationWorkbenchWindowAdvisor物件。

ApplicationWorkbenchAdvisor還包含一些比較重要的方法:

  • initialize:最先呼叫。在視窗開啟之前呼叫,可以用來處理初始化配置工作。
  • preStartup:initialize之後、第一個視窗開啟之前呼叫,可以用來處理臨時或者可選處理工作。
  • postStartup:第一個視窗開啟之後但啟動事件迴圈之前呼叫,可以用來進行那些需要自動處理的工作,例如彈出一個提示視窗。
  • preShutdown:事件迴圈結束之後但視窗關閉之前呼叫,可以用來進行儲存資料、關閉資料庫伺服器等處理工作。
  • postShutdown:視窗關閉之後呼叫,可以用來進行儲存應用程式狀態、清除initialize建立的物件等處理工作。

ApplicationWorkbenchWindowAdvisor類

在ApplicationWorkbenchAdvisor類中建立了一個ApplicationWorkbenchWindowAdvisor物件。它主要負責視窗生命週期的管理,例如狀態列、工具欄、選單、視窗標題、視窗大小和各種控制元件等等,也可以處理視窗的各種事件例程。其主要程式碼如下:

publicclassApplicationWorkbenchWindowAdvisorextendsWorkbenchWindowAdvisor{publicApplicationWorkbenchWindowAdvisor(IWorkbenchWindowConfigurer configurer){super(configurer);}publicActionBarAdvisor createActionBarAdvisor(IActionBarConfigurer configurer){returnnewApplicationActionBarAdvisor(configurer);}publicvoidpreWindowOpen(){IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
        configurer.setInitialSize(newPoint(400,300));
        configurer.setShowCoolBar(false);
        configurer.setShowStatusLine(false);
        configurer.setTitle("Hello RCP");}}

preWindowOpen()方法在視窗控制元件建立之前呼叫,用來配置視窗,如設定視窗大小、工具欄、狀態列和標題等。createActionBarAdvisor建立了一個ApplicationActionBarAdvisor物件。

其它比較重要的方法還包括:

  • postWindowRestore:當視窗根據上一次的儲存狀態恢復建立之後呼叫,可以用來調整調整視窗恢復狀態。
  • postWindowCreate:視窗建立之後呼叫,可以用於調整視窗。
  • postWindowOpen:視窗已經開啟之後呼叫,可以用來註冊視窗監聽,例如在此方法中實現系統托盤。

ApplicationActionBarAdvisor類

ApplicationActionBarAdvisor主要負責管理視窗的選單欄、狀態列、工具欄的外觀和行為。其主要程式碼如下:

publicclassApplicationActionBarAdvisorextendsActionBarAdvisor{publicApplicationActionBarAdvisor(IActionBarConfigurer configurer){super(configurer);}protectedvoidmakeActions(IWorkbenchWindow window){}protectedvoidfillMenuBar(IMenuManager menuBar){}}

makeActions()方法用來註冊選單或工具欄的動作。fillMenuBar()方法用來新增選單欄。

其它比較重要的方法還包括:

  • fillCoolBar:新增工具欄
  • fillStatusLine:新增狀態列

Perspective類

Perspective類主要負責介面佈局的安排,其程式碼如下:

publicclassPerspectiveimplementsIPerspectiveFactory{publicvoidcreateInitialLayout(IPageLayout layout){}}

createInitialLayout()方法通常用於建立初始的介面佈局。