简单RCP框架源码分析
<script></script>
在我们新建一个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提供的可以覆盖的方法
方法
描述
参数
makeActions |
创建actions,供fill方法使用 |
IWorkbenchWindow |
fillMenuBar |
用主菜单填充menubar,添加窗口的主菜单 |
IMenuManager |
fillCoolBar |
用工具栏填充coolbar,添加窗口的工具栏 |
ICoolBarManager |
fillStatusLine |
用状态栏填充statusline,添加窗口的状态栏 |
IStatusLineManager |
isApplicationMenu |
返回是否是你创建的菜单 |
String |
- Activator类:是一个单例类,用来存储插件的全局信息,也可以有一些其他类会用到的实用方法。
分享到:
相关推荐
这个例子可能包含了一个名为“simplebrowser”的项目,这可能是一个简单的浏览器应用示例,用于展示RCP框架在构建具有浏览功能的应用程序时的应用。 首先,了解RCP的核心概念至关重要。RCP基于插件模型,每个功能...
这个简单的Eclipse RCP源码示例旨在帮助初学者快速理解RCP应用的基本结构和工作原理。 首先,Eclipse RCP的核心是插件(Plugin)系统,每个插件都是一个独立的模块,包含特定的功能。在提供的"myrcp"压缩包中,可能...
总之,RCP教程旨在帮助开发者掌握如何利用Eclipse RCP框架构建高效、可扩展的桌面应用。通过理解RCP的基本概念、开发流程以及实践案例,开发者可以轻松地创建出功能丰富且定制化的应用程序。对于想要深入学习Eclipse...
本文档旨在通过分析简单的RCP框架源码,帮助读者深入理解其核心组成部分及其工作原理。 #### 二、重要类分析 ##### 1. Application类 - **作用**:作为RCP应用程序的入口点,类似传统MVC模式中的控制器角色。 - **...
通过分析这个RCP CRM示例的源码,开发者不仅可以学习如何构建这样的系统,还可以了解到如何将Eclipse RCP的强大功能应用到其他类型的应用程序开发中。无论是对RCP的初学者还是经验丰富的开发者,这个实例都提供了...
FTP源代码的分析可以帮助理解其工作原理,包括用户认证、数据连接建立和控制连接管理等。 2. **SSH(Secure Shell)**:SSH是一种加密的网络协议,用于安全地执行远程命令和传输数据。SSH提供了比传统的telnet和...
"自己设计的小的RCP小示例程序"是一个基于Eclipse RCP框架的个人实践项目,展示了如何利用Eclipse RCP构建一个简单的桌面应用。 Eclipse RCP的核心概念包括: 1. **部件(Parts)**:这是构成用户界面的基本单元,...
【标题】:“图书馆管理系统 源码 java rcp mysql” 【正文】: 图书馆管理系统是一款基于Java ...开发者可以通过分析和学习此源码,提升自己的Java RCP和数据库设计能力,同时了解如何将这些技术应用于实际项目中。
在`simplebrowser_src.rar`中,可能包含了一个简单的RCP浏览器应用的源码。这个示例可能展示了如何创建一个基本的RCP应用,包括设置插件项目、定义视图和编辑器,以及处理用户交互。通过分析和运行这个示例,你可以...
在IT行业中,RCP(Rich Client Platform)是Eclipse框架的一部分,它提供了一种构建桌面应用程序的强有力方式。而JFace则是RCP的核心组件之一,主要用于构建用户界面。本文将详细探讨RCP与JFace数据绑定的概念、用法...
源码分析: 1. **数据管理**:Nomad PIM可能会使用数据库(如SQLite或SQL Server Compact Edition)来存储用户的个人信息。源码中应包含与数据库交互的类和方法,如数据模型、CRUD操作(创建、读取、更新、删除)...
AXIS2 RCP,全称为Axis2 Remote Client Protocol,是Apache Axis2框架的一部分,用于构建分布式Web服务客户端。在处理SOAP(Simple Object Access Protocol)消息时,Axis2 RCP提供了不同的方式来定义消息的payload...
6. **源码分析**: - 对于`HttpInvokerClient`和`HttpInvokerServer`两个文件名,它们可能分别代表了客户端和服务端的具体实现。通过对源码的阅读,可以更深入地理解Http Invoker的工作原理,例如,`...
JFace的源码分析可以帮助我们深入理解其内部工作原理,提高开发效率,特别是对于那些需要定制化Eclipse插件或者RCP(Rich Client Platform)应用的开发者来说,研究源码是非常有价值的。 首先,JFace的核心概念包括...
4. **支持多种框架**:除了Swing和SWT,WindowBuilder还支持JFace和RCP(Rich Client Platform)等框架,使得开发者可以创建更复杂的桌面应用程序。 5. **源码兼容**:WindowBuilder生成的代码结构清晰,易于理解和...
综合以上信息,这个压缩包提供了关于源码分析、Eclipse插件开发、GUI组件使用以及RCP应用程序构建的资源,对于想要学习和提升这些技能的开发者来说非常有价值。通过学习这些源码和工具,开发者可以加深对软件工程...
【源码分析】 博客链接中的内容可能涉及对SWT源码的分析。SWT作为一个开源项目,其源码对于开发者来说是一个宝贵的资源,可以深入理解其内部工作机制,学习如何与操作系统进行交互,以及如何优化GUI性能。通过阅读...
源码分析有助于我们掌握这些组件的高级用法。 6. **命令框架**:JFace引入了命令概念,使得菜单项、工具栏按钮和其他用户操作可以通过命令来表示,便于管理和国际化。 7. **视图和编辑器的实现**:Eclipse RCP中的...
在压缩包"jeesite-1.0.3"中,可能包含了JeeSite框架的源码、配置文件、文档以及示例应用等资源。开发者可以通过研究这些内容,了解JeeSite的架构和工作原理,从而更好地利用代码生成器创建自己的MIS系统。同时,这份...
- 统一下单(统一下单接口、统一扫码)、订单管理、数据分析、财务报表、商户管理、渠道管理、对账系统、系统监控。 ![统一扫码支付](project-bootstrap/zheng-pay.png) > zheng-ucenter 通用用户管理系统, 实现...