<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

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

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

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

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

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


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

      

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

      是不是發現很相似?只是RAP簡化了處理的方法,不需要像RCP那樣循環的檢查系統消息。這樣我們的org.eclipse.rap.ui.entrypoint擴展點就創建完畢了

      接下來我們看一下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,必須是唯一的,在同一項目中不能重復,

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

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

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

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

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

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

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


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

        在ApplicationActionBarAdvisor這個類中應該存在編譯錯誤,因為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( "關于" );
    13     aboutAction.setId( "com.vwpolo.rap.mail.about" );
    14     aboutAction.setImageDescriptor( helpActionImage );

      或者直接刪除算了。 

      現在我們的plugin.xml文件中的擴展點項目應該為:

      

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

      
       
       這樣我們的RCP項目就改造好了(雖然有點簡單),大家有興趣趕快試試吧
    posted on 2009-05-22 10:10 VWPOLO 閱讀(2856) 評論(0)  編輯  收藏 所屬分類: Eclispe 插件開發Web 開發
    主站蜘蛛池模板: 久久久久久影院久久久久免费精品国产小说 | 亚洲色中文字幕在线播放| 香蕉大伊亚洲人在线观看| 亚洲欧美日韩中文高清www777| 美女扒开尿口给男人爽免费视频| 日本视频免费观看| 久久香蕉国产线看免费| 国产免费毛不卡片| 日韩亚洲国产二区| 亚洲av网址在线观看| 亚洲已满18点击进入在线观看| 久久久久久久久无码精品亚洲日韩| 巨胸喷奶水www永久免费| 18观看免费永久视频| 国产美女无遮挡免费网站| 亚洲伊人久久成综合人影院| 亚洲网站在线观看| 久久亚洲中文无码咪咪爱| 最近更新免费中文字幕大全| 国产免费看JIZZ视频| 久久综合亚洲色HEZYO国产| 亚洲精品国产成人中文| 国产亚洲精品美女久久久久 | 久久亚洲精品成人综合| 亚洲国产成人精品无码一区二区 | 午夜视频免费观看| 亚洲精品国产字幕久久不卡| 亚洲a级在线观看| 中国一级特黄高清免费的大片中国一级黄色片| 最近免费中文字幕高清大全| 精品国产麻豆免费网站| 亚洲αv久久久噜噜噜噜噜| 亚洲人成人伊人成综合网无码| 伊人久久大香线蕉免费视频| 国产精品免费观看久久| 亚洲中文字幕无码久久综合网| 亚洲高清视频在线| 免费看男人j放进女人j免费看| 日韩激情淫片免费看| 亚洲第一福利网站| 草久免费在线观看网站|