在Eclipse RCP中使用ResourceNavigator

来源:互联网 发布:淘宝儿童女装秋装 编辑:程序博客网 时间:2024/03/29 15:15
 文章转自:http://www.cn-java.com/www1/?uid-550649-action-viewspace-itemid-4217

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中加入这个视图:


1    <extension
2          point="org.eclipse.ui.views">
3       <view
4             class="org.eclipse.ui.views.navigator.ResourceNavigator"
5             icon="icons/filenav_nav.gif"
6             id="org.eclipse.ui.views.ResourceNavigator"
7             name="导航器">
8       </view>
9    </extension>


2. 如果我们需要在RCP程序中默认显示导航器,则需要在定义的透视图(假设透视图已经定义)类中加入类似下面的代码:


1        IFolderLayout leftFolder = layout.createFolder("leftFolderLayout"//$NON-NLS-1$
2                IPageLayout.LEFT, 0.25f, editorArea);
3        leftFolder.addPlaceholder("org.eclipse.ui.views.ResourceNavigator"+":*");
4        leftFolder.addView("org.eclipse.ui.views.ResourceNavigator");


第1、2两行创建一个IFolderLayout实例,表示在编辑器区域左侧创建一个FolderLayout。
第3行为ResourceNavigator添加一个占位符,使用的是ResourceNavigator的ID,后面的“:*”表示还可以有更多的内容,即可以同更多的视图共享这个位置。
第4行将ResourceNavigator加入这个布局中,从而在应用程序启动,默认透视图打开时,导航器出现在页面的左侧。

3. 导航器在RCP程序中无法显示的问题。
许多开发者在使用Navigator生成RCP程序时都遇到过这样的错误:


1Unable to create view: Plug-in "newPmbe.custom" was unable to instantiate class
"
org.eclipse.ui.views.navigator.ResourceNavigator".


这个问题的具体描述我已经在前面的博客中介绍了,它需要安装兼容性插件同以前的系统兼容。在PDE环境下,打开plugin.xml,在“Dependencies”页面中加入下面的插件:

org.eclipse.core.runtime.compatibility


上述所说的问题便解决了。

4. 工作空间的资源在导航器中无法显示的问题。
解决了第三个问题后,导航器中的资源可以显示了,但是其中的工程文件夹图标仍然无法显示,只能光秃秃的显示一个项目名,如下图所示:


为了正确的显示项目的图标,我们需要在RCP插件的ApplicationWorkbenchAdvisor类中加入如下代码:


1    public void initialize(IWorkbenchConfigurer configurer)
2    {
3        configurer.declareImage(IDE.SharedImages.IMG_OBJ_PROJECT,
4                    YOURPlugin.getImageDescriptor("icons/prj_obj.gif"), true);
5        super.initialize(configurer);
6    }

上面代码的第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可以为快速定制的原型系 统提供基本的支持,这对开发者来说还是非常有用的。
原创粉丝点击