在我们新建一个RCP应用程序框架时,eclipse会为我们自动生成若干个类:
网上也有很多关于“Hello RCP”的分析说明,但都聚集在类功能分析,没有源代码的分析。下面着重分析一下其中的某些不易理解的类以及其中涉及到的其它类的源代码。
-
Application类: 是RCP应用程序的入口点,你可以把它想象成程序的控制器,类似于Model2架构中的控制器。它很简短,而且在不同的项目中变化不大;它所做的就是创建 一个工作台Workbench,同时将其于一个WorkbenchAdvisor联系起来。Workbench是RCP框架的一部分,一个RCP应用对应 一个Workbench,但一个 Workbench可以有多个Workbench窗口。
-
ApplicationWorkbenchAdvisor类:继承了WorkbenchAdvisor类,提供了两个方法,其中createWorkbenchWindowAdvisor方法将创建窗口的工作交给了ApplicationWorkbenchWindowAdvisor类。
-
WorkbenchAdvisor类: 该类不是一个接口,而是一个抽象类,它不包含任何的功能实现,因为将来很有可能在其中添加其它方法。Eclipse的设计者们希望每个RCP应用都实现 它,由平台来调用。Workbench和WorkbenchWindow生命周期中的有一些重要事件,这些事件在WorkbenchAdvisor中都 有相应的方法,Platform调用这些方法从而执行你的定制代码。
表1. WorkbenchAdvisor提供的事件处理方法
方法
描述
参数
initialize |
第一个被调用,用来初始化,比如解析命令行,注册适配器,声明图像等。 |
IWorkbenchConfigurer |
preStartup |
在初始化结束,但是在第一个窗口打开前调用。可以被用来设置一些选项来影响初始打开的编辑器和视图。
|
|
postStartup |
在所有窗口已经被打开或恢复后,但是在事件循环开始前调用。它可以被用来启动自动处理器,打开提示或其他窗口。
|
|
preShutdown |
在事件循环结束后,但在任何窗口被关闭前调用。 |
|
postShutdown |
在关闭Workbench过程中,所有窗口被关闭后调用。它可以被用来存储当前的应用状态和清理任何由initialize创建的东西。 |
|
表2. WorkbenchAdvisor提供的事件循环钩子
方法
描述
参数
eventLoopException |
在事件循环中如果有未检测的异常则调用给方法。默认的实现将记录错误信息。 |
Throwable |
eventLoopIdle |
时间循环时什么也不做时调用 |
Display |
表3. WorkbenchAdvisor提供的信息获取方法,你可以在子类中覆盖
方法
描述
参数
getDefaultPageInput |
返回新的Workbench页面的缺省输入,缺省值是null。 |
|
getInitialWindowPerspectiveId |
返回新创建的WorkbenchWindow的初始透视图。这个方法必须提供。
|
|
getMainPreferencePageId |
返回第一个显示的首选参数页。缺省为null意味着首选参数页按字母顺序排序。 |
|
上面的WorkbenchAdvisor事件对大多数应用来说是足够了,但是在某些情况,RCP又提供了两个方法来控制你的应用窗口和控件如何被创建。它们被列在表4,但是我觉得很多程序不需要用到这些。
表4. WorkbenchAdvisor提供的高级方法
方法
描述
参数
openWindows |
在启动时打开所有WorkbenchWindow。缺省实现会恢复前面存储的Workbench状态。
|
|
其它的方法在eclipse3.1后都被覆盖了。
-
ApplicationWorkbenchWindowAdvisor类:用来控制状态栏,工具栏,标题和窗口的大小等。但它将创建工具栏的任务交给了ApplicationActionBarAdvisor类。
-
WorkbenchWindowAdvisor类:查阅Javadoc文档可知,它是配置workbench窗口的公共基类。当窗口被创建时,该类就会被创建,用来配置窗口。用户应该继承该类并覆盖其中的某些方法来满足特定的需求。
表5. WorkbenchWindowAdvisor提供的生命事件点
方法
描述
参数
preWindowOpen |
在WorkbenchWindow的构造器中调用。可以使用这个方法来指定窗口是否有菜单栏。然而,窗口的widget还没有创建,因此在这个方法中不能引用它们。
|
|
postWindowRestore |
当一个窗口从保存的状态恢复时,但在打开前,被调用。
|
|
postWindowCreate |
在窗口从保存状态恢复,或从scratch中创建后,但在打开前,被调用。
|
|
openIntro |
在窗口打开前一刻被调用,它用来创建introduction组件(如果有的话)。
|
|
postWindowOpen |
紧接着WorkbenchWindow被打开后调用。它被用来组装窗口的widget,例如设置标题或修改它的大小。
|
|
preWindowShellClose |
在WorkbenchWindow被关闭前调用(从技术上来说,是在它的shell被关闭前)。这是唯一能够终止关闭动作的方法,所以,它可以用来显示“你确定吗”这样的对话框。
|
|
postWindowClose |
在WorkbenchWindow关闭后调用。它被用来清理任何由preWindowOpen创建的资源。
|
|
表5. WorkbenchWindowAdvisor提供高级方法
方法
描述
参数
createWindowContents |
创建窗口的内容,覆盖该方法来定义用户自己的内容和布局。 |
Shell |
createEmptyWindowContents |
用来创建空页面的窗口,覆盖该方法来改变默认窗口背景 |
Composite |
-
IWorkbenchWindowConfigurer接 口:为配置workbench窗口提供了专门的方法,Window configurer类和要配置的workbench是一对一对应的,用户可以用get/set方法将任意状态和window configurer类相连。注意这些类只供主应用程序使用,该接口不能被实现。
-
ApplicationActionBarAdvisor类:继承了ActionBarAdvisor类
-
ActionBarAdvisor类:是配置工作台窗口action bars的公用基类。用户应该继承该类并覆盖其中的某些方法来满足特定的需求。
表7. ActionBarAdvisor提供的可以覆盖的方法
方法
描述
参数
makeActions |
创建actions,供fill方法使用 |
IWorkbenchWindow |
fillMenuBar |
用主菜单填充menubar,添加窗口的主菜单 |
IMenuManager |
fillCoolBar |
用工具栏填充coolbar,添加窗口的工具栏 |
ICoolBarManager |
fillStatusLine |
用状态栏填充statusline,添加窗口的状态栏 |
IStatusLineManager |
isApplicationMenu |
返回是否是你创建的菜单 |
String |
-
Activator类:是一个单例类,用来存储插件的全局信息,也可以有一些其他类会用到的实用方法。
分享到:
相关推荐
RCP源码例子 RCP源码例子 RCP源码例子
eclipse rcp 例子 源码
Eclipse+RCP框架分析和应用研究
RCP 开发实例,纯界面,没有连接数据库
rcp框架嵌入 JxBrower 用于在当前项目中嵌入第三方项目开发的页面 Browser browser = new Browser(); BrowserView view = new BrowserView(browser); JFrame frame = new JFrame("JxBrowser"); frame....
JAVA RCP源码,包括聊天程序、常用代码的设计思路、源码、调试方式等。很好的,支持一下吧!!
一个简单的Eclipse RCP 源码示例,非常的简单,一看就明白。 解压后用Eclipse打开,打开plugin.xml文件-概述-启动Eclipse 应用程序,就能运行
Java RCP企业应用快速开发框架,详细内容请访问www.soyframework.com
一个基于Nacos、Netty、Protobuf 实现的简单易懂的RCP框架.zip
Display的主要任务是事件处理,它负责从操作系统的事件队列中读取事件,传递给RCP的事件监听器以便完成具体的任务。需要注意的是,Display对象不代表应用程序窗口的任何可视控件,在应用程序主窗口打开之前,Display...
Eclise RCP UPDATE 自动更新 Eclise RCP 自动更新已经经过测试,上传上的文件中,删除了一些系统jar包,如有需要,请自己手动加入 以上代码参照IBM官方网页完成 ...
eclipse RCP学习项目源码&扩展控制台插件for eclipse3.5
本程序是一个简单的RCP页面源码。里面包含了已经配置好的产品打包发布成.exe文件的,下载后,解压缩,然后打开eclipse File|Import|Existing project是intoWOrkspace 即可,然后,在项目右键上运行就可以看到弹出的...
RCP&OSGI;
一个用RCP实现的CRM例子,包括源码。
RCP数据模型验证框架RCP数据模型验证框架RCP数据模型验证框架
RCP在线升级RCP在线升级RCP在线升级RCP在线升级RCP在线升级
RCP实例程序,可画层次结构图,阅读代码可参看http://bjzhanghao.cnblogs.com/archive/2005/02/19/106000.html
前一段时间学习eclipse rcp开发写的一个学习用的工程。涉及了我当时学到的一些方面。 当时想找一个可以用来学习的简单的源代码真难,有的都是复杂的。 这里提供一个简单的工程。设计初学者接触的各种问题。有时通一...
ECLIPSE RCP开发的一个程序。项目名称为:学校学生管理系统 内有项目源代码。