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

定义自己的Common Navigator二

阅读更多

这一节和下一节我们都将来关注另一个扩展点:

org.eclipse.ui.navigator.navigatorContent

首先我们先增加一个扩展声明,然后看看它支持什么东西:

acn8

图六

可以看到在这个扩展点下可以定义四个子元素。其中:

      actionProvider:用来定义可以action的。

      commonFilter:定义过滤器

      commonWizard:定义快捷wizard

      navigatorContent:定义内容导航

其中第一和第三个元素通常不需要扩展。而且我发现这两个扩展点几乎没有实现,很奇怪。我们一会可以看到,在navigatorContent元素也有两个同样的扩展,一般都是在这个元素里做扩展。

说了和没说一样,下面就以例子来讲解。

  1. commonFilter

先讲简单的commonFilter,很显然是用来定义过滤的。在第一节里,我们已经给我们的navigator加了resource的过滤。我们再来加一些。例如,我们想有一个过滤掉全部以pda结尾的文件。那我们可以这样实现:

<commonFilter

    activeByDefault="false"

    description="this used to filter all files whose extensions is  pda"

     id="com.tibco.cdc.liugang.navigator.filter.pda"

     name="Filter pda files">

     <filterExpression>

        <and>

          <instanceof

                     value="org.eclipse.core.resources.IFile">

          </instanceof>

          <test

                     property="org.eclipse.core.resources.extension"

                     value="pda">

               </test>

            </and>

    </filterExpression>

</commonFilter>

这样我们就定义好了一个过滤器。不过我们要使用它的话,需要把它加到我们的navigator上,所以在我们第一节定义的viewer扩展点的contentBindingincludes里加上一句:

      <contentExtension

        pattern="com.tibco.cdc.liugang.navigator.filter.pda">

      </contentExtension>

OK,我们已经完成了我们的过滤声明:

 

acn9

图七

图七中,当我们选中我们扩展的过滤器后,所有的pda文件都已经消失了。

 

  1. navigatorContent

下面来完成一个navigator content扩展。这个稍微有点复杂。首先我们先完成一个声明。如下

<navigatorContent

            activeByDefault="true"

            contentProvider="com.tibco.cdc.liugang.navigator.content.XMLTreeContentProvider"

            icon="icons/alt_window_16.gif"

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

            labelProvider="com.tibco.cdc.liugang.navigator.content.XMLLabelProvider"

            name="XML Navigator Content"

            priority="normal">

</navigatorContent>

这里我想做的是:如果是一个xml文件,则显示它的结构。这主要是要完成contentProviderlabelProvider。我们先完成这个。代码就不贴了。可以参考附件!

 

需要注意的是:这里我们是要给xml文件加一个内容导航,因此在contentProvider里传入的有可能是IFile类型。所以我们要注意我们的contentProvider的实现方法。

 

定义完了一个内容以后,并不是会自动被显示的,我们需要给它加一个触发点。这就是要在navigatorContent下增加一个子元素“triggerPoints”,triggerPoints用来指示我们的扩展所感兴趣的内容。实际我们的触发点就是一个xml文件,因此我们可以如下实现:

<triggerPoints>

     <and>

         <instanceof

               value="org.eclipse.core.resources.IFile">

         </instanceof>

         <test

               forcePluginActivation="true"

       property="org.eclipse.core.resources.extension"

               value="xml">

          </test>

     </and>

</triggerPoints>

其实意思就是:如果选择的是一个文件,并且文件扩展名为“xml”,则触发我们的内容导航。好了, 这样就完成了我们的xml文件的内容导航,最后不要忘了把它加到我们的Navigatorviewer声明里去,如下在viewerContentBindingincludes下加上:

 

      <contentExtension

           pattern="com.tibco.cdc.liugang.navigator.navigatorContent">

</contentExtension>

 

现在我们的图如下:

 

acn91

图八

 

补充:

一个完整的内容导航,我们除了要显示它之外,还需要有一个监听机制,就是eclipse已经实现的resourceChangeListener。这样当外部有修改时,我们的内容也能显示正确。

  • content.zip (1.5 KB)
  • 描述: 附件代码
  • 下载次数: 371
分享到:
评论
5 楼 zxjlwt 2015-08-17  
学习了。

http://surenpi.com
4 楼 lizhensan 2011-06-21  
可以服务器的毛病,现在好了。。谢谢,好文章。。
3 楼 lizhensan 2011-06-21  
博主,你这里提供的附近怎么不能下载?
2 楼 lizhensan 2011-06-21  
怎么不就可以下载?
1 楼 zhazha1984 2009-02-04  
很不错的东西,刚好需要,哈哈~~

相关推荐

    eclipse插件开发之Common Navigator View

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

    Common Navigator Framework学习资料

    2. **ICommonNavigator**:这是CNF的核心接口,定义了导航视图的基本行为。通过实现此接口,开发者可以定制导航视图的外观和交互方式。 3. **NavigatorViewer**:它是CNF提供的默认实现,用于创建基础的导航视图。...

    salever_Common_Navigator_Framework_分析

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

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

    【使用CommonNavigator开发资源管理器】的文档主要介绍了如何利用Eclipse的Common Navigator Framework (CNF) 插件来创建自定义的资源管理器。Common Navigator Framework是Eclipse平台的一部分,它提供了一套完整的...

    使用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

    2. **通过`org.eclipse.ui.navigator.navigatorContent`作为动作提供者贡献操作**:有时客户需要更程序化的控制,具体包括哪些操作贡献到特定上下文下的某个菜单,以及根据当前选择配置了哪些可重定向操作。...

    flutter-common-widgets-app-master.zip

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

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

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

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

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

    jquery.jqGrid源码.zip

    总的来说,通过分析jqGrid的源码,开发者不仅可以定制化自己的表格功能,还可以学习到jQuery、JavaScript以及前端数据管理的高级技巧。在实际开发中,掌握jqGrid的源码将大大提高工作效率,同时也能提升对前端技术的...

    Eclipse-4-RCP教程

    - **Common Navigator**:提供了一个统一的资源视图,可用于浏览项目结构等。 #### 四、下载Eclipse SDK 为了开始开发Eclipse RCP应用,首先需要下载并安装Eclipse SDK(Software Development Kit),该套件包含了...

Global site tag (gtag.js) - Google Analytics