[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的代码。代码如下: