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

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

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

    在Eclipse RCP中使用ResourceNavigator

    Posted on 2007-06-28 00:30 nemo 閱讀(3580) 評論(12)  編輯  收藏 所屬分類: EclipseRCP/SWT/JFACE
    Eclipse 的資源瀏覽器很強大,可以很方便的查看工作空間中可供適配的資源,并且提供了對排序、過濾等功能的支持。Eclipse的RCP項目組不贊成我們在富客戶端應用程序中使用ResourceNavigator,原因是ResourceNavigator的實現代碼位于Eclipse IDE中,如果使用資源瀏覽器,生成的RCP產品將會增加二十多兆的空間,而且會增加許多我們的產品中并不使用的功能,很浪費磁盤和系統資源。他們贊成我們根據需要,為應用程序量身定做樹形瀏覽器視圖,但是,基于方便和對強大功能的追求,以及對Eclipse代碼優良性的肯定,插件開發者們仍然希望將資源瀏覽器直接加入到我們的RCP程序中。為了滿足廣大Eclipse開發者強烈的要求,本文對在Eclipse RCP中使用ResourceNavigator的方法做較為全面的介紹。

    同資源導航器相關的ID為:
    ID:           org.eclipse.ui.views.ResourceNavigator
       CLASS:   org.eclipse.ui.ide/org.eclipse.ui.views.navigator/ResourceNavigator.class
       ICON:      位于org.eclipse.ui.ide工程目錄的icons文件夾中,名稱為fileNav_nav.gif。可通過解壓.jar文件獲得圖像文件。

    1. 如果我們的RCP程序中的默認透視圖中要使用導航器,可能需要在RCP插件(包含有Application.java文件的插件)的plugin.xml中加入這個視圖:
    plugin.xml

    2. 如果我們需要在RCP程序中默認顯示導航器,則需要在定義的透視圖(假設透視圖已經定義)類中加入類似下面的代碼:
    Perspective.java

    第1、2兩行創建一個IFolderLayout實例,表示在編輯器區域左側創建一個FolderLayout。
    第3行為ResourceNavigator添加一個占位符,使用的是ResourceNavigator的ID,后面的“:*”表示還可以有更多的內容,即可以同更多的視圖共享這個位置。
    第4行將ResourceNavigator加入這個布局中,從而在應用程序啟動,默認透視圖打開時,導航器出現在頁面的左側。

    3. 導航器在RCP程序中無法顯示的問題。
    許多開發者在使用Navigator生成RCP程序時都遇到過這樣的錯誤:
    Log

    這個問題的具體描述我已經在前面的博客中介紹了,它需要安裝兼容性插件同以前的系統兼容。在PDE環境下,打開plugin.xml,在“Dependencies”頁面中加入下面的插件:
    org.eclipse.core.runtime.compatibility

    上述所說的問題便解決了。

    4. 工作空間的資源在導航器中無法顯示的問題。
    解決了第三個問題后,導航器中的資源可以顯示了,但是其中的工程文件夾圖標仍然無法顯示,只能光禿禿的顯示一個項目名,如下圖所示:


    為了正確的顯示項目的圖標,我們需要在RCP插件的ApplicationWorkbenchAdvisor類中加入如下代碼:
    ApplicationWorkbenchAdvisor

    上面代碼的第4行中的路徑"icons/prj_obj.gif"為我們為工程文件夾提供的圖標相對于RCP插件中的位置,YOURPlugin代表RCP插件中的插件類(或XXXActivator)
    這樣我們便得到了我們希望的Navigaotor:


    上面3-4行代碼也同時給我們提供了修改Eclipse Navigator中默認圖標的一種方式。Just Enjoy it!


    其他的話:

    Eclipse 3.2版本出臺后,Eclipse團隊專門提供出了org.eclipse.ui.navigator插件,用來支持在ProjectExplorer的基礎上進行的二次開發。而從GMF(Grapic Modeling Framework)2.0 M6開始,對自動生成樹形瀏覽器視圖提供了支持,所用到的正是這個插件所提供的功能強大的 org.eclipse.ui.navigatorContent擴展點:http://wiki.eclipse.org/index.php/GMF_New_and_Noteworthy#2.0_M6,這使得我們在對資源定制的基礎上,可以對資源中的元素進行定制,因而功能更為強大(不過這個擴展點是我見過的最為復雜的擴展點之一)。這使得我們對ResourceNavigator的要求有所降低。Anyway,直接使用Eclipse的ResourceNavigator可以為快速定制的原型系統提供基本的支持,這對開發者來說還是非常有用的。

    Feedback

    # re: 在Eclipse RCP中使用ResourceNavigator  回復  更多評論   

    2007-06-30 12:56 by nemo
    現在,隨著激動人心的eclipse3.3的正式發布,令人慶幸的一件事情發生了:eclipse中的IDE被移植到了單獨的包中:

    IDE application moved to new plug-in
    The portion of the org.eclipse.ui.ide plug-in that defines the application has been moved into a new plug-in: org.eclipse.ui.ide.application. This allows people writing their own RCP application to use existing views or APIs defined by org.eclipse.ui.ide without having a dependency on the application.

    # re: 在Eclipse RCP中使用ResourceNavigator[未登錄]  回復  更多評論   

    2007-10-10 15:22 by z
    “在Eclipse RCP中使用ResourceNavigator”文章中,我建立的項目中navigator不僅不顯示圖片,連項目名和文件名都不顯示。不知道是什么原因,希望可以指點一下。

    # re: 在Eclipse RCP中使用ResourceNavigator  回復  更多評論   

    2007-10-10 15:26 by dashan
    你好,麻煩你能給講一下YOURPlugin代表的具體是什么嗎,我沒有理解你文章里說的意思?

    # re: 在Eclipse RCP中使用ResourceNavigator[未登錄]  回復  更多評論   

    2007-10-11 10:20 by nemo
    to z:
    這個問題可能是因為沒有引用org.eclipse.ui.ide的緣故,或者新版本的org.eclipse.ui.ide已經將ResourceNavigator從該項目包中去掉(這個我不是很了解,最近沒有跟蹤Eclipse3.3版本)。最好能夠提供一些具體的細節。

    to dashan:
    YOURPlugin是你的插件類,在Eclipse3.1以后使用了OSGi技術,是指插件的Activator類。

    # re: 在Eclipse RCP中使用ResourceNavigator[未登錄]  回復  更多評論   

    2007-10-11 16:34 by z
    navigator 基本可以用了,但是,我在navigator中建立的文件再次打開的時候只能得到它的相對路徑,有沒有辦法讓文件再次打開時得到絕對路徑(謝謝你的解答)

    # re: 在Eclipse RCP中使用ResourceNavigator[未登錄]  回復  更多評論   

    2007-10-11 17:32 by nemo
    不太懂你的意思。你是指想要以編程的方式來獲得文件的絕對路徑么?應該可以吧。resource中有getAbsolutePath()方法吧。。。?

    # re: 在Eclipse RCP中使用ResourceNavigator  回復  更多評論   

    2007-10-24 16:25 by homer
    樓主好:我按照你說的方法設置了ResourceNavigator后,把org.eclipse.ui.ide.jar包也導入工程了,org.eclipse.core.runtime.compatibility包也加入了,但是報下面的錯誤信息,rcp工程啟動不了,請幫忙看一下是什么原因?謝謝!

    java.lang.RuntimeException: Application "GefTest.application" could not be found in the registry. The applications available are: org.eclipse.ant.core.antRunner.
    at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:216)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:376)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:163)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.eclipse.core.launcher.Main.invokeFramework(Main.java:334)
    at org.eclipse.core.launcher.Main.basicRun(Main.java:278)
    at org.eclipse.core.launcher.Main.run(Main.java:973)
    at org.eclipse.core.launcher.Main.main(Main.java:948)

    # re: 在Eclipse RCP中使用ResourceNavigator[未登錄]  回復  更多評論   

    2007-10-25 10:43 by nemo
    @homer
    這個問題應該是你的GefTest.application沒有被找到。跟ResourceNavigator類關系不大。你可以查看一下你RCP插件(擁有Application類的插件)中的Application類所在的插件工程的plugin.xml中,org.eclipse.core.runtime.application擴展點中察看一下你所指定的Application類對不對,以及Application Id 和你在XXX.product中所指定的Id是否一致(如果擁有產品文件的話)。
    如果沒有問題的話,確保你的RCP插件中的插件依賴項和xxx.product中的依賴項一致。
    還有可能是依賴項的順序問題...這就比較麻煩了。

    # re: 在Eclipse RCP中使用ResourceNavigator  回復  更多評論   

    2007-10-26 13:02 by homer
    謝謝!nemo,我想建一個自己的導航器,麻煩你能告訴我擴展ResourceNavigator時怎么做嗎?直接繼承是不是不行?謝謝,我剛剛學習GEF,很多都不懂,別見笑。

    # re: 在Eclipse RCP中使用ResourceNavigator[未登錄]  回復  更多評論   

    2007-10-26 14:38 by nemo
    @homer
    可以直接擴展ResourceNavigator,網上有相關的文章:

    http://www.cnblogs.com/Aimd/archive/2006/05/15/400753.html

    不知道你有什么樣的需求,如果是基于GEF/EMF做的話,可以考慮使用ProjectExplorer。如果你要保留Eclipse資源所支持的大部分功能,在此基礎上定制一些自己的樹結點,只要擴展org.eclipse.ui.navigator.navigatorContent擴展點,定義一些triggerpoint,并且自己提供navigatorContentProvider, navigatorLableProvider, navigatorActionProvider,就可以達到此目的。

    nemo

    # re: 在Eclipse RCP中使用ResourceNavigator  回復  更多評論   

    2007-10-26 16:38 by homer
    @nemo
    謝謝,我試試,遇到不懂的地方再向你請教。能夠留一下你的郵箱嗎?我的mail是homer4503@126.com

    # re: 在Eclipse RCP中使用ResourceNavigator  回復  更多評論   

    2007-10-26 20:03 by homer
    @nemo
    nemo,你好,請問在gef中如何把view和editpart聯系起來呢?

    posts - 21, comments - 74, trackbacks - 0, articles - 3

    Copyright © nemo

    主站蜘蛛池模板: 日本亚洲高清乱码中文在线观看| 羞羞的视频在线免费观看| 亚洲国产精品久久久久| 亚洲bt加勒比一区二区| 亚洲精品中文字幕乱码三区| 亚洲精品~无码抽插| 亚洲成人在线免费观看| 亚洲成av人无码亚洲成av人| ssswww日本免费网站片| 97av免费视频| 亚洲网站免费观看| 99re热免费精品视频观看| 免费乱码中文字幕网站| 国产亚洲成av片在线观看| 亚洲沟沟美女亚洲沟沟| 亚洲精品成a人在线观看夫| 国产无限免费观看黄网站| 67194成手机免费观看| 在线观看国产情趣免费视频| 亚洲人成人77777网站| 亚洲av无码专区国产乱码在线观看 | 久久九九亚洲精品| 99久久久国产精品免费牛牛四川| 和日本免费不卡在线v| 亚洲精品99久久久久中文字幕| 亚洲av综合色区| **真实毛片免费观看| 日日操夜夜操免费视频| 亚洲第一福利网站| 免费电影在线观看网站| 国产亚洲精品a在线观看app| 亚洲国产日韩视频观看| 久久国产一片免费观看| 毛片免费全部免费观看| 亚洲国产日韩一区高清在线| 成人亚洲国产精品久久| 一级毛片在线免费观看| 久久亚洲2019中文字幕| 亚洲中文字幕一二三四区| 中国好声音第二季免费播放| 成人看的午夜免费毛片|