简单RCP框架源码分析
关键字: RCP框架
在我们新建一个RCP应用程序框架时,eclipse会为我们自动生成若干个类:
网上也有很多关于“Hello RCP”的分析说明,但都聚集在类功能分析,没有源代码的分析。下面着重分析一下其中的某些不易理解的类以及其中涉及到的其它类的源代码。
- Application类: 是RCP应用程序的入口点,你可以把它想象成程序的控制器,类似于Model2架构中的控制器。它很简短,而且在不同的项目中变化不大;它所做的就是创建 一个工作台Workbench,同时将其于一个WorkbenchAdvisor联系起来。Workbench是RCP框架的一部分,一个RCP应用对应 一个Workbench,但一个 Workbench可以有多个Workbench窗口。
- ApplicationWorkbenchAdvisor类:继承了WorkbenchAdvisor类,提供了两个方法,其中createWorkbenchWindowAdvisor方法将创建窗口的工作交给了ApplicationWorkbenchWindowAdvisor类。
- WorkbenchAdvisor类: 该类不是一个接口,而是一个抽象类,它不包含任何的功能实现,因为将来很有可能在其中添加其它方法。Eclipse的设计者们希望每个RCP应用都实现 它,由平台来调用。Workbench和Workbench Window生命周期中的有一些重要事件,这些事件在WorkbenchAdvisor中都 有相应的方法,Platform调用这些方法从而执行你的定制代码。
表1. WorkbenchAdvisor提供的事件处理方法
方法
|
描述
|
参数
|
initialize
|
第一个被调用,用来初始化,比如解析命令行,注册适配器,声明图像等。
|
IWorkbenchConfigurer
|
preStartup
|
在初始化结束,但是在第一个窗口打开前调用。可以被用来设置一些选项来影响初始打开的编辑器和视图。
|
|
postStartup
|
在所有窗口已经被打开或恢复后,但是在事件循环开始前调用。它可以被用来启动自动处理器,打开提示或其他窗口。
|
|
preShutdown
|
在事件循环结束后,但在任何窗口被关闭前调用。
|
|
postShutdown
|
在关闭Workbench过程中,所有窗口被关闭后调用。它可以被用来存储当前的应用状态和清理任何由initialize创建的东西。
|
|
表2. WorkbenchAdvisor提供的事件循环钩子
方法
|
描述
|
参数
|
eventLoopException
|
在事件循环中如果有未检测的异常则调用给方法。默认的实现将记录错误信息。
|
Throwable
|
eventLoopIdle
|
时间循环时什么也不做时调用
|
Display
|
表3. WorkbenchAdvisor提供的信息获取方法,你可以在子类中覆盖
方法
|
描述
|
参数
|
getDefaultPageInput
|
返回新的Workbench页面的缺省输入,缺省值是null。
|
|
getInitialWindowPerspectiveId
|
返回新创建的Workbench Window的初始透视图。这个方法必须提供。
|
|
getMainPreferencePageId
|
返回第一个显示的首选参数页。缺省为null意味着首选参数页按字母顺序排序。
|
|
上面的WorkbenchAdvisor事件对大多数应用来说是足够了,但是在某些情况,RCP又提供了两个方法来控制你的应用窗口和控件如何被创建。它们被列在表4,但是我觉得很多程序不需要用到这些。
表4. WorkbenchAdvisor提供的高级方法
方法
|
描述
|
参数
|
openWindows
|
在启动时打开所有Workbench Window。缺省实现会恢复前面存储的Workbench状态。
|
|
其它的方法在eclipse3.1后都被覆盖了。
- ApplicationWorkbenchWindowAdvisor类:用来控制状态栏,工具栏,标题和窗口的大小等。但它将创建工具栏的任务交给了ApplicationActionBarAdvisor类。
- WorkbenchWindowAdvisor类:查阅Javadoc文档可知,它是配置workbench窗口的公共基类。当窗口被创建时,该类就会被创建,用来配置窗口。用户应该继承该类并覆盖其中的某些方法来满足特定的需求。
表5. WorkbenchWindowAdvisor提供的生命事件点
方法
|
描述
|
参数
|
preWindowOpen
|
在Workbench Window的构造器中调用。可以使用这个方法来指定窗口是否有菜单栏。然而,窗口的widget还没有创建,因此在这个方法中不能引用它们。
|
|
postWindowRestore
|
当一个窗口从保存的状态恢复时,但在打开前,被调用。
|
|
postWindowCreate
|
在窗口从保存状态恢复,或从scratch中创建后,但在打开前,被调用。
|
|
openIntro
|
在窗口打开前一刻被调用,它用来创建introduction组件(如果有的话)。
|
|
postWindowOpen
|
紧接着Workbench Window被打开后调用。它被用来组装窗口的widget,例如设置标题或修改它的大小。
|
|
preWindowShellClose
|
在Workbench Window被关闭前调用(从技术上来说,是在它的shell被关闭前)。这是唯一能够终止关闭动作的方法,所以,它可以用来显示“你确定吗”这样的对话框。
|
|
postWindowClose
|
在Workbench Window关闭后调用。它被用来清理任何由preWindowOpen创建的资源。
|
|
表5. WorkbenchWindowAdvisor提供高级方法
方法
|
描述
|
参数
|
createWindowContents
|
创建窗口的内容,覆盖该方法来定义用户自己的内容和布局。
|
Shell
|
createEmptyWindowContents
|
用来创建空页面的窗口,覆盖该方法来改变默认窗口背景
|
Composite
|
- IWorkbenchWindowConfigurer接 口:为配置workbench窗口提供了专门的方法,Window configurer类和要配置的workbench是一对一对应的,用户可以用get/set方法将任意状态和window configurer类相连。注意这些类只供主应用程序使用,该接口不能被实现。
- ApplicationActionBarAdvisor类:继承了ActionBarAdvisor类
- ActionBarAdvisor类:是配置工作台窗口action bars的公用基类。用户应该继承该类并覆盖其中的某些方法来满足特定的需求。
表7. ActionBarAdvisor提供的可以覆盖的方法
方法
|
描述
|
<p cla
分享到:
Global site tag (gtag.js) - Google Analytics
|
相关推荐
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的用法(菜单和...
网络上能够找到的最详细的EclipseRcp教程
介绍非常详细,适合初学者学习,RCPRCPRCPRCPRCPRCPRCPRCPRCPRCPRCPRCPRCPRCP
Eclipse Rcp详细教程,适合RCP编程者入门,简单易懂,实用,精辟,尼玛,要编20个字啊
详细介绍了Eclipse下开发rcp的方法步骤,并对其应用进行了详细介shoa
RCP入门教程(说明的比较详细,应该可以对大家有所帮助)
高清pdf,绝非扫描版,不是那种几页讲得很片面的,全书216页,分20个章节讲rcp中的jface,swt及各种相关配置,都是有详细插图的,内附详细源代码,基本上每个章节都有,物超所值。
本书为《Eclipse从入门到精通》一书的...本书内容循序渐进,实例丰富,操作及开发步骤讲解详细,配书光盘含有各主要章节的操作视频演示,是Eclipse开发者不可多得的教程。本书适合的读者对象见本书前言中的详细介绍。
Eclipse Commands Framework教程,作者:Lars Vogel,司马先生(本人)亲自翻译。文章共两篇,详细介绍eclipse的command框架。标题如下: 1. Eclipse Commands Tutorial 2. Eclipse Commands Advanced 这是第一篇
本书内容循序渐进,实例丰富,操作及开发步骤讲解详细,配书光盘含有各主要章节的操作视频演示,是eclipse开发者不可多得的教程。 第2版 本书为《eclipse从入门到精通》一书的全新改版。本书以最新的eclipse ...
它提供详细的教程和在线帮助,帮助用户快速掌握软件的使用技巧。同时,XMind还具备良好的稳定性和兼容性,可以在多种操作系统上运行,确保用户能够随时随地进行思维导图的创建和编辑。 总的来说,XMind是一款功能...
电动汽车之整车控制器(VCU)-Simulink无缝连接-支持快速原型RCP、代码生成.pdf 精华:P2混合动力系统方案及核心模块详解!(技术版).pdf 纯电动汽车基础.ppt 纯电动汽车整车控制策略及其开发流程-王思哲.pdf 纯电动...
内含详细的Eclipse自学教程,其中由浅入深的讲解了Eclipse所用到的技术,包括SWT,JDT,表格,JFace,插件,web开发等等.