RCP(Rich Client Platform)是一個使用Java技術構建富客戶端應用的平臺,它使用SWT/JFace技術構建界面部分,使用Eclipse平臺作爲RCP程序的運行環境,本質上RCP是Eclipse平臺的插件。RCP的優點是可以快速開發桌面系統,構建一般的應用都很簡單,甚至構建一個瀏覽器只需要拖出一個瀏覽器控件就可以,複雜的地方就是需要做一定的配置。
RCP程序可以脫離Eclipse平臺運行,這樣完成之後的RCP產品打包之後只有很小的體積。
RCP和Eclipse - PlugIn
它們倆在本質上是相同的,都是使用SWT/JFace技術構建的;而RCP可以獨立運行(脫離Eclipse),PlugIn只能運行在Eclipse中,像其他的各種Eclipse插件一樣;完成之後的RCP程序有直接可啓動的.exe文件,可以運行,PlugIn可能只是一些jar文件,需要加入到Eclipse的plugin文件夾下纔可以使用。
在Eclipse中創建插件工程時候,這兩個的區別就是“是否選擇該插件成爲RCP?”選項的差別,選擇完畢之後生成的插件代碼也不一樣的。
要學習Eclipse RCP編程,首先對Eclipse平臺要有一個大概的瞭解。知道Eclipse界面由幾部分構成,其中包括:
Workbench(工作臺):整個Eclipse平臺就是一個workbench
Editor(編輯器):可以認爲它是放置一些控件的容器
View(視圖):同樣可以認爲它是放置一些SWT控件的容器,它和Editor的區別是:1)在一個當前頁面中,只能有一個同樣的視圖,但是可以有多個同樣的編輯器(在Eclipse中編輯java文件時候,可以打開多個java文件,這是編輯器,而只能調出一個console視圖,這是視圖);2)編輯器是固定在當前頁面的具體位置的,但是視圖可以在頁面中移動;等等。
Perspective(透視圖):特定的視圖和編輯器的組合
還有需要了解,使用Eclipse開發RCP過程中的一些文件的含義,主要有
MANIFEST.MF:插件清單文件
build.properties:構建RCP程序時所導入的類庫設置
plugin.xml:最重要的文件,它是插件配置文件,集中管理你所創建的各個控件是如何接入到Eclipse平臺中的。
使用Eclipse的插件工程嚮導生成的項目框架之後,src包中包括了一些java文件,有控制RCP程序生命週期的類Application.java,等等,需要具體瞭解的可以查看生成的代碼。
RCP程序的界面顯示其實使用的是SWT/JFace技術,一旦瞭解清楚如何創建RCP框架之後,就和使用SWT構建一般界面沒什麼區別了,SWT可以使用VE插件進行開發,SWT以前使用過,開發過幾個小應用,所以重點是如何構建這個RCP應用的框架。
構建RCP應用的框架,其實也就是弄清楚怎麼擴展Eclipse,使用Eclipse平臺可以很方便的進行擴展的配置,它已經內嵌了一些常用的擴展模版,通過UI的形式就可以很方便的完成。
比如說我想要給我的系統加一個菜單欄,則需要在plugin.xml文件的擴展選項卡中找到 org.eclipse.ui.menus > right-click > New > menuContribution > locationURI = menu:org.eclipse.ui.main.menu 然後在右側的屬性面板中設定一些該菜單項的基本屬性,包括它的顯示文本、它所要執行的命令(command)等信息。
添加一個工具欄,需要在擴展選項卡中找到 org.eclipse.ui.menus > right-click > New > menuContribution > locationURI = toolbar:org.eclipse.ui.main.toolbar > right-click > New > toolbar 這樣便可以添加工具欄(還需要在WorkbenchWindowAdvisor.preWindowOpen:中添加configurer.setShowCoolBar (true);)
添加一個視圖,plugin.xml > Extensions > Add > org.eclipse.ui.views > right-click > New > View > id, class
添加一個編輯器,plugin.xml > Extensions > Add > org.eclipse.ui.editors > id, class, icon
打開該編輯器
IWorkbenchPage page; IEditorInput input; page = PlatformUI.getWorkbench ().getActiveWorkbenchWindow ().getActivePage (); // else if in ViewPart // page = getSite ().getPage (); page.openEditor (input, "editor_id");
等等
創建好你所需要的各個控件之後,所需要的就是畫界面了,這和java的SWT編程就沒有什麼區別了。
完成界面部分的創建後,需要的就是導出產品了,如果你所建立的工程是插件形式的,可以直接導出jar文件,然後拷貝到Eclipse的plugin目錄下,就可以使用該插件了;如果是RCP工程,需要新建***.product文件,構建該產品的描述文件。
(具體導出方法待完成)