`

使用CommonNavigator开发资源管理器(转)

    博客分类:
  • Java
 
阅读更多

无论在哪一个开发工具中,资源管理器无疑都是使用最频繁的功能之一,因此一个资源器好用与否在很大程度上就决定了一个开发工具的易用程度。我们常用的Eclipse工具中的Java资源管理器就是一个非常优秀的资源管理器,所以在EOS Studio中,我们也照样抄袭它的功能,但是Java的资源管理器做了非常多的功能。如果从头开始做一个相似的资源管理器将是一个非常大的工作量,无论技术风险还是项目时间,都是非常可观的。幸好Eclipse还提供了一个优秀的插件org.eclipse.ui.navigator(以下简称为CNF,即Common Navigator Framework),这个插件提供了完整而且灵活的扩展机制,可以帮助开发人员进行各种相应的类资源管理器功能。其实这个插件在WTP在自己的项目中提供的,最早是用来开发数据库视图的(根源在于RAD6.0,但在WTP中,源代码被大量重写,所以直接就写成WTP),这个插件有足够的实力证明了自己的优秀,随后在Eclipse3.2版本中,它正式成为Eclipse UI层的核心插件之一,默认的Eclipse平台上有一个Project Explorer视图,就是基于它开发的一个资源管理器视图,它允许各种插件提供相应的内容,从而定制适合于各种环境下的资源管理器,下图显示了它的界面和相应的扩展功能。
     
    左面是一个对应的资源管理器,而右面的对话框则显示了当前资源管理器提供的扩展功能,可以方便用户选择各种资源管理视图的处理方式。

Studio在org.eclipse.ui.navigator的基础上开发了资源管理视图,以及相应的功能,因此要扩展和维护Studio的资源管理器,就需要先了解org.eclipse.ui.navigator这个插件,特别是它的扩展机制。

org.eclipse.ui.navigator尽管只提供了以下三个扩展点,却涉及到expression,还有wizard,filter等一堆内容,所以还是比较复杂的。

 

org.eclipse.ui.navigator.viewer

用来在视图和扩展之间建立关系

org.eclipse.ui.navigator.navigatorContent

用来提供模型,菜单以及过滤器等内容

org.eclipse.ui.navigator.linkHelper

用来支持文件与资源管理器联动

现在先用一个简单的实例方便开发人员上手,以便进一步了解相关的内容。这个实例就是使用现有的资源,无须编写一行代码,仅仅是通过plugin.xml的配置来配置出一个简单的Java资源管理器。

首先,请先通过向导新建一个Eclipse插件项目org.demo.navigator,如下图所示:



    在新建完项目以后,请导入以下插件:

org.eclipse.core.runtime

Eclipse的核心之一

org.eclipse.core.resources

Eclipse的资源模型

org.eclipse.ui

Eclipse的UI框架

org.eclipse.ui.navigator

我们本章要讲的插件

org.eclipse.ui.navigator.resources

一个基于org.eclipse.ui.navigator的插件,提供了ProjectExplorer视图

然后在Eclipse扩展配置的功能页面中,进行了一系列配置以后,可以得到以下的内容,心急的同学可以将该内容复制到plugin.xml文件中,然后运行该插件,即可看到一个简单的Eclipse资源管理器。

<?xml version="1.0" encoding="UTF-8"?>

<?eclipse version="3.2"?>

<plugin>

   <extension

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

      <view

            category="org.eclipse.ui"

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

            id="org.demo.navigator.view"

            name="DemoNavigator"/>

   </extension>

   <extension

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

      <viewer viewerId="org.demo.navigator.view"/>

      <viewerContentBindingviewerId="org.demo.navigator.view">

         <includes>

            <contentExtension pattern="org.demo.navigator.*"/>

            <actionExtension pattern="org.demo.navigator.*"/>

         </includes>

      </viewerContentBinding>

   </extension>

   <extension

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

      <navigatorContent

           contentProvider="org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionContentProvider"

            id="org.demo.navigator.content"

           labelProvider="org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionLabelProvider"

            name="DemoNavigator">

         <enablement>

            <or>

               <instanceofvalue="org.eclipse.core.resources.IResource"/>

               <adapt type="org.eclipse.core.resources.IProject"/>

            </or>

         </enablement>

      </navigatorContent>

   </extension>

</plugin>


    

    尽管我们并没有写任何一行Java代码,但是却已经提供了一个具有基本功能的资源管理器,由此可以该插件的强大。

现在针对对应的配置图来讲述相应的内容:



    在这个例子,使用了三个扩展点,分别是:org.eclipse.ui.views,org.eclipse.ui.navigator.viewer和org.eclipse.ui.navigator.navigatorContent。

Eclipse插件开发人员对于org.eclipse.ui.views一定不陌生,因为这是Eclipse中最常用的一个扩展点,它用来定义Eclipse的视图,象属性视图,大纲视图都是通过该扩展点来定义的。

org.eclipse.ui.navigator.viewer则是CNF的一个基本扩展点,它提供了将org.eclipse.ui.navigator.navigatorContent与一个CommonNavigator绑定的功能。

   <extension

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

      <viewer viewerId="org.demo.navigator.view"/>

      <viewerContentBindingviewerId="org.demo.navigator.view">

         <includes>

            <contentExtension pattern="org.demo.navigator.*"/>

            <actionExtension pattern="org.demo.navigator.*"/>

         </includes>

      </viewerContentBinding>

   </extension>

这段代码表示所有名称符合"org.demo.navigator.*"的org.eclipse.ui.navigator.navigatorContent都可作为资源管理器的树模型扩展。

最后一个扩展点org.eclipse.ui.navigator.navigatorContent的配置则是CNF框架中最为复杂的一个点,在例子中,则只采用了最简单的配置信息。

   <extension

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

      <navigatorContent

           contentProvider="org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionContentProvider"

            id="org.demo.navigator.content"

           labelProvider="org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionLabelProvider"

            name="DemoNavigator">

         <enablement>

            <or>

               <instanceofvalue="org.eclipse.core.resources.IResource"/>

               <adapt type="org.eclipse.core.resources.IProject"/>

            </or>

         </enablement>

      </navigatorContent>

   </extension>

每一个org.eclipse.ui.navigator.navigatorContent扩展点都有相应的contentProvider和labelProvider属性,用来定制树模型以及相应的显示功能。而enablement则表示,在何种情况下,才会调用激活这个指定的扩展功能。enablement则采用了org.eclipse.core.expression中定义的扩展点,支持各种复杂的表达式,方便开发人员定义各种条件。

分享到:
评论

相关推荐

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

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

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

    总的来说,使用`CommonNavigator`开发资源管理器涉及到Eclipse插件开发的核心概念,包括扩展点、内容提供者和视图定制。理解并掌握这些概念,可以让你构建出符合特定工作流程的高效资源管理工具。在实践中,需要注意...

    定义自己的Common Navigator二

    总的来说,自定义Common Navigator需要对Eclipse插件开发和CNF有深入的理解,但它提供了极大的灵活性,使开发者能够构建出符合项目需求的定制化资源管理界面。通过不断地学习和实践,你将能够自如地驾驭这一强大的...

    CommonNavigator

    在IT行业中,CommonNavigator是一个非常重要的概念,尤其是在Android应用开发领域。它是一种设计模式,用于构建通用的导航视图,帮助开发者实现具有统一导航结构的应用界面。标题"CommonNavigator"和描述...

    eclipse插件开发之Common Navigator View

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

    Eclipse RCP Common Navigator Demo

    Eclipse RCP(Rich Client Platform)是一个开源的开发框架,由Eclipse基金会提供,用于构建桌面应用程序。...通过深入学习和实践,开发者可以掌握如何创建高效、可扩展的资源管理视图,提升应用程序的用户体验。

    Common Navigator Framework学习资料

    `org.eclipse.ui.navigator.viewer`和`org.eclipse.ui.navigator.resourceViewer`是与CNF相关的两个主要扩展点,用于注册新的导航视图和资源查看器。 7. **适配器(Adapters)**:适配器机制是CNF中的一大特色,它...

    CommonNavigatorFramework(CNF)实例源码

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

    Eclipse Rcp comon Navigator demo

    总的来说,Eclipse RCP Common Navigator demo是一个很好的起点,让你理解如何构建一个自定义的资源管理界面。通过逐步学习和实践,你可以掌握Eclipse RCP的强大功能,创建出满足各种需求的桌面应用程序。在扩展过程...

    【资料整理】中国Eclipse社区开发资料整理

    Common Navigator Framework是这个生态系统中的关键一环,它为开发者提供了构建高效、灵活的资源管理视图的能力。通过学习这份资料,开发者不仅能掌握如何利用此框架,还能深化对Eclipse插件开发的理解,提升自己的...

    java集成开发工具eclipse

    1. **开放源码**:Eclipse 是一个开源项目,遵循 Common Public License (CPL) 协议,允许用户免费使用并进行二次开发。 2. **可扩展性**:Eclipse 的核心平台提供了一种插件机制,允许开发者根据需要安装各种功能...

    eclipse教程

    视图提供了特定的功能,如文件资源管理器、大纲视图等,可以通过拖放进行自定义布局。 #### 编辑器(Editor) 编辑器用于显示和编辑资源,例如Java源代码文件或XML文件。 #### 视景(Perspective) 视景是一组预设的...

    eclipse 开发c/c++

    如果正在运行 Linux,只要通过使用适用于您分发版的软件包管理器来安装开发软件包。 在 Windows平台上,将需要安装 Cygwin 工具箱(请参阅 参考资料以获得链接)。Cygwin 是用于 Windows 的类 UNIX 环境,它包括 ...

    Eclipse RCP Plug-in开发自学教程(Eclipse3.6)

    21. **专题六**:COMMON NAVIGATOR FRAMEWORK初探 - 对Eclipse通用导航框架的基本介绍。 通过本教程,开发者可以逐步掌握Eclipse RCP的各个关键概念和技术,从而能够开发出自己的富客户端应用程序。每个章节都包含...

    CIM Tutorial

    CIM与DEN结合使用时,可以通过目录服务来访问和管理网络资源,进一步提高了管理效率和灵活性。 1. **DEN特点**:DEN利用了LDAP等目录服务的技术,使得网络管理信息能够被方便地查询和修改。 2. **CIM与DEN集成**:...

    eclipse.pdf

    - **Common Navigator**:一个通用的资源导航器,可以用来浏览文件、项目等资源。 - **Platform Plug-in Development Environment**:提供了一系列工具,帮助开发者创建和测试Eclipse插件。 ### EMF&GEF介绍 EMF...

    php开发有关笔记综合汇总

    3. **PHP-FPM (FastCGI Process Manager)**:PHP FastCGI的管理器,常与Nginx搭配使用。 ### PHP 和 JavaScript 交互 虽然PHP主要运行在服务器端,但可以通过AJAX(Asynchronous JavaScript and XML)技术与客户端...

    自主web服务器相关内容描述

    从浏览器的历史发展来看,从Netscape Navigator到IE浏览器,再到今日流行的Chrome、Firefox等,浏览器技术的进步推动了Web技术的革新。而在服务器端,Apache和其他服务器软件的出现和发展,也是互联网技术进步的重要...

    LotusScript编程指导(第3卷)(英文)

    - **处理视图条目和导航器**:可以使用`ViewEntry`和`Navigator`类来操作视图中的数据。 - **刷新视图**:使用`refresh`方法可以刷新视图数据。 - **删除视图**:通过`remove`方法可以从数据库中删除视图。 ##### 6...

Global site tag (gtag.js) - Google Analytics