您的位置:首页 > 其它

How to use Common Navigator in RCP

2012-04-24 20:30 281 查看
分类: Eclipse
RCP2010-01-22 14:56 728人阅读 评论(1) 收藏 举报

使用eclipse进行开发的人肯定对Project Explorer不陌生,这个view能够让你对你的工程进行管理,同时配有强大的排序和过滤功能,那么在一个RCP程序中,该如何来使用eclipse自带的资源导航器呢?

在eclipse3.2之前,ResourceNavigator就是这个资源导航器的实现,然后eclipse的开发者们并不希望RCP开发者直接使 用,因为它会使得你的rcp程序一下子变得庞大而臃肿,不仅容量增大了20M+,而且还会引入很多你并不需要的功能。但是本着方便及对Eclipse代码 健壮性肯定的原则,还是有不少开发者讲其使用在自己的程序中,Eclipse3.2之后,Eclipse的开发者们为了满足广大开发者的需求,开发了 Common Navigator Framework,让其代替Eclipse
Resource Navigator,现在我们在Eclipse3.4上使用ResourceNavigator就会看到一条横线,代表不推荐使用,在下一个版本将会去 掉。

本文讲简要介绍如何使用Common Navigator Framework:

第一步,需要在我们的程序中导入以下需要依赖的插件:

org.eclipse.ui.navigator
org.eclipse.ui.navigator.resources
org.eclipse.ui.ide
org.eclipse.core.resources

第二步,在org.eclipse.ui.views扩展点上新增一个view,其class选择org.eclipse.ui.navigator.CommonNavigator

<extension

point="org.eclipse.ui.views">

<view

name="View"

class="org.eclipse.ui.navigator.CommonNavigator"

id="example.view">

</view>

</extension>

第三步,在你的Perspective里面增加view的显示,方便我们查看显示效果,代码如下:

public void createInitialLayout(IPageLayout layout) {

String editorArea = layout.getEditorArea();

layout.setEditorAreaVisible(false);

layout.addStandaloneView("example.view", true /* show title */, IPageLayout.LEFT, 1.0f, editorArea);

//your code

}

到这里就可以看到我们的Navigator已经出来了,只不过还没有任何的内容,action也是仅有的两个。

为了看到内容,我们可以将工作区里的工程导入进Navigator来显示,所以你需要在你的WorkbenchAdvisor里重写getDefaultPageInput方法,代码如下:

public IAdaptable getDefaultPageInput() {

IWorkspace workspace = ResourcesPlugin.getWorkspace();

return workspace.getRoot();

}

上面的方法需要返回一个IAdaptable的接口,这个接口定义一个适配对象,能够动态地被扩展来提供不同的接口;我们需要将其和RCP平台挂钩上,我们需要在initialize方法里面增加以下代码:

WorkbenchAdapterBuilder.registerAdapters();

我们会注意到,这个WorkbenchAdapterBuilder .registerAdapers()方法是一个内部方法,而不是eclipse API的一部分,有可能在下一个release被替换掉,但是会有新的API来代替它。

现在我们运行一下我们的RCP程序,我们就可以看到我们这个程序的workspace下的工程的目录情况。

如果需要添加一个自带的Action,比如导入,新建工程等,我们可以添加 org.eclipse.ui.navigator.viewer 扩展点,建立viewerActionBinding和viewerContentBinding,均指向上面的view。

在 viewerActionBinding中将include org.eclipse.ui.navigator.resources

在 viewerContentBinding中将include

org.eclipse.ui.navigator.resources
org.eclipse.ui.navigator.resourceContent
org.eclipse.ui.navigator.resources.filters
org.eclipse.ui.navigator.resources.linkHelper
org.eclipse.ui.navigator.resources.workingSets

<extension

point="org.eclipse.ui.navigator.viewer">

<viewerActionBinding

viewerId="example.view">

<includes>

<actionExtension pattern="org.eclipse.ui.navigator.resources.*" />

</includes>

</viewerActionBinding>

<viewerContentBinding

viewerId="example.view">

<includes>

<contentExtension pattern="org.eclipse.ui.navigator.resourceContent" />

<contentExtension pattern="org.eclipse.ui.navigator.resources.filters.*"/>

<contentExtension pattern="org.eclipse.ui.navigator.resources.linkHelper"/>

<contentExtension pattern="org.eclipse.ui.navigator.resources.workingSets"/>

</includes>

</viewerContentBinding>

</extension>

那么现在运行一下,看看效果吧,是不是有点eclipse的里的感觉了?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: