3.1 概述
Eclipse为了方便用户使用CNF,将它的资源模型管理功能封装为一个扩展点,用户只需要实现这个扩展点——org.eclipse.ui.navigator.navigatorContent/navigatorContent(注意它只是扩展点org.eclipse.ui.navigator.navigatorContent下的一项
),就可以使用定制资源模型的显示。
如果你对JFace Viewer的MVC机制有一定的了解的话,就会知道Content Provider和Label Provider的作用,在使用任何的JFace Viewer的时候,必须指定以上两个Provider。CNF的Navigator Content Extension扩展点的功能类似,它提供了CNF的Viewer所需要的Content Provider和Label Provider,这些都在扩展点的配置中显示指定。
3.2 扩展点
下面我们看看扩展点org.eclipse.ui.navigator.navigatorContent/navigatorContent的具体内容:
这里对contentProvider属性和LabelProvider属性进行讲解,其他的属性请自行查阅帮助文档。
3.2.1 contentProvider属性
contentProvider需要指定一个类,这个类等同于JFace Viewer的Content Provider,因此它需要实现TreeContentProvider或者是ICommonContentProvider接口。后者提供了更丰富的功能,其定义为:
public interface ICommonContentProvider extends ITreeContentProvider,IMementoAware
3.2.2 labelProvider属性
与contentProvider属性类似,它提供了CNF的Viewer显示所用的标签,指定为labelProvider的类需要实现接口ILabelProvide。鉴于Navigator Viewer中的节点(比如文件)的显示名称的复杂性,Eclipse还提供了额外的接口,方便用户实现这些复杂的功能,比如工具条提示、状态栏提示等:
- 1. org.eclipse.ui.navigator.IDescriptionProvider,提供状态栏提示信息,具体效果为,当点击某个文件时候,Eclipse最下方的状态栏上会提示一些信息。
- 2. org.eclipse.ui.navigator.ICommonContentProvider,它继承了ILabelProvider,IMementoAware,IDescriptionProvider,除了能提供状态栏提示以外,它还提供了Memento支持。
3.2.3 triggerPoints
这个用来指定何时使用这个contentProvider,按字面意思理解就是“触发点”。
3.2.4 possibleChildren
这个用来指定contentProvider中的子节点模型。
看看Eclipse的workingset contentProvider中的设置:
3.3 Eclipse实现
接下来讲一讲Eclipse中的Navigator的contentProvider的实现,这里基本版本3.5(或者以上)。
navigatorContent的声明:
主要就是contentProvider和labelProvider的值,分别为:
- 对应的content provider则由ResourceExtensionContentProvider提供,它位于包org.eclipse.ui.internal.navigator.resources.workbench.下。下面看看它的类型层次结构:
- 对应的label provider则由ResourceExtensionLabelProvider实现,它位于包org.eclipse.ui.internal.navigator.resources.workbench下,下面是它的类型层次结构图:
其实navigator content的主要功能就是提供内容器和标签器,Eclipse将文件系统上的文件资源与Resource包下的IResource进行了一一对应,从而使得Navigator导航视图能够显示属性的文件结构。
值得一提的是,Eclipse的Navigator视图的标签器的实现比较强大,除了能显示工程、文件夹、文件之外,还可以实现其他的效果,比如添加了SVN之后的标记,错误提示等。
这些功能都来自于类org.eclipse.ui.model.WorkbenchLabelProvider,我们不妨简单看一看它的getText()实现:
public final String getText(Object element) {
//query the element for its label
IWorkbenchAdapter adapter = getAdapter(element);
if (adapter == null) {
return ""; //$NON-NLS-1$
}
String label = adapter.getLabel(element);
//return the decorated label
return decorateText(label, element);
}
它借用了Eclipse的Adapter
机制,大家不妨去深入研究一下。
分享到:
相关推荐
Common Navigator Framework(CNF)是Eclipse平台中的一...通过深入学习和实践这些知识点,开发者能够熟练地利用Common Navigator Framework来创建自定义的、满足特定需求的导航视图,提升Eclipse开发环境的用户体验。
在《Common_Navigator_Framework_分析.pdf》这份文档中,读者可以深入学习CNF的架构、工作原理以及如何进行定制开发。通过实例和代码示例,文档详细解释了如何使用CNF的API来创建自定义的导航视图,并提供了适配器和...
`CommonNavigator`类是实现此功能的基础,开发者可以通过扩展这个类并重写相关方法来自定义视图行为。 3. **AdapterFactories**:CNF使用适配器工厂(AdapterFactory)将模型对象转换为可以被视图渲染的结构。...
Common Navigator Framework (CNF) 是Eclipse中用于构建可扩展、可定制的资源导航视图的API。它提供了基本的结构,如树状视图,以及处理模型、适配器、过滤器、排序等功能。开发者可以通过实现一系列接口和扩展点,...
【Eclipse插件开发之Common Navigator View】是关于在Eclipse插件开发中创建和定制一个基于Common Navigator View(CNV)的视图的过程。Common Navigator View是一种通用的视图结构,通常用于显示项目的资源层次结构...
【使用CommonNavigator开发资源管理器】的文档主要介绍了如何利用Eclipse的Common Navigator Framework (CNF) 插件来创建自定义的资源管理器。Common Navigator Framework是Eclipse平台的一部分,它提供了一套完整的...
在Eclipse RCP中,Common Navigator Framework (CNF) 是一个关键组件,它提供了一种灵活的方式来展示资源树结构,类似于Eclipse IDE中的“Package Explorer”或“Project Explorer”。"Eclipse RCP Common Navigator...
**插件开发之:Common Navigator View (CNV) 通用导航试图.mht文件**: 这个文件名表明它可能是一个关于如何在插件系统中使用CommonNavigator的教程或文档。MHT(MHTML)文件是一种包含网页完整内容的单个文件,...
在本文档中,我们将深入探讨如何构建一个基于Eclipse平台的通用导航框架(Common Navigator Framework, CNF)查看器。这不仅适用于Eclipse平台的新手开发者,也适合希望深入了解CNF工作原理及其实现细节的高级用户。...
本篇文章将继续深入探讨如何构建一个通用导航框架(Common Navigator Framework,简称CNF)查看器,并着重介绍如何向该查看器添加内容扩展。通过本教程的学习,您将能够掌握在CNF查看器中展示特定文件类型数据的方法...
在前一篇文章中,我们探讨了如何为一个通用导航器(Common Navigator)实例配置弹出菜单。我们了解到,通用导航器可以通过 `org.eclipse.ui.navigator.viewer` 扩展点声明所有菜单插入点,并且可以指定是否应尊重对 ...
《中国Eclipse社区开发资料整理》是一份针对Eclipse开发工具的...通过阅读并实践这些教程,开发者可以更深入地理解Eclipse的内在工作原理,并能自如地利用Common Navigator Framework构建出符合项目需求的个性化视图。
在Eclipse插件开发中,`CommonNavigator`框架是一个用于构建自定义资源管理器的关键组件。这个框架允许开发者创建和扩展资源视图,比如Eclipse的项目管理器。本篇文章将详细讲解如何利用`CommonNavigator`开发资源...
2. **通过`org.eclipse.ui.navigator.navigatorContent`作为动作提供者贡献操作**:有时客户需要更程序化的控制,具体包括哪些操作贡献到特定上下文下的某个菜单,以及根据当前选择配置了哪些可重定向操作。...
在本"Common Navigator demo"中,我们将深入探讨如何利用Eclipse RCP创建一个基于Common Navigator的简单应用,并了解如何扩展这一基础功能。 首先,Common Navigator是Eclipse RCP中用于显示项目、文件和其他资源...
互换积分是LJ-Navigator2的核心特性之一,这可能涉及到数据处理、通信协议解析或者设备状态监控等方面。在调试过程中,用户可以通过此功能来检查和调整设备间的交互数据,确保数据交换的准确性和效率。这对于保证...
本文将深入探讨OptiX Navigator的功能特性、使用方法及其在华为传输系统中的关键作用。 一、OptiX Navigator简介 OptiX Navigator是华为传输网络管理系统的核心组件,主要用于实现对华为OptiX系列传输设备的远程...