第21章基于RCP的產(chǎn)品開發(fā)《Eclipse從入門到精通》教學(xué)課件_第1頁(yè)
第21章基于RCP的產(chǎn)品開發(fā)《Eclipse從入門到精通》教學(xué)課件_第2頁(yè)
第21章基于RCP的產(chǎn)品開發(fā)《Eclipse從入門到精通》教學(xué)課件_第3頁(yè)
第21章基于RCP的產(chǎn)品開發(fā)《Eclipse從入門到精通》教學(xué)課件_第4頁(yè)
第21章基于RCP的產(chǎn)品開發(fā)《Eclipse從入門到精通》教學(xué)課件_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第21章 基于RCP的產(chǎn)品開發(fā),經(jīng)過(guò)前面的學(xué)習(xí),讀者對(duì)于開發(fā)Eclipse的插件產(chǎn)品應(yīng)該是非常熟悉了。在實(shí)際的應(yīng)用中,大家肯定不滿足于僅僅開發(fā)插件產(chǎn)品。當(dāng)面對(duì)客戶的時(shí)候,必須提供一個(gè)獨(dú)立、完整的應(yīng)用程序給客戶。不可能把整個(gè)Eclipse IDE,連同編寫的插件一起交付給客戶??梢韵胂?,這樣的軟件產(chǎn)品是很別扭的,普通客戶并不需要JDT,也不可能學(xué)習(xí)使用Eclipse。提供產(chǎn)品給客戶的時(shí)候,必須把Eclipse平臺(tái)中那些不必要的功能去掉(例如JDT),還要給整個(gè)應(yīng)用程序包裝有專門的歡迎界面,看到About的時(shí)候,顯示的是自己特有的軟件品牌而不是Eclipse.Org的介紹,甚至把整個(gè)Eclipse

2、的界面都進(jìn)行改造,讓界面更容易使用。,21.1 Eclipse平臺(tái)的核心架構(gòu),在開發(fā)自己的RCP程序之前,先來(lái)了解一下Eclipse的核心架構(gòu)。,21.1.1 Eclipse的核心框架Equinox,進(jìn)一步細(xì)看Platform Runtime,整個(gè)Platform Runtime是Eclipse中的一個(gè)子項(xiàng)目Equinox。Equinox項(xiàng)目是Eclipse開源組織提供的OSGi框架的實(shí)現(xiàn)。Eclipse自3.0版本開始,其內(nèi)核移植到OSGi框架上。通過(guò) OSGi框架強(qiáng)大的組件控制、交互和管理能力,再加上Eclipse插件的自有特點(diǎn),Eclipse開源框架得到了跳躍式的發(fā)展。Eclipse 3

3、.4 后,正式用Equinox作為核心框架。 OSGi的本質(zhì)是將Java面向?qū)ο蟮拈_發(fā)轉(zhuǎn)向面向組件和服務(wù)的開發(fā)。OSGi框架提供了一套完善的機(jī)制用于管理和控制組件(Bundle)、服務(wù)(Service)的生命周期,以及組件和服務(wù)在其生命周期內(nèi)的交互。Equinox的任務(wù)除了包括OSGi的工作外,還要負(fù)責(zé)兼容Eclipse3.0之前的插件,負(fù)責(zé)啟動(dòng)整個(gè)Eclipse平臺(tái)。,21.1.2 Eclipse中插件、程序、和產(chǎn)品的概念,在進(jìn)行RCP產(chǎn)品開發(fā)之前,再來(lái)明確一下Eclipse中的幾個(gè)概念插件、程序、產(chǎn)品。插件大家已經(jīng)非常熟悉了,本書前面的內(nèi)容都是關(guān)于插件開發(fā)的。在Eclipse中,所有組件都

4、是插件,程序(Application),產(chǎn)品(Products)都是一種特殊的插件。 程序(Application) 產(chǎn)品(Product) Eclipse平臺(tái)、插件、程序、產(chǎn)品之間的關(guān)系:,21.2 建立RCP產(chǎn)品項(xiàng)目,在前面章節(jié)的例子中,由于沒有自己的Application,所有插件的運(yùn)行都依賴org.eclipse.platform.ide這個(gè)插件,通過(guò)啟動(dòng)Eclipse IDE來(lái)啟動(dòng)整個(gè)Eclipse平臺(tái)。下面開始制作自己的RCP軟件平臺(tái),制作兩個(gè)新的Application和Product,并包裝成一個(gè)獨(dú)立的應(yīng)用軟件。,21.2.1 新建RCP項(xiàng)目,RCP項(xiàng)目也是插件項(xiàng)目,在Eclip

5、se中,選擇新建項(xiàng)目,按照?qǐng)D的步驟建立RCP項(xiàng)目。注意在第三步的時(shí)候,要選擇Rich Client Application-Yes。,21.2.2 RCP插件項(xiàng)目的文件結(jié)構(gòu),在模板選擇完成后,按Finish,向?qū)ё詣?dòng)建立了一些相關(guān)的文件?,F(xiàn)在com.smartdio.application項(xiàng)目的文件結(jié)構(gòu)如圖。,21.2.3 認(rèn)識(shí)org.eclipse.core.runtime.applications擴(kuò)展點(diǎn),模板向?qū)н€自動(dòng)建立了一些擴(kuò)展點(diǎn)的擴(kuò)展。如圖,在PDE編輯器中,選擇Extensions標(biāo)簽,可以看到這些自動(dòng)建立的擴(kuò)展。其中第一個(gè)最重要的是org.eclipse.core.runtime

6、.applications擴(kuò)展。沒有這個(gè)擴(kuò)展,就不能成為Application插件,只能算是一般的插件而已。,21.2.4 認(rèn)識(shí)IApplication,模板向?qū)б呀?jīng)建立了IApplication的實(shí)現(xiàn),就是ro.Application類。Application類實(shí)現(xiàn)IApplication所定義的兩個(gè)抽象方法start和stop。,21.2.5 RCP關(guān)鍵對(duì)象的啟動(dòng)過(guò)程,到這里,可以看到一個(gè)RCP插件程序的啟動(dòng)需要多個(gè)對(duì)象,看上去比較復(fù)雜,其實(shí)每個(gè)對(duì)象都只是負(fù)責(zé)單一的工作,這也符合面向?qū)ο箝_發(fā)的原則。,21.2.6 擴(kuò)展點(diǎn)org.ecl

7、ducts,RCP模板的向?qū)н€實(shí)現(xiàn)了ducts擴(kuò)展。ducts用于定義Product。如圖,在PDE編輯器的extensions標(biāo)簽中,展開ducts擴(kuò)展點(diǎn)可以看到擴(kuò)展的詳細(xì)設(shè)置。,21.2.7 試運(yùn)行RCP項(xiàng)目,到此,已經(jīng)比較深入地研究過(guò)一個(gè)RCP產(chǎn)品項(xiàng)目的結(jié)構(gòu)了。下面來(lái)試運(yùn)行一下這個(gè)RCP產(chǎn)品,看看是怎樣的一個(gè)樣子。首先選擇工具欄上的Run按鈕,下拉菜單中選擇Run Configur

8、ations,打開運(yùn)行設(shè)置對(duì)話框。在Eclipse Application類別中新建一個(gè)運(yùn)行項(xiàng)目。,21.2.7 試運(yùn)行RCP項(xiàng)目,21.3 定制RCP程序的菜單,通過(guò)前面的步驟,建立了一個(gè)應(yīng)用程序?,F(xiàn)在這個(gè)RCP程序還十分簡(jiǎn)陋,菜單僅有Help,沒有工具欄,也沒有狀態(tài)欄,也無(wú)法選擇其他視圖或者其他透視圖。下面將重點(diǎn)對(duì)菜單、工具欄進(jìn)行改造,添加上更多的菜單命令。,21.3.1 基本菜單模式,對(duì)于菜單的排列模式,長(zhǎng)期以來(lái)業(yè)界形成了個(gè)約定俗成的規(guī)范。在單項(xiàng)的前三項(xiàng),基本上是文件(Files)、編輯(Edit)、視圖(View);最后兩項(xiàng)基本上是工具(Tools)、窗口(Window)、幫助(Hel

9、p)。,21.3.2 用ActionBarAdvisor定制菜單,模板向?qū)Ы⒌腁pplicationActionBarAdvisor其實(shí)已經(jīng)為開發(fā)者提供了定制RCP菜單的典范。打開ApplicationActionBarAdvisor.java,可以看到ApplicationActionBarAdvisor繼承了ActionBarAdvisor。 ActionBarAdvisor是專門提供給RCP程序,用于定制菜單和工具欄的。要定制菜單,就要重載ActionBarAdvisor中的fillMenuBar(IMenuManager menuBar)方法。方法中傳遞進(jìn)來(lái)的參數(shù)menuBar就是W

10、orkbench窗口中的菜單欄,往這個(gè)menuBar添加菜單就可以了。 protected void fillMenuBar(IMenuManager menuBar) MenuManager helpMenu = new MenuManager( ,21.3.3 添加Workbench預(yù)定義的菜單命令,Eclipse中不僅預(yù)先定義了一批標(biāo)準(zhǔn)菜單命令的ID,還具體實(shí)現(xiàn)了這些菜單命令。在Eclipse中,命令都是Action對(duì)象。同一個(gè)Action對(duì)象可以用在菜單命令中,也可以用在按鈕中(工具欄上的按鈕或者其他界面上的按鈕)。,21.3.4 添加更多的菜單命令,按照同樣的原理添加更多的菜單命令,

11、包括Edit菜單和Window菜單。由于這部分代碼所占的篇幅比較多,所以就不在此列出了,讀者可以查看隨書光盤中的源代碼。,21.4 添加狀態(tài)欄,窗口的上面是菜單,低端是狀態(tài)欄,這已經(jīng)是大部分應(yīng)用程序的標(biāo)準(zhǔn)模式。上一小節(jié)添加了菜單,現(xiàn)在應(yīng)用程序窗口下面還需要有一個(gè)狀態(tài)欄,顯示一些狀態(tài)信息,或者提示信息。下面為RCP程序添加這樣的狀態(tài)欄。,21.4.1 顯示狀態(tài)欄,打開ApplicationWorkbenchWindowAdvisor.java ,在preWindowOpen()方法中添加“configurer.setShowStatusLine(true); ”。 public void pre

12、WindowOpen() IWorkbenchWindowConfigurer configurer = getWindowConfigurer(); configurer.setInitialSize(new Point(700, 550); configurer.setShowCoolBar(false); configurer.setShowStatusLine(true); configurer.setTitle(Smartdio Application); ,21.4.2 顯示狀態(tài)欄信息,要往狀態(tài)欄上顯示文本信息,最簡(jiǎn)單的途徑就是使用statusline.setMessage()方法

13、。例如下面在ApplicationWorkbenchWindowAdvisor.java 中加入postWindowOpen()方法,當(dāng)窗口打開后,在狀態(tài)欄上顯示狀態(tài)信息。 Override public void postWindowOpen() IStatusLineManager statusline = getWindowConfigurer() .getActionBarConfigurer().getStatusLineManager(); statusline.setMessage(null, 程序已經(jīng)成功運(yùn)行); ,21.5 添加工具欄,現(xiàn)在程序還少了工具欄。本來(lái)添加工具欄的原

14、理和添加菜單是一樣的,也是往工具欄上添加Action。現(xiàn)在有了Eclipse 3.3新的命令框架,可以不用建立Action。通過(guò)org.eclipse.ui.menus擴(kuò)展點(diǎn)的擴(kuò)展,就可以實(shí)現(xiàn)不用編寫代碼,往工具欄上添加常用命令。,21.5.1 顯示工具欄,打開ApplicationWorkbenchWindowAdvisor.java ,在preWindowOpen()方法中,加入configurer.setShowCoolBar(true);把工具欄的顯示設(shè)置為true。 public void preWindowOpen() IWorkbenchWindowConfigurer conf

15、igurer = getWindowConfigurer(); configurer.setInitialSize(new Point(700, 550);/ configurer.setShowCoolBar(true); configurer.setShowStatusLine(true) configurer.setTitle(Smartdio Application); ,21.5.2 添加org.eclipse.ui.menus擴(kuò)展點(diǎn),按照?qǐng)D的步驟,添加org.eclipse.ui.menus擴(kuò)展點(diǎn),然后在擴(kuò)展點(diǎn)下面添加menuContribution。并把menuContribut

16、ion的locationURI修改為toolbar:org.eclipse.ui.main.toolbar。,21.5.3 添加工具欄和命令,選擇新增的menuContribution,按圖的步驟,在下面新增一個(gè)工具欄,把工具欄的ID設(shè)置為,然后再在新增的工具欄下面添加一個(gè)命令。,21.5.4 運(yùn)行測(cè)試,現(xiàn)在再次運(yùn)行smartdio.application。如圖,在關(guān)閉Welcome視圖后,可以看到新增的工具欄的了。而添加工具欄的過(guò)程沒有編寫任何代碼。,21.6 小結(jié),本章建立了一個(gè)RCP程序。RCP程序本身是特殊插件,它只是通過(guò)一些擴(kuò)展設(shè)置,改變Eclipse程序窗口的外觀和一些行為,看上去就像是一個(gè)全新的應(yīng)用程序。 應(yīng)用程序必須實(shí)現(xiàn)org.eclipse.core.runtime.application擴(kuò)展點(diǎn)。至少要實(shí)現(xiàn)下面幾個(gè)接口: org.eclipse.equinox.application.IApplication org.e

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論