`
liugang594
  • 浏览: 987499 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

定义自己的Common Navigator一

阅读更多

所谓的Navigator,可以简单的理解为Eclipse中的资源导航视图,例如:

 

acn1

Project Explorer视图

 

acn2 

Project Explorer视图


这一系列,我们就要来实现一个类似的Navigator视图。

 

一、  定义Navigator

在开始之前,我们先了解一下做Navigator需要的扩展点:

1.      org.eclipse.ui.navigator.viewer

这个扩展点就是用来定义整个Navigator用的。例如:Navigator绑定到哪个View上;它的Content是什么;它的actions是什么;它怎么支持拖动的,等等。

这个扩展点的实质是将一些内容组合到一起来决定这个Navigator的,所以它本身几乎是不需要写代码的。

2.      org.eclipse.ui.navigator.navigatorContent

上一个扩展点,我们讲它需要有content的提供、action的提供者等等。这个扩展点就是用来提供这个用的。

当然,除了上面两个扩展点,我们也说是我们的Navigator需要绑定到一个view上,所以也需要一个org.eclipse.ui.views扩展点,因为这个扩展点比较通用,这里就不具体说了。

Navigator部分的API帮助,可以到以下包去找:org.eclipse.ui.navigator。所以显然你需要把这个插件包添加到依赖项里。

 

我们在做的时候也可以参照已有的实现:

 

acn3

图一

图一中,红色部分就是对应需要用到的两个扩展点,蓝色部分就是对应的定义了这个扩展点的插件。我们可以参考它们相应的实现来了解更多的应用方面的知识。

 

好。下面我们就来开始我们自己的Navigator。首先我们需要有一个插件工程。这个就不说了。首先我们定义一个org.eclipse.ui.views的扩展声明,如下:

   <extension

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

      <category

            id="com.tibco.cdc.liugang.navigator.category"

            name="Common Navigator">

      </category>

      <view

            allowMultiple="false"

            category="com.tibco.cdc.liugang.navigator.category"

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

            icon="icons/alt_window_16.gif"

            id="com.tibco.cdc.liugang.navigator.view"

            name="Sample Navigator">

      </view>

   </extension>

这里需要注意的是:

class需要设定为“org.eclipse.ui.navigator.CommonNavigator”,当然你也可以定义自己的实现。一般来说都没有必要。

现在我们已经可以运行,看到一个view了:

 

acn4

图二

Ok,一个view就定义完了,下面就是我们要关注的两个扩展点的实现了。这一节,我们先讲第一个扩展点org.eclipse.ui.navigator.viewer,后两节会讲到另一个扩展点:org.eclipse.ui.navigator.navigatorContent

所以我们再定义一个org.eclipse.ui.navigator.viewer扩展声明。在继续之前我们先看一下下图:

 

acn5

图三

其中:viewerActionBinding对应于action的支持,例如选择某个对象,显示一个什么的右键菜单;viewerContentBinding对应于内容提供,就是在这navigator上显示什么内容;viewer对应的就是这个navigator要显示在哪个view上。

这一节里,我们将利用已经有的定义来充实这个扩展点。具体哪些内容可以填充,请到图一的各个实现里去找就可以了。这里我参照resources的实现(后面我们会讲到自定义实现),如下:

   <extension

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

      <viewer

            viewerId="com.tibco.cdc.liugang.navigator.view">

      </viewer>

      <viewerActionBinding

            viewerId="com.tibco.cdc.liugang.navigator.view">

         <includes>

            <actionExtension

                  pattern="org.eclipse.ui.navigator.resources.*">

            </actionExtension>

         </includes>

      </viewerActionBinding>

      <viewerContentBinding

            viewerId="com.tibco.cdc.liugang.navigator.view">

         <includes>

            <contentExtension

                  pattern="org.eclipse.ui.navigator.resourceContent">

            </contentExtension>

         </includes>

      </viewerContentBinding>

   </extension>

好,我们现在运行看看:

 

acn6

图四

OK,我们的view里已经有内容了,而且已经支持了右键菜单了。现在还不支持过滤,如果要支持一个过滤器也是容易的。我们只要加一个content声明就可以了。例如加上:

            <contentExtension

                  pattern="org.eclipse.ui.navigator.resources.*">

            </contentExtension>

加上上面声明,我们就支持所有resource的实现。显示如下:

 

acn7

图五

看图五中,以“.”开始的资源已经被过滤了。并且我们也支持了一些其他的过滤和内容显示设置。

OK,我们已经初步有了一个自己的Navigator了。下面我们会逐渐的增加更多的内定。

分享到:
评论
4 楼 zxjlwt 2015-08-17  
学习了。

http://surenpi.com
3 楼 liugang594 2013-08-13  
这个,我不确定啊。。
2 楼 halu126 2013-08-12  
是不是我少了哪个插件啊?
1 楼 halu126 2013-08-12  
显示不出来,Navigator中是空的!

相关推荐

    定义自己的Common Navigator二

    这篇博客“定义自己的Common Navigator二”将深入探讨如何利用源码和工具来自定义这一组件,以满足特定项目的需求。 首先,我们来理解Common Navigator的核心概念。Common Navigator Framework (CNF) 是Eclipse中...

    eclipse插件开发之Common Navigator View

    3. **定义views扩展点**:在`plugin.xml`文件中,你需要声明一个新的`org.eclipse.ui.views`扩展点,指定视图的类(通常使用`org.eclipse.ui.navigator.CommonNavigator`)以及视图的ID。 4. **配置CommonNavigator...

    Common Navigator Framework学习资料

    Common Navigator Framework(CNF)是Eclipse平台中的一个重要组件,主要负责提供一种统一的方式来展示和操作项目的导航结构。这个框架允许开发者创建自定义的导航视图,以适应各种不同的项目类型和开发环境。以下是...

    salever_Common_Navigator_Framework_分析

    1. **Common Navigator Model**:这是框架的核心,它定义了一个通用的数据模型,用于表示各种类型的数据结构。该模型抽象了数据源,使得不同的数据源可以通过适配器转换为统一的表示。 2. **Navigator Viewer**:它...

    使用CommonNavigator开发资源管理器.doc

    例如,添加一个名为`DemoNavigator`的视图,并指定视图类为`org.eclipse.ui.navigator.CommonNavigator`。 6. **运行和测试**:完成配置后,将XML内容复制到`plugin.xml`文件中,然后运行插件,可以看到一个简单的...

    使用CommonNavigator开发资源管理器.pdf

    在Eclipse插件开发中,`CommonNavigator`框架是一个用于构建自定义资源管理器的关键组件。这个框架允许开发者创建和扩展资源视图,比如Eclipse的项目管理器。本篇文章将详细讲解如何利用`CommonNavigator`开发资源...

    CommonNavigatorFramework(CNF)实例源码

    `CommonNavigator`类是实现此功能的基础,开发者可以通过扩展这个类并重写相关方法来自定义视图行为。 3. **AdapterFactories**:CNF使用适配器工厂(AdapterFactory)将模型对象转换为可以被视图渲染的结构。...

    Eclipse Rcp comon Navigator demo

    7. **Part Descriptor**:定义Common Navigator视图在工作台中的位置和行为,通过`org.eclipse.ui.perspectiveExtensions`和`org.eclipse.ui.views`元素进行配置。 8. **Perspective**:你可以创建或修改现有透视图...

    CNF导航----building-common-navigator-framework-viewer

    3. **定义视图部分**:使用`org.eclipse.ui.views`扩展点来定义视图部分,并指定`org.eclipse.ui.navigator.CommonNavigator`类作为视图部分的实现。 #### 四、定义视图部分 接下来,我们将详细介绍如何定义视图...

    CNF导航----building-common-navigator-framework-viewer-ii

    本篇文章将继续深入探讨如何构建一个通用导航框架(Common Navigator Framework,简称CNF)查看器,并着重介绍如何向该查看器添加内容扩展。通过本教程的学习,您将能够掌握在CNF查看器中展示特定文件类型数据的方法...

    CNF导航----building-common-navigator-framework-viewer-IV

    &lt;menuContribution locationURI="popup:org.eclipse.ui.navigator.CommonNavigator#menu"&gt; commandId="com.example.deletePropertyCommand" label="Delete Property" style="push"&gt; ``` 这里,`...

    CNF导航----building-common-navigator-framework-viewer-III

    本篇文档介绍了两种配置通用导航框架 (CNF) 查看器菜单的方法:一种是通过`org.eclipse.ui.popupMenus`贡献操作,另一种是通过`org.eclipse.ui.navigator.navigatorContent`作为动作提供者贡献操作。这两种方法各有...

    flutter-common-widgets-app-master.zip

    本项目"flutter-common-widgets-app-master.zip"是一个专门为Flutter初学者和进阶者设计的Android开源项目,旨在帮助学习和提升Flutter开发技能。 项目的核心内容主要集中在对Flutter常见组件的实践运用上,这包括...

    Android实现九宫格横向左右滑动

    对于MagicIndicator,我们需要创建一个CommonNavigator实例并设置其适配器来定义指示器的行为。在这里,我们可以自定义每个页面标题的视图,并为未选中和选中的状态设置不同的图片: ```java CommonNavigator ...

    com.packtpub.e4.advanced:“高级 Eclipse 插件开发”一书的代码库 978-1783287796

    第 1 章:插入 JFace 和 Common Navigator 框架 第 2 章:使用自定义扩展点扩展 Eclipse 第 3 章:使用 OSGi 服务动态连接应用程序 第 4 章:为 Gogo shell 定义命令 第 5 章:本机代码和片段包 第 6 章:理解服务...

    jquery.jqGrid源码.zip

    jQuery.jqGrid是一款功能强大的JavaScript表格插件,它基于jQuery库,用于创建动态、交互式的网格视图。本篇文章将深入探讨jqGrid的源码,揭示其内部机制,帮助开发者更好地理解和利用这个工具。 首先,jqGrid的...

    CIM Tutorial

    **CIM(Common Information Model)**,即通用信息模型,是一种标准化的数据模型,旨在为管理信息提供一种统一的表示方式。它由**分布式管理任务组(DMTF)**制定,被广泛应用于网络设备、服务器、操作系统等各种IT...

Global site tag (gtag.js) - Google Analytics