在Eclipse RCP中使用ResourceNavigator

文章转自: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中加入这个视图:
plugin.xml
 <extension
point="org.eclipse.ui.views">
<view
class="org.eclipse.ui.views.navigator.ResourceNavigator"
icon="icons/filenav_nav.gif"
id="org.eclipse.ui.views.ResourceNavigator"
name="导航器">
</view>
</extension>


2. 如果我们需要在RCP程序中默认显示导航器,则需要在定义的透视图(假设透视图已经定义)类中加入类似下面的代码:
Perspective.java
        IFolderLayout leftFolder = layout.createFolder("leftFolderLayout", //$NON-NLS-1$
IPageLayout.LEFT, 0.25f, editorArea);
leftFolder.addPlaceholder("org.eclipse.ui.views.ResourceNavigator"+":*");
leftFolder.addView("org.eclipse.ui.views.ResourceNavigator");


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

3. 导航器在RCP程序中无法显示的问题。
许多开发者在使用Navigator生成RCP程序时都遇到过这样的错误:
Log
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类中加入如下代码:
ApplicationWorkbenchAdvisor
public void initialize(IWorkbenchConfigurer configurer)
{
configurer.declareImage(IDE.SharedImages.IMG_OBJ_PROJECT,
YOURPlugin.getImageDescriptor("icons/prj_obj.gif"), true);
super.initialize(configurer);
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值