好好生活,努力工作,天天向上!

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            46 Posts :: 1 Stories :: 178 Comments :: 0 Trackbacks

          常用鏈接

          留言簿(6)

          隨筆分類(49)

          隨筆檔案(45)

          文章檔案(1)

          新聞檔案(1)

          JavaEye

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

            從上篇文章RAP 與 RCP的差別》中,我們知道,RCPRAP之間的區(qū)別很小,現(xiàn)在我們就開始研究他們的區(qū)別到底有多小,接下來打算將一個RCP項目遷移到RAP項目,我們從這樣的一個實際的例子來演示。

            我們先在Eclipse創(chuàng)建一個RCP插件工程,選擇RCP應(yīng)用的Mail模板。我們就將這個RCP版本的Mail Demo 變成 RAP版本的Mail Demo,比如我們的插件工程的名稱就叫做“com.vwpolo.rcp.mail”,

            創(chuàng)建完RCP插件項目后,我們雙擊打開plugin.xml文件,切換到“Dependencies”選項卡,默認的RCP項目會依賴“org.eclipse.ui“和”org.eclipse.core.runtime“這兩個項目,在這里,我們將他們替換成“org.eclipse.rap.ui”和“org.eclipse.rap.ui.views”,(具體的依賴插件根據(jù)項目的需要進行添加)


            接著我們切換到“Extensions”選項卡,配置擴展點,RCP模板工程默認提供如下擴展點:

            

            在RAP項目中,是通過IEntryPoint 的子類來負責啟動程序,而RCP是通過IApplication的子類來啟動程序的,所以這里的“org.eclipse.core.runtime.applications擴展點沒有用武之地,可以直接刪除,替換成RAP支持的org.eclipse.rap.ui.entrypoint擴展點,在這個擴展點中可以指定啟動類的ID和完整路徑還有參數(shù)名稱,這里的參數(shù)名稱是提供給Servlet容器判斷應(yīng)該加載那個應(yīng)用。
           
            
          我們指定Application這個類負責程序的啟動,這個類原來是RCP的啟動類,我們現(xiàn)在將它實現(xiàn)的接口由IApplication修改成IEntryPoint,并實現(xiàn)createUI方法,在這個方法中創(chuàng)建UI界面,基本上和 RCP IApplicationstart 方法類似,只是這里我們不需要處理客戶端的退出,系統(tǒng)會自動幫我們處理好的。createUI方法很簡單: 

          1 @Override
          2 public int createUI() {
          3     Display display = PlatformUI.createDisplay();
          4     return PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
          5 }

           比較一下RCPstart方法的處理: 

           1 public Object start(IApplicationContext context) {
           2         Display display = PlatformUI.createDisplay();
           3    try {
           4     int returnCode = PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
           5     if (returnCode == PlatformUI.RETURN_RESTART) {
           6         return IApplication.EXIT_RESTART;
           7     }
           8     return IApplication.EXIT_OK;
           9     } finally {
          10     display.dispose();
          11     }
          12 }

            是不是發(fā)現(xiàn)很相似?只是RAP簡化了處理的方法,不需要像RCP那樣循環(huán)的檢查系統(tǒng)消息。這樣我們的org.eclipse.rap.ui.entrypoint擴展點就創(chuàng)建完畢了

            接下來我們看一下org.eclipse.core.runtime.products這個擴展點,在RAP中,這個擴展點被org.eclipse.rap.ui.branding替代了,所有我們可以刪除org.eclipse.core.runtime.products,然后新增org.eclipse.rap.ui.branding”,右鍵選擇這個擴展點,選擇新建一個branding,然后配置branding的詳細信息:

           

          Id: 指定branding的ID,必須是唯一的,在同一項目中不能重復(fù),

          servletName:指定servlet的名稱,在我們打開的瀏覽器地址欄上會顯示,

          defaultEntrypointId:是指定默認啟動的啟動類ID,這里指定我們剛才新建的EntryPoint擴展點中指定的ID,

          themeID:使用的主題ID,接下來我們會講解怎么自定義我們的主題。

          Title:顯示在瀏覽器標題欄上的信息。

          Favoicon: RAP程序的標題欄角的圖標

          Body: 背景網(wǎng)頁,比如我們在使用GMail的時候,顯示的那個黃色的”正在載入...“標簽,RAP也可以這樣做。

          exitConfirmationClass:在你關(guān)閉RAP程序或者關(guān)閉瀏覽器的時候彈出的確認推出對話框的提示內(nèi)容。


              在RAP項目中不能直接使用RCP中的綁定功能了,所以我們的刪除org.eclipse.ui.bindings“ 這個擴展點。

              在ApplicationActionBarAdvisor這個類中應(yīng)該存在編譯錯誤,因為RAPActionFactory沒有提供ABOUTAction工廠,要么我們自己新建,比如:   

           1 aboutAction = new Action() {
           2       public void run() {
           3         Shell shell = window.getShell();
           4         Bundle bundle = Platform.getBundle(MailActivator.PLUGIN_ID );
           5         Dictionary headers = bundle.getHeaders();
           6         Object version = headers.get( Constants.BUNDLE_VERSION );
           7         MessageDialog.openInformation( shell,  "RAP MailDemo",   "當前版本為" + version );
          8       }
          11     };
          12     aboutAction.setText( "關(guān)于" );
          13     aboutAction.setId( "com.vwpolo.rap.mail.about" );
          14     aboutAction.setImageDescriptor( helpActionImage );

            或者直接刪除算了。 

            現(xiàn)在我們的plugin.xml文件中的擴展點項目應(yīng)該為:

            

           
             我們啟動一下看看效果,右鍵項目從彈出菜單選擇 Run As -> RAP Application(如果發(fā)現(xiàn)啟動失敗多少刷新幾次就好),下面是效果:

            
             
             這樣我們的RCP項目就改造好了(雖然有點簡單),大家有興趣趕快試試吧
          posted on 2009-05-22 10:10 VWPOLO 閱讀(2862) 評論(0)  編輯  收藏 所屬分類: Eclispe 插件開發(fā)Web 開發(fā)
          主站蜘蛛池模板: 丰城市| 拜城县| 禹州市| 安国市| 岢岚县| 康马县| 如东县| 望奎县| 德庆县| 南木林县| 泰州市| 上思县| 楚雄市| 普定县| 恭城| 汉阴县| 克拉玛依市| 徐汇区| 延寿县| 油尖旺区| 武邑县| 荃湾区| 孟津县| 财经| 渭南市| 新邵县| 双江| 三穗县| 原平市| 华阴市| 锡林郭勒盟| 文安县| 姚安县| 黄骅市| 灵宝市| 南乐县| 思南县| 汶川县| 丰原市| 古浪县| 新宾|