`

在Eclipse RCP中使用ResourceNavigator

阅读更多
文章转自:http://www.cn-java.com/www1/?uid-550649-action-viewspace-itemid-4217

Eclipse 的资源浏览器很强大,可以很方便的查看工作空间中可供适配的资源,并且提供了对排序、过滤等功能的支持。Eclipse的RCP项目组不赞成我们在富客户端应用程序中使用ResourceNavigator,原因是ResourceNavigator的实现代码位于Eclipse IDE中,如果使用资源浏览器,生成的RCP产品将会增加二十多兆的空间,而且会增加许多我们的产品中并不使用的功能,很浪费磁盘和系统资源。他们赞成我们根据需要,为应用程序量身定做树形浏览器视图,但是,基于方便和对强大功能的追求,以及对Eclipse代码优良性的肯定,插件开发者们仍然希望将资源浏览器直接加入到我们的RCP程序中。为了满足广大Eclipse开发者强烈的要求,本文对在Eclipse RCP中使用ResourceNavigator的方法做较为全面的介绍。

同资源导航器相关的ID为:
ID:           org.eclipse.ui.views.ResourceNavigator
   CLASS:   org.eclipse.ui.ide/org.eclipse.ui.views.navigator/ResourceNavigator.class
   ICON:      位于org.eclipse.ui.ide工程目录的icons文件夹中,名称为fileNav_nav.gif。可通过解压.jar文件获得图像文件。


1. 如果我们的RCP程序中的默认透视图中要使用导航器,可能需要在RCP插件(包含有Application.java文件的插件)的plugin.xml中加入这个视图:
plugin.xml
  
 <extension
          point="org.eclipse.ui.views">
       <view
             class="org.eclipse.ui.views.navigator.ResourceNavigator"
             icon="icons/filenav_nav.gif"
             id="org.eclipse.ui.views.ResourceNavigator"
             name="导航器">
       </view>
    </extension>


2. 如果我们需要在RCP程序中默认显示导航器,则需要在定义的透视图(假设透视图已经定义)类中加入类似下面的代码:
Perspective.java
        IFolderLayout leftFolder = layout.createFolder("leftFolderLayout", //$NON-NLS-1$
                IPageLayout.LEFT, 0.25f, editorArea);
        leftFolder.addPlaceholder("org.eclipse.ui.views.ResourceNavigator"+":*");
        leftFolder.addView("org.eclipse.ui.views.ResourceNavigator");


第1、2两行创建一个IFolderLayout实例,表示在编辑器区域左侧创建一个FolderLayout。
第3行为ResourceNavigator添加一个占位符,使用的是ResourceNavigator的ID,后面的“:*”表示还可以有更多的内容,即可以同更多的视图共享这个位置。
第4行将ResourceNavigator加入这个布局中,从而在应用程序启动,默认透视图打开时,导航器出现在页面的左侧。

3. 导航器在RCP程序中无法显示的问题。
许多开发者在使用Navigator生成RCP程序时都遇到过这样的错误:
Log
1Unable to create view: Plug-in "newPmbe.custom" was unable to instantiate class
"org.eclipse.ui.views.navigator.ResourceNavigator".


这个问题的具体描述我已经在前面的博客中介绍了,它需要安装兼容性插件同以前的系统兼容。在PDE环境下,打开plugin.xml,在“Dependencies”页面中加入下面的插件:
org.eclipse.core.runtime.compatibility


上述所说的问题便解决了。

4. 工作空间的资源在导航器中无法显示的问题。
解决了第三个问题后,导航器中的资源可以显示了,但是其中的工程文件夹图标仍然无法显示,只能光秃秃的显示一个项目名,如下图所示:


为了正确的显示项目的图标,我们需要在RCP插件的ApplicationWorkbenchAdvisor类中加入如下代码:
ApplicationWorkbenchAdvisor
    public void initialize(IWorkbenchConfigurer configurer)
    {
        configurer.declareImage(IDE.SharedImages.IMG_OBJ_PROJECT,
                    YOURPlugin.getImageDescriptor("icons/prj_obj.gif"), true);
        super.initialize(configurer);
    }

上面代码的第4行中的路径"icons/prj_obj.gif"为我们为工程文件夹提供的图标相对于RCP插件中的位置,YOURPlugin代表RCP插件中的插件类(或XXXActivator)
这样我们便得到了我们希望的Navigaotor:


上面3-4行代码也同时给我们提供了修改Eclipse Navigator中默认图标的一种方式。Just Enjoy it!


其他的话:

Eclipse 3.2版本出台后,Eclipse团队专门提供出了org.eclipse.ui.navigator插件,用来支持在ProjectExplorer的基础上进行的二次开发。而从GMF(Grapic Modeling Framework)2.0 M6开始,对自动生成树形浏览器视图提供了支持,所用到的正是这个插件所提供的功能强大的org.eclipse.ui.navigatorContent扩展点:http://wiki.eclipse.org/index.php/GMF_New_and_Noteworthy#2.0_M6,这使得我们在对资源定制的基础上,可以对资源中的元素进行定制,因而功能更为强大(不过这个扩展点是我见过的最为复杂的扩展点之一)。这使得我们对 ResourceNavigator的要求有所降低。Anyway,直接使用Eclipse的ResourceNavigator可以为快速定制的原型系统提供基本的支持,这对开发者来说还是非常有用的。
分享到:
评论

相关推荐

    Eclipse RCP中使用第三方包

    然而,在实际开发中,我们经常需要使用第三方包来实现某些功能,这篇文章将介绍如何在Eclipse RCP中使用第三方包。 首先,我们需要新建一个Eclipse RCP应用程序,然后创建一个lib目录作为存放第三方库的目录。在这...

    Eclipse RCP Common Navigator Demo

    在Eclipse RCP中,Common Navigator Framework (CNF) 是一个关键组件,它提供了一种灵活的方式来展示资源树结构,类似于Eclipse IDE中的“Package Explorer”或“Project Explorer”。"Eclipse RCP Common Navigator...

    Eclipse Rcp comon Navigator demo

    在本"Common Navigator demo"中,我们将深入探讨如何利用Eclipse RCP创建一个基于Common Navigator的简单应用,并了解如何扩展这一基础功能。 首先,Common Navigator是Eclipse RCP中用于显示项目、文件和其他资源...

    Eclipse rcp深入浅出中英文版及配套代码

    10. **调试和测试**:书中还会介绍如何在Eclipse RCP环境中进行调试和编写单元测试。 11. **扩展点(Extension Points)**:这是Eclipse RCP插件系统的关键特性,允许插件之间通过定义和使用扩展点来相互协作。 12...

    Eclipse RCP 软件打包发布方法

    1. **新建“产品配置”**:在Eclipse中,你需要通过"File" -&gt; "New" -&gt; "Other" -&gt; "Plug-in Development" -&gt; "Product Configuration"来创建一个新的产品配置。这个配置定义了你的应用程序的基本属性,如应用程序的...

    Eclipse RCP(富客户端平台)开发中文语言包_3.6.0.rar

    要在Eclipse RCP项目中使用这个语言包,首先需要将其导入到Eclipse环境中。然后,在项目的插件配置中,引用该语言包作为依赖,这样在运行时,Eclipse会自动加载并显示中文界面。对于开发插件,还需要确保插件的本地...

    eclipse rcp应用系统开发方法与实战源代码.zip

    在"eclipse rcp应用系统开发方法与实战源代码.zip"中,我们可以学习到以下关键知识点: 1. **Eclipse RCP架构**:理解Eclipse RCP的基础架构非常重要,包括插件(Plugins)、工作台(Workbench)、视图(Views)、...

    EclipseRCP教程

    在本教程中,我们将详细介绍 Eclipse RCP 的开发过程、技术要点和注意事项,以帮助开发者快速掌握 Eclipse RCP 的开发技术。 一、Eclipse RCP 的技术要点 Eclipse RCP 的核心技术包括: 1. SWT(Standard Widget ...

    eclipse RCP Plug-in开发自学教程.pdf

    eclipse RCP(Rich Client Platform)是一种基于eclipse的插件式开发平台,允许开发者使用eclipse结构风格设计弹性的可扩展的应用程序。RCP插件式开发方式可以重用eclipse中的方法和编码模式,提高开发效率和代码...

    Eclipse RCP.pdf清晰版

    1. **创建新的Eclipse插件项目**: 在Eclipse中选择File -&gt; New -&gt; Other -&gt; Plug-in Project。 2. **定义插件元数据**: 描述插件的基本信息,如名称、ID、版本号等。 3. **实现功能**: 开发插件的核心逻辑和用户界面...

    Eclipse Rcp

    虽然SWT/JFace开发基础知识是可选的,但是这些是Eclipse RCP开发中常用的图形用户界面技术,熟悉它们会对开发有所帮助。 Eclipse RCP应用的开发过程需要利用Eclipse插件开发工具PDE(Plug-in Development ...

    ECLIPSE+RCP应用系统开发方法与实战(PDF 高岗著)

    5. **命令和服务**:Eclipse RCP中的命令(Command)和服务(Service)机制,用于实现应用的可扩展性和互操作性,读者将学习如何定义和使用这些组件。 6. **透视图和工作台**:透视图(Perspective)定义了工作空间...

    在Eclipse RCP中应用Spring OSGI 管理bean(一)

    标题中的“在Eclipse RCP中应用Spring OSGI 管理bean(一)”表明这是一篇关于如何在Eclipse Rich Client Platform (RCP)应用程序中集成Spring框架,并利用OSGi服务来管理Bean的教程。Eclipse RCP是一个用于构建桌面...

    EclipseRcp 例子程序

    在“Eclipse RCP 例子程序”中,我们可能找到一系列的示例代码和项目,这些示例展示了如何利用Eclipse RCP的各种组件和机制来构建实际的应用。以下是一些关键的知识点: 1. **插件系统**:Eclipse RCP的核心是其...

    eclipse RCP mp3工程

    【描述】中的“非常棒的一个rcp应用程序”意味着这个工程展示了Eclipse RCP的强大功能和易用性,可能是通过集成MP3播放、管理、编辑等功能来实现的。"学习学习,快来下"则提示这个项目适合学习Eclipse RCP的开发者,...

    Eclipse RCP 插件开发指南

    在 Eclipse RCP 中,JUnit 可以用来验证插件的行为是否符合预期。编写良好的单元测试有助于确保代码的质量和稳定性。 ##### JFace Data Binding JFace 数据绑定提供了将 UI 控件与模型对象自动同步的能力。通过...

    JAVA3D动画 Eclipse RCP

    2. **创建RCP工程**:在Eclipse中,选择"File" &gt; "New" &gt; "Project",然后在"Plug-in Development"类别下选择"Eclipse RCP Application",按照向导完成新工程的创建。 3. **创建视图(View)**:RCP应用中的显示...

    Eclipse RCP培训.zip

    Eclipse Rich Client Platform(RCP)是Eclipse框架下的一个核心组成部分,用于构建桌面应用..."Eclipse RCP培训.zip"中的内容可能涵盖了这些方面,包括理论讲解、代码示例、练习项目等,是学习Eclipse RCP的好资源。

    ECLIPSE RCP项目源程序

    这个压缩包中的“ECLIPSE RCP项目源程序”包含了使用Eclipse RCP开发的一个项目的完整源代码,并且有中文注释,这对于初学者或有经验的开发者来说都是一个宝贵的资源。 Eclipse RCP的核心概念主要包括以下几个方面...

    eclipse rcp check table

    `CheckTableViewDemo.java`可能是演示如何在Eclipse RCP应用中创建和使用检查表的一个示例代码。在这个文件中,我们可以期待看到关于如何创建自定义表视图、添加复选框列以及处理用户选择事件的相关代码。开发者可能...

Global site tag (gtag.js) - Google Analytics