深入 Common Navigator Framework 之 Navigator

2.1 概述

Navigator 是CNF中用来显示资源结构的Viewer(视图),对于一个一般的Viewer,Eclipse使用扩展点org.eclipse.ui.views声明,在CNF中则使用org.eclipse.ui.navigator.viewer声明一个用于Navigator的专用视图。Eclipse中的Project Explorer就是一个已经实现了的Navigator示例,下面是效果图:

2.2 扩展点

这里我们详细看看扩展点org.eclipse.ui.navigator.viewer,下面是这个扩展点的示意图:


它可以定义以下四项内容:
1.    viewer:指定作为Navigator的视图,只需要指定一个ID就行了,具体的Viewer在org.eclipse.ui.views里面定义;
2.    viewerContentBinding:引用或排除navigator使用的navigatorContent,它将在其他的扩展点——org.eclipse.ui.navigator.navigatorContent/navigatorContent里面定义,详细见第三节,同样引用ID就行了,支持正则式匹配;
3.    viewerActionBinding:引用或排除navigator使用的actionProvider,它将在其他的扩展点——org.eclipse.ui.navigator.navigatorContent/actionProvider定义,详细见第六节,支持正则式匹配;
4.    dragAssistant:指定提供拖拽操作的类,这个类一般继承自org.eclipse.ui.navigator.CommonDragAdapterAssistant。

 


这里有几点值得说明一下,org.eclipse.ui.navigator.viewer作为CNF的Navigator扩展点,指定了Navigator所使用的Viewer,而且还包含了contentBinding和actionBinding以及dragAssistant,其中contentBinding和actionBinding都是引用其他的扩展点定义的内容:navigatorContent、commonFilters和actionProvider,使用中一般将前者归于contentBinding,而后者归于actionBinding。
比如:

2.3 Eclipse Navigator实现

Eclipse的Project Explorer就是一个完整的CNF实现的示例,它位于插件org.eclipse.ui.navigator.resources中,实现类为ProjectExplorer,看看它的类型层析结构:


这里的CommonNavigator就是CNF的Navigator实现的关键类,很多情况下,用户可以直接使用它,或者扩展它。CommonNavigator主要包括以下主要内容:

 

2.3.1 CommonViewer

org.eclipse.ui.navigator.CommonViewer,显示树形结构的控件,其实就是扩展了TreeViewer,添加了一些功能而已。

 

2.3.2 NavigatorActionService 

org.eclipse.ui.navigator.NavigatorActionService,管理在扩展点中定义的ActionProvider。简单的说就是提取定义的actionProvider菜单扩展点,然后显示在视图上。

 

2.3.3 INavigatorContentService

org.eclipse.ui.navigator.INavigatorContentService,管理扩展点中定义的navigatorContent。简单的说就是提取出Viewer显示所需要的Label Provider和Content Provider,记忆可能的过滤器、排序等。

 

2.3.4 LinkHelperService

org.eclipse.ui.navigator.LinkHelperService,管理扩展点中定义的LinkHelper,提供树形节点与编辑器的关联。

 

2.4 说明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值