[Eclipse]:一个兑现了ViewPart和EditroPart的简单RCP例子
[Eclipse]:一个实现了ViewPart和EditroPart的简单RCP例子
最近作了个rcp程序的例子,结合这个例子来了解一下RCP的一些原理,怎样开发rcp程序,以及在初学RCP时会遇到哪些问题。希望对大家有所帮助
不当之处,请指正。
示例开发时环境:
------eclipse3.2
------jdk1.5.0_08
首先说一下我理解的RCP。一个rcp就是一个应用程序,只是这个应用程序不像大多数我们常用的应用程序。现在经常用的应用程序在发布后想再扩展一些功能,就需要重新在原有代码基础上进行修改。而rcp程序有一个优点,它可以实现插件是扩展。即可在现有程序的基础上增加一个插件,这个插件实现了我们要扩展的功能。
其实,整个eclipse体系中,核心的东西是一个很小的内核。其余的都是许许多多的插件由这个很小的内核组织起来,形成我们看到的eclipse的一个完整的开发环境。举个例子,我们整个实验室可以认为是一个eclipse开发环境。我们每个人就是一个插件,负责不同的方向,实现不同的功能;师兄可以认为是那个内核,负责把我们组织起来,把每个人的功能发挥出来。现在RCP也是同样的道理,可以认为一个RCP就是一个简化了的eclipse平台,它只包含5个插件:runtime是核心类,osgi是定义的一个标准,用来规范不同的插件,让他们可以相互协作。剩下的三个插件Workbench、SWT、JFace是用来显示给用户界面的。因此我们主要的精力应该放在对这三个插件的开发上。
前面介绍了一下eclipse和rcp的体系结构,在实际程序中遇到最多的还是一下几个主要概念,Workbench、Workbenchwindow、WorkbenchPage、Perspective、WorkbenchPart。其中WorkbenchPart又包含ViewPart和EditorPart;可以看出这几个概念是针对用户界面的。 理解了这几个概念以及它们之间的关系。基本上rcp就差不多了解了。需要注意的是这几个概念及其关系有个整体的把握即可,在初学阶段不应该花大量时间去研究它们为什么会存在这种关系,为什么是这样,而不是那样等等很抽象的一些东西上面。
下面就结合上面的几个主要概念,做一个比较简单的例子,几个主要步骤如下:
1、新建一个工程
2、创建一个ViewPart
3、为ViewPart创建菜单
4、添加菜单Action
5、创建一个EditorPart
6、创建调用EditorPart的Action
下面是具体步骤:
第一步:建立一个RCP工程。
file—> new—> project,选择plug-in project—> next 给工程起个名字MyRcp,其他不变—> next 这步中注意:在对话框最下面 Would you like to create a rich client application? 一定要选择yes —> next 这步选择一个模版:RCP applicatin with an intro—> next 直至finish
第二步:创建一个ViewPart
打开plugin.xml文件,会出现一个编辑器,找到extension选项卡 add—> 输入org.eclipse.ui.views 确定即可在extension选项页中会发现org.eclipse.ui.views,右键单击,选择new---views
设置 id=myrcp.view 记住此id,因为后面打开ViewPart时会用到。
Name=myrcp.view。
Class=myrcp.intro.CustomerViewPart此类继承了ViewPart接口。
在myrcp.intro包中创建这个类,注意创建时要实现ViewPart接口。具体如何实现如下:
在myrcp.intro包上右键—> new—> class 在对话框中给要建的类起名为:CustomerViewPart,
Superclass 对应的文本框中右侧Browse 在其中输入ViewPart确定即可。
现在只是扩展了一个ViewPart,并且实现了一个ViewPart对应的类,具体ViewPart上面有什么我们还没有定义。下一步在这个ViewPart上面添加一个talbeviewer,并且在tableviewer中要显示几行数据。说明一下,这几行数据是通过固定赋值的方式实例化三个Customer对象,因此在画tableviewer之前要做一下准备工作。
(1)、创建Customer对象类--------Customer.java。
(2)、建一个Customer工厂类------CustomerFactory.java 实际就是实例化几个Customer对象。
(3)、创建tableviewer的ContentProvider类-------CustomerContentProvider.java。
(4)、创建tableviewer的LabelProvider类--------CustomerLabelProvider.java。
tableviewer要想显示数据必须实现ContentProvider和LabelParvider类。
这四个.java文件放在附件的customer和provider文件夹中。
在CustomerViewPart的createPartControl()方法中加入创建tableviewer的代码。代码如下:
最近作了个rcp程序的例子,结合这个例子来了解一下RCP的一些原理,怎样开发rcp程序,以及在初学RCP时会遇到哪些问题。希望对大家有所帮助
不当之处,请指正。
示例开发时环境:
------eclipse3.2
------jdk1.5.0_08
首先说一下我理解的RCP。一个rcp就是一个应用程序,只是这个应用程序不像大多数我们常用的应用程序。现在经常用的应用程序在发布后想再扩展一些功能,就需要重新在原有代码基础上进行修改。而rcp程序有一个优点,它可以实现插件是扩展。即可在现有程序的基础上增加一个插件,这个插件实现了我们要扩展的功能。
其实,整个eclipse体系中,核心的东西是一个很小的内核。其余的都是许许多多的插件由这个很小的内核组织起来,形成我们看到的eclipse的一个完整的开发环境。举个例子,我们整个实验室可以认为是一个eclipse开发环境。我们每个人就是一个插件,负责不同的方向,实现不同的功能;师兄可以认为是那个内核,负责把我们组织起来,把每个人的功能发挥出来。现在RCP也是同样的道理,可以认为一个RCP就是一个简化了的eclipse平台,它只包含5个插件:runtime是核心类,osgi是定义的一个标准,用来规范不同的插件,让他们可以相互协作。剩下的三个插件Workbench、SWT、JFace是用来显示给用户界面的。因此我们主要的精力应该放在对这三个插件的开发上。
前面介绍了一下eclipse和rcp的体系结构,在实际程序中遇到最多的还是一下几个主要概念,Workbench、Workbenchwindow、WorkbenchPage、Perspective、WorkbenchPart。其中WorkbenchPart又包含ViewPart和EditorPart;可以看出这几个概念是针对用户界面的。 理解了这几个概念以及它们之间的关系。基本上rcp就差不多了解了。需要注意的是这几个概念及其关系有个整体的把握即可,在初学阶段不应该花大量时间去研究它们为什么会存在这种关系,为什么是这样,而不是那样等等很抽象的一些东西上面。
下面就结合上面的几个主要概念,做一个比较简单的例子,几个主要步骤如下:
1、新建一个工程
2、创建一个ViewPart
3、为ViewPart创建菜单
4、添加菜单Action
5、创建一个EditorPart
6、创建调用EditorPart的Action
下面是具体步骤:
第一步:建立一个RCP工程。
file—> new—> project,选择plug-in project—> next 给工程起个名字MyRcp,其他不变—> next 这步中注意:在对话框最下面 Would you like to create a rich client application? 一定要选择yes —> next 这步选择一个模版:RCP applicatin with an intro—> next 直至finish
第二步:创建一个ViewPart
打开plugin.xml文件,会出现一个编辑器,找到extension选项卡 add—> 输入org.eclipse.ui.views 确定即可在extension选项页中会发现org.eclipse.ui.views,右键单击,选择new---views
设置 id=myrcp.view 记住此id,因为后面打开ViewPart时会用到。
Name=myrcp.view。
Class=myrcp.intro.CustomerViewPart此类继承了ViewPart接口。
在myrcp.intro包中创建这个类,注意创建时要实现ViewPart接口。具体如何实现如下:
在myrcp.intro包上右键—> new—> class 在对话框中给要建的类起名为:CustomerViewPart,
Superclass 对应的文本框中右侧Browse 在其中输入ViewPart确定即可。
现在只是扩展了一个ViewPart,并且实现了一个ViewPart对应的类,具体ViewPart上面有什么我们还没有定义。下一步在这个ViewPart上面添加一个talbeviewer,并且在tableviewer中要显示几行数据。说明一下,这几行数据是通过固定赋值的方式实例化三个Customer对象,因此在画tableviewer之前要做一下准备工作。
(1)、创建Customer对象类--------Customer.java。
(2)、建一个Customer工厂类------CustomerFactory.java 实际就是实例化几个Customer对象。
(3)、创建tableviewer的ContentProvider类-------CustomerContentProvider.java。
(4)、创建tableviewer的LabelProvider类--------CustomerLabelProvider.java。
tableviewer要想显示数据必须实现ContentProvider和LabelParvider类。
这四个.java文件放在附件的customer和provider文件夹中。
在CustomerViewPart的createPartControl()方法中加入创建tableviewer的代码。代码如下: