Eclipse RCP 概述(1)

2007-12-12 09:31

RCP(Rich Client Platform)富客户端平台是基于Eclipse插件开发的一种应用。它是Eclipse 3.0版本后新增的一项功能。通过RCP可以快速构建应用程序,具有广阔的应用前景。选自《Eclipse SWT/JFace核心应用

22.1 RCP概述

在Eclipse平台的发展过程中,倡导的是插 件的思想。可以说,插件是Eclipse平台的核心内容,但所有的这些插件的运行都要依赖于Eclipse平台的存在。但当程序员开发桌面的应用时,往往 想摆脱对Eclipse IDE的依赖,而是希望使用最小的运行环境来运行系统。所以在Eclipse 3.0以后的版本中逐步地将插件的运行从Eclipse的运行平台中剥离出来,从而形成了RCP。

简单地说,RCP系统本质上是Eclipse的插件,但运行时却能够脱离Eclipse平台而独立运行。这就使得RCP的应用更加灵活和广泛。

22.1.1 什么是RCP

RCP本质上是Eclipse的插件,所以当开发RCP应用程序时,可以利用Eclipse平台UI外观和框 架来快速地进行开发。例如创建一个菜单栏、工具栏,在RCP开发中很容易,只需要作一定的配置后,编写简单的代码就可以实现复杂的功能,这样就避免了许多 重复性的工作。

RCP的系统可以脱离Eclipse平台独立运行,这样大大减少了打包程序后文件的体积,使系统更加小巧和雅观。图22.1清晰地显示了RCP与Eclipse的关系。

图22.1 RCP与Eclipse的关系图

另外,最重要的是Eclipse是一个开源平台,所以采用RCP也可以极大地降低系统的成本,具有很高的商业价值。

22.1.2 RCP应用的现状

RCP在Java桌面应用有很广阔的前景,就目前来说,已经进行了广泛的应用。主要分两大阵营,开源的和商业的。

1.开源的应用

   ● Azureus:http://azureus.sourceforge.net/,BitTorrent下载客户端软件,以支持40种语言,功能强大, 已经被上百万的用户下载使用,并且获得了2006年Sourceforge.net的Best Overall Winner大奖。

   ● Bioclipse:http://www.bioclipse.net/index.php,生物信息学的一个绘图软件,可以绘制出DNA的3D图形,有兴趣的读者可以下载下来具体看一下。

   ● BrainBox:http://eclipsetrader.sourceforge.net/,基于RCP的股票交易软件,可以实时地查看股票信息和股票的历史走势图等。

   ● jCommander:http://jcommander.sourceforge.net/,基于选项卡界面效果的文件系统管理软件,可轻松地实现文件的管理。

   ● jFire:http://jfire.org/,基于J2EE的ERP软件,包括产品管理、客户管理、用户管理等模块,具有很灵活的自定义功能。另外,还使用了GEF和BIRT构建丰富的报表图形系统。还提供了扩展点,允许用户在此基础上进行开发。

   ● jLibrary:http://jlibrary.sourceforge.net/,开源的文档管理系统(DMS),可以将普通文件、视频文件和其他类型的文件进行分类,也可以进行查找和分类等。

   ● Zhongwen Development Tool(ZDT):http://zdt.sourceforge.net/,学习中文的一个软件,值得庆幸的是该软件是中国人开发的。如图22.2所示为该软件主界面的效果图。

图22.2 ZDT软件的主界面

2.商业的应用

   ● Actuate BIRT Report Designer:http://www.actuate.com/birt,BIRT是Eclipse的一个报表开发引擎的插件,该软件是BIRT报表的设计可视化客户端软件。使用该软件可轻松地创建所需的报表。

   ● Bay Breeze Software - SQL Edge:http://www.baybreezesoft.com/,提供了可视化的执行SQL语句的工作环境,能够显示环境数据库中表的关系图,也能够浏览表中的数据。

   ● BSI CRM on Eclipse:http://www.bsiag.com/joomla/index.php,CRM客户关系管理软件,包括联系人管理、任务管理、项目管理和市场管理等。

   ● IBM Workplace Client Technology:http://www-128.ibm.com/developerworks/ workplace/ products/clienttechnology/,IBM的客户管理软件。该软件的界面效果如图22.3所示。

图22.3 商业的RCP应用

% 注意: 读者若想了解更多的RCP应用案例,可以访问网站http://www.eclipse.org/ community/ rcp.php。

从以上这些RCP的实现案例中可以看出,RCP的应用非常广阔,从系统的文件管理到J2EE的企业管理软件,从可视化的报表工具到3D绘图,都可以应用RCP。只要是开发桌面的应用就都可以采用RCP来进行开发。

22.2 第一个RCP项目

了解了RCP有这么丰富的应用后,读者一定想迫不及待地知道如何来开发RCP程序。那么本节将一步步地讲述如何来开发RCP程序。

22.2.1 创建插件项目

RCP的开发基于Eclipse插件的开发,所以创建RCP的项目也是从创建插件项目开始的。以下为创建一个RCP程序的步骤:

(1)选择“文件”|“新建”|“项目”命令,在弹出的“新建项目”对话框中选择“插件项目”,单击“下一步”按钮,弹出如图22.4所示的对话框。

(2)输入项目名称为MyRCP,其他设置如图22.4所示。然后单击“下一步”按钮,弹出如图22.5所示的输入插件项目详细信息的对话框。

图22.4 “新建插件项目”对话框                   图22.5 输入插件信息

(3)在该对话框中可以设置一些插件的信息,例如这里输入插件标识为“com. fengmanfei.myrcp”。为了保持唯一性,不与其他的插件混淆,一般使用网址加名称的形式。但要注意,一定要选中是否要创建富客户端应用程序 选项。如果不选中,创建的只是普通的Eclipse插件项目,而不是RCP应用程序。按照如图22.5所示的设置完成后,单击“下一步”按钮,弹出如图 22.6所示的对话框。

(4)在该对话框中,提供了创建RCP程序的几个常用的模板,这里选择Hello RCP模板。这是最简单的RCP程序,只有一个主界面。然后单击“下一步”按钮,弹出如图22.7所示的对话框。

(5)在该对话框中可以对RCP程序进行简单的配置,如窗口显示的标题等,这里使用向导默认的值。然后单击“完成”按钮,这样一个RCP的项目就新建完成了。

  

图22.6 选择RCP程序的模板                 图22.7 设置初始化程序的配置

22.2.2 运行RCP程序

创建完RCP项目后的Eclipse平台会出现如图22.8所示的界面。

图22.8 创建RCP项目后的界面

在左侧的项目文件中,会看到自动生成了一些RCP所需要的一些文件,这些都是利用创建向导自动生成的,是 RCP程序运行所必需的一些文件。右侧是该项目的描述信息。可以单击右侧的标签来查看设置具体的插件配置参数。22.2.3节将着重讲述这些参数和文件的 意义。要运行RCP程序,有以下两种方法:

   ● 最简单的方法是在右侧“测试”信息框中,单击“启动Eclipse应用程序”链接来运行。如果想要以调试方式运行,则单击“以调试方式启动Eclipse应用程序”链接。

   ● 另外也可以用传统的方式运行RCP程序。在项目工程名称处右击,在弹出的快捷菜单中选择“运行方式”|“Eclipse应用程序”命令,也可以运行RCP程序。

无论是哪种方式运行,使用以上方法创建的RCP程序运行后的界面效果如图22.9所示。

  

图22.9 RCP程序运行后的效果图

从图22.9中可以看出,使用向导创建的Hello RCP程序很简单,运行后只有一个主窗口界面,这就是一个最简单的RCP程序。然后开发RCP的工作就是如何在该基础上进行开发,按照需要来开发界面的效果。

用个比喻来说,现在的这个RCP程序好比是一座空房子,里面什么都没有,接下来的开发的工作就是进行房子的装修,按照设计来添置不同的家具。

22.2.3 插件的文件清单

在进行插件开发之前,首先来看一下22.2.2节中利用向导建立的项目中各个文件所代表的意义。

(1)看一下自动生成的各个文件,如图22.10所示。

图22.10 项目的文件结构

这些文件的具体说明如下:

   ● src文件夹下为运行插件时的一些类文件。

   ● MANIFEST.MF为插件清单文件,是插件与外界沟通的桥梁。

   ● build.properties文件为构建RCP程序时所导入的类库设置。

   ● plugin.xml是最重要的文件,该文件是插件的配置文件,集中管理插件内部的运行,在该文件中可以查找所有与该插件有关的信息。

(2)看一下插件的配置信息。在如图22.11所示的选项卡中,可以单击切换不同的选项卡。

图22.11 插件配置选项卡

如图22.11所示的各选项卡所表示的意义如下:

   ● “概述”选项卡可以查看该插件项目所有定义配置信息。

   ● “依赖项”、“运行时”选项卡是设置MANIFEST.MF文件的,在这两个选项卡所做的修改将同步应用于MANIFEST.MF文件。在Eclipse之前的版本中,没有MANIFEST.MF文件时,则是在plugin.xml文件中配置的。

   ● “扩展”选项卡是插件开发最重要的内容,各个插件都是基于扩展点的。在该选项卡中可以设置插件所使用的扩展点,并且在该选项卡中所做的配置将同步改变pluglin.xml文件中的内容。

   ● “扩展点”选项卡用来设置该插件提供其他开发者的接口。如果想让其他开发人员对该插件进行开发,通常要提供这些开发人员一些接口,创建自定义的一些扩展点。

   ● “构建”选项卡可以可视化配置build.properties文件,“build.properties”选项卡可以查看该文件的源文件。

22.2.4 MANIFEST.MF文件

MANIFEST.MF文件是保存OSGi 的 Bundle文件。OSGi开放服务网关协议(Open Services Gateway Initiative)是一个框架规范。OSGi规范为网络服务定义了一个标准的、面向组件的计算环境,它最初的目的就是为各种嵌入式设备提供通用的软件 运行平台,屏蔽设备操作系统与硬件区别的中间件平台。Eclipse OSGi 框架支持该规范。目前,OSGi 联盟发布的最新OSGi服务规范为4.0。

通俗地讲,该文件也就是与其他平台的接口,通过该接口,外部平台可以使用该Eclipse的插件程序。如果读者有兴趣,可以访问http://www.osgi.org/,以了解更多该规范的信息。

1.MANIFEST.MF文件清单

下面具体来看一下MANIFEST.MF文件所配置的信息,如图22.12所示为MANIFEST. MF文件。

图22.12 MANIFEST.MF文件

其中,可以发现这些信息都是以key和value值来描述的。这些key值所表示的意义,可以参考Eclipse自带的参考帮助文档。以下是几个关键的key值所表示的意义。

   ● Bundle-Name:插件的名称。

   ● Bundle-SymbolicName:为插件的唯一标识。

   ● Bundle-Activator:为主程序启动的类的全名。

   ● Require-Bundle:系统编译和运行的依赖项,可以加入其他所必需的插件。

2.添加依赖项

在编译和运行程序时,可能需要使用其他插件类库,这时可以在“依赖项”选项卡中单击“添加”按钮,然后选择运行时所必需的插件或者是某一个插件的类包。如图22.13所示为导入了Ant构建包后的界面。

图22.13 导入依赖项

这样添加依赖项后,MANIFEST.MF文件会加入以下的代码:

Require-Bundle: org.eclipse.ui,

org.eclipse.core.runtime,

org.eclipse.ant.core

此时可以看到,刚才导入的org.eclipse.ant.core自动添加到了Require- Bundle的值中。另外需要注意的是,这些类包加载是按照顺序进行的,所以可以使用“向上”和“向下”按钮进行调整。当然,运行时加载的插件只要能满足 系统运行即可,越少越好,因为太多了会影响插件运行的加载速度。

22.2.5 build.properties文件

build.properties是保存构建、打包和导出插件所需的所有信息的文件。如图22.14所示为配置构建文件的界面。在该界面上的设置将会保存到build.properties文件中。例如,此时该文件中的代码如下:

source.. = src/

output.. = bin/

bin.includes = META-INF/,/

               .,/

               bin/

jars.compile.order = .

其中,source表示源文件的路径,output表示编译后的.class文件所在的路径,bin.includes表示打包后包中所包含的文件,jars.compile.order为编译的顺序。

图22.14 构建界面

22.2.6 plugin.xml文件

plugin.xml文件是插件开发中最重要的文件,包含声明插件的扩展和扩展点配置。如 图22.15所示为该文件的源代码界面。

下面仔细分析一下各个扩展点的意义。每个扩展点都是一个<extension>元素。下面以第一个扩展点为例,说明各属性的意义。

   ● id="application",表示该扩展点的标识。

   ● point="org.eclipse.core.runtime.applications",表示扩展点的类型。这里表示该扩展点是系统扩展点,例如另一个扩展点类型“org.eclipse.ui.perspectives”为透视图扩展点。

   ● <run>子项中定义了系统启动的class类,为com.fengmanfei.myrcp.Application,可以在源文件下找到这个.java源文件。

图22.15 plugin.xml文件

对于不同的扩展点有不同的配置元素,读者可以参考Eclipse的帮助文档。另外,读者无须手动输入这些配置文件,使用Eclipse自带的创建扩展点向导就可以轻松地完成创建扩展点的工作。

22.3 RCP运行的基本原理

了解了这些配置文件后,下面仔细讲解一下整个 RCP运行的过程。在22.2节创建的项目中,已经自动生成了MyRCPPlugin、Application、 ApplicationActionBarAdvisor、Application WorkbenchAdvisor和Perspective类。这些类是怎样联系起来的呢?就是以下所要学习的内容。

22.3.1 插件类MyRCPPlugin

系统运行后首先在MANIFEST.MF文件中找到Bundle-Activator所对应的插件类,本项目中是myRCP.MyRCPPlugin类,表示是在myRCP包下的MyRCPPlugin类和该类的具体代码如下:

MyRCPPlugin.java

package myRCP;

import org.eclipse.ui.plugin.*;

import org.eclipse.jface.resource.ImageDescriptor;

import org.osgi.framework.BundleContext;

/**

* 该插件类继承自AbstractUIPlugin类

*/

public class MyRCPPlugin extends AbstractUIPlugin {

    //插件类的对象,为静态对象

    private static MyRCPPlugin plugin;

    /**

    * 构造方法

    */

    public MyRCPPlugin() {

        plugin = this;

    }

    /**

    * 装载Bundle文件并启动插件

    */

    public void start(BundleContext context) throws Exception {

        super.start(context);

    }

    /**

    * 插件运行结束后执行该方法

    */

    public void stop(BundleContext context) throws Exception {

        super.stop(context);

        plugin = null;

    }

    /**

    * 返回该插件的对象

    */

    public static MyRCPPlugin getDefault() {

        return plugin;

    }

    /**

    * 返回相对于插件包文件下的相对路径的图片文件

    *

    * @param path the path

    * @return the image descriptor

    */

    public static ImageDescriptor getImageDescriptor(String path) {

        return AbstractUIPlugin.imageDescriptorFromPlugin("com.fengmanfei.myrcp", path);

    }

}

该类主要创建整个插件的对象,是插件的全局对象。可以通过该类的静态方法获得插件对象的引用,然后获得插件的各种信息,包括插件所对应的Bundle文件信息、log日志对象和工作台对象等。例如,以下代码可以获得该插件在MANIFEST.MF定义的标识符。

MyRCPPlugin.getDefault().getBundle().getSymbolicName();

通过MyRCPPlugin.getDefault()还能获得插件的其他对象。各种方法请读者参阅Eclipse API 帮助文档。

来自:http://hi.baidu.com/rooot/blog/item/83b2e9fc4e472ffefd037f49.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 1.富客户端平台 1 1.1.概述 1 1.2.Eclipse RCP 建设风格——插件扩展扩展点 1 2.创建你的第一个RCP程序 1 2.1.创建一个RCP程序 2 2.2.启动你的RCP程序 5 2.3.应用程序VS 产品 6 3.应用程序里的插件ID 7 4.Actions的用法(菜单和工具栏) 7 4.1.概述 7 4.2.通过编码添加 8 4.3.由“扩展”方式向程序添加菜单和工具栏 11 5.添加组合键 19 5.1.概述 19 5.2.声明actions的组合键 19 6.系统托盘 24 7.外观 30 7.1.向程序中添加视图模板 31 7.2.向应用程序添加VIEW 36 7.3.向VIEW里添加action 40 8.和编辑器一起工作 51 8.1.概述 51 8.2.创建工程 51 8.3.创建并准备domain 模型 51 8.4.在视口中使用domain模型 57 8.5.加入编辑器 58 8.6.调用编辑器 66 8.7.向编辑器提供内容 70 9.对话框 71 9.1概述 71 9.2.预定义的对话框 71 9.2.1.概述 71 9.2.2.创建工程 71 9.2.3.声明action 71 9.2.4.调用对话框 71 9.3.用户自定义对话框 74 9.3.1.概述 74 9.3.2.创建工程 74 9.3.3.声明action 74 9.3.4.声明action 74 9.3.5.创建对话框 75 10.向导(wizard) 77 10.1.概述 77 10.2.例子 77 11.首选项 85 11.1 首选项 85 11.2.使用首选项 85 11.3.首选项页 91 12.添加状态条 97 12.1.安装状态条 97 12.2.共享状态条 98 13.透视 103 13.1.向你的程序中添加透视图 103 13.2.使透视图可选。 107 13.2.1.使透视图可由一个coolbar可选 107 13.2.2.使透视图可通过菜单选择。 109 14.进度报告 112 15.将外部类包含进你的程序 118 15.1.概述 118 15.2.向构建路径中添加jar 118 15.3.使jar在你的运行路径里有效 119 16.提示和策略 120 16.1.控制台日志 120 16.2.保存用户的布局 121 16.3.获得display 122 16.4.使用eclipse的“保存”action 123 16.5.装载模型 127 16.6.向你的程序添加错误日志视口 127 17.制造一个产品 129 17.1.概述 129 17.2.创建一个工程 130 17.3.测试你的产品 134 18.商标 134 18.1.欢迎页面 134 18.2.商标 135 18.3.风格化launcher 136 19.发布你的产品 137 20.发布引入外部jar的产品 141 20.1.整合外部jar和第三方库 141 Tip 142 21.1.创建一个新工程 144 21.2.创建一个产品 144 21.3.添加依赖性 145 21.4.向程序中添加action 146 21.5.创建一个帮助插件工程////原著写的不好 149 22.附录:配置文件 152 22.1.概述 152 22.2..project 153 22.3.Manifest.MF 154 23.附录:使用接口技术 154 23.2.Jface 154
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值