<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 閱讀(3593) 評論(12)  編輯  收藏 所屬分類: EclipseRCP/SWT/JFACE
    Eclipse 的資源瀏覽器很強(qiáng)大,可以很方便的查看工作空間中可供適配的資源,并且提供了對排序、過濾等功能的支持。Eclipse的RCP項目組不贊成我們在富客戶端應(yīng)用程序中使用ResourceNavigator,原因是ResourceNavigator的實現(xiàn)代碼位于Eclipse IDE中,如果使用資源瀏覽器,生成的RCP產(chǎn)品將會增加二十多兆的空間,而且會增加許多我們的產(chǎn)品中并不使用的功能,很浪費磁盤和系統(tǒng)資源。他們贊成我們根據(jù)需要,為應(yīng)用程序量身定做樹形瀏覽器視圖,但是,基于方便和對強(qiáng)大功能的追求,以及對Eclipse代碼優(yōu)良性的肯定,插件開發(fā)者們?nèi)匀幌M麑①Y源瀏覽器直接加入到我們的RCP程序中。為了滿足廣大Eclipse開發(fā)者強(qiáng)烈的要求,本文對在Eclipse RCP中使用ResourceNavigator的方法做較為全面的介紹。

    同資源導(dǎo)航器相關(guān)的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程序中的默認(rèn)透視圖中要使用導(dǎo)航器,可能需要在RCP插件(包含有Application.java文件的插件)的plugin.xml中加入這個視圖:
    plugin.xml

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

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

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

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

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

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


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

    上面代碼的第4行中的路徑"icons/prj_obj.gif"為我們?yōu)楣こ涛募A提供的圖標(biāo)相對于RCP插件中的位置,YOURPlugin代表RCP插件中的插件類(或XXXActivator)
    這樣我們便得到了我們希望的Navigaotor:


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


    其他的話:

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

    Feedback

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

    2007-06-30 12:56 by nemo
    現(xiàn)在,隨著激動人心的eclipse3.3的正式發(fā)布,令人慶幸的一件事情發(fā)生了: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[未登錄]  回復(fù)  更多評論   

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

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

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

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

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

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

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

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

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

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

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

    2007-10-24 16:25 by homer
    樓主好:我按照你說的方法設(shè)置了ResourceNavigator后,把org.eclipse.ui.ide.jar包也導(dǎo)入工程了,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[未登錄]  回復(fù)  更多評論   

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

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

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

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

    2007-10-26 14:38 by nemo
    @homer
    可以直接擴(kuò)展ResourceNavigator,網(wǎng)上有相關(guān)的文章:

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

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

    nemo

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

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

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

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

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

    Copyright © nemo

    主站蜘蛛池模板: 99re在线精品视频免费| 亚洲国产AV无码专区亚洲AV| 亚洲V无码一区二区三区四区观看| 亚洲成在人线aⅴ免费毛片| 又粗又大又黑又长的免费视频| 成人免费视频试看120秒| 亚洲色婷婷六月亚洲婷婷6月| 亚洲一区免费在线观看| 国产免费福利体检区久久| 精品久久久久国产免费| 亚洲成AV人片在线观看无码| 在线观看黄片免费入口不卡| 毛片a级毛片免费播放100| 亚洲最大天堂无码精品区| 在线美女免费观看网站h| 亚洲精品无码AV中文字幕电影网站| 亚洲国产成人久久综合一区| 99精品免费视频| 亚洲国产精品久久久久久| 国产高清视频免费在线观看| 在线永久免费观看黄网站| 亚洲免费观看网站| 嫩草影院免费观看| 亚洲一区二区三区国产精品无码| 丁香花免费完整高清观看| 亚洲精品综合久久中文字幕| a级午夜毛片免费一区二区| 麻豆亚洲AV永久无码精品久久| 国产久爱免费精品视频 | 性色av无码免费一区二区三区| 亚洲av永久无码天堂网| 中文字幕一区二区三区免费视频| 日韩免费无砖专区2020狼| 一级做a爰片性色毛片免费网站| 在线观看免费精品国产| 一区二区在线视频免费观看| 免费一级毛片在级播放| 色综合久久精品亚洲国产| 亚洲日韩小电影在线观看| 久久久久久免费视频| 一级人做人爰a全过程免费视频|