锁定老帖子 主题:rcp实践
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2006-12-20
最近发现rcp的资料越来越多,而自己有处于比较有空的状态,所想写一篇完整的Rcp教程,由于我也是初学,所以写出来的很多东西可能都是错的,所以建议参考一些资料:<o:p></o:p> http://www.eclipse.org/home/categories/rcp.php Eclipse Rcp的官方网站。<o:p></o:p> http://www-128.ibm.com/developerworks/cn/opensource/top-projects/eclipse.html IBM网站 Eclispe的帮助文档。<o:p></o:p> 上面的文档足以帮助我们这些初学者入门。<o:p></o:p> <!----> <!----><o:p></o:p> 下面我将以一篇管理用户的例子来体验RCP的美妙,此程序基于(jdk1.5+eclipse3.2)。<o:p></o:p> 一.创建序基本框架<o:p></o:p> 二.分析RCP的结构<o:p></o:p> 三.添加程序功能<o:p></o:p> 四.建立数据model,dao,service,action<o:p></o:p> 五.测试<o:p></o:p> 六.打包。 一. 序基本框架,我想Eclipse这点做的是很贴心的,在创建程序框架的时候选择Email Template。并输入项目名称org.wuhua.rcp。然后点下一步就行了。这样我们创建了带菜单,工具条等基本模板。
上面的模板我想基本上是适合我们的程序的,不过我们要改进下它们,比如菜单,工具条,跟左侧树状菜单,这些是我们要改进的,我们要让它们符合我们的需求。 <!----> <o:p></o:p> 插件清单的学习:重点RCP程序也是一个插件,但跟插件又有点不同(它有自己独立的工作台,有自己独立的透视图,透视图在程序启动时候启动(可以自己指定相关的透视图实现)。要注意的是在相同的时间里只能存在一个透视图),我认为普通插件是构建在Eclipse的工作台之上的,说白了就是插件要依赖与Eclipse来工作,而RCP则可独立运行――纯粹个人观点。<o:p></o:p> 在创建了插件项目之后,需要创建透视图,创建透视图是一个两阶段的过程。首先,修改插件的清单以包含新的扩展,该扩展将使用 <extension></extension><o:p></o:p> point="org.eclipse.ui.perspectives"><o:p></o:p> <perspective></perspective> <o:p></o:p> name="Autotest Perspective"<o:p></o:p> class="org.wuhua.autotest.ui.Perspective"<o:p></o:p> id="org.wuhua.autotest.perspective"><o:p></o:p> <o:p></o:p> <o:p></o:p>
<o:p></o:p> 上面是对透视图插件清单的定义,现在我们看下,透视图在java代码中是怎么样构建的,是怎么样显示到桌面?看看下面的代码<o:p></o:p> java 代码
IperspectiveFactory指定一个创建透视图接口,我们只需要实现它即可。程序会在启动的时候加载这个类,具体是通过plugin.xml里面的扩展点: <!----> <!----><o:p></o:p> 具体创建透视图的方法是:
java 代码
我们可以在里面部署我们的透视图,比如透视图开始位置,大小,是否可见等――系统通过传入IpageLayout 对象,然后通过这个对象来实现上面的功能。<o:p></o:p> 介绍 WorkbenchAdvisor<o:p></o:p> 前面集中讨论了构成 RCP 应用程序的各种组件。接下来将集中讨论如何将所有的事物结合到一起。在构建 RCP 应用程序时,核心任务之一就是创建一个实现抽象类
<!----> <!----><o:p></o:p> WorkbenchAdvisor 是个非常重要的类,它负责配置整个工作台,一个Rcp程序只能存在一个WorkbenchAdvisor(工作台)实例,但可以存在多个WorkbenchWindowAdvisor实例(工作窗口,相当于打开新窗口)。<o:p></o:p> 现象来详细看下WorkbenchWindowAdvisor。WorkbenchAdvisor是通过创建WorkbenchWindowAdvisor来实现工作台的配置的,当然也可以不这么做。它也可以自己创建。但我觉得通过WorkbenchWindowAdvisor创建更灵活而且给人感觉更舒服。<o:p></o:p> ActionBarAdvisor 这个类是我们用来定制菜单,工具条等。它的方法解释如下<o:p></o:p> protected void makeActions(final IWorkbenchWindow window) {<o:p></o:p> //在这里可以通过窗口来定制action,比如文件中的打开,关闭,推出等action。<o:p></o:p> }<o:p></o:p> protected void fillMenuBar(IMenuManager menuBar) {<o:p></o:p> //定制菜单 <o:p></o:p> }<o:p></o:p> <!----> <!----><o:p></o:p> Application Rcp核心类,根据API说明,此类是RCP启动的Main类,里面的run方法相当于普通java程序的main方法。通常这个类是建立RCP应用程序生成,代码结构基本不用去修改。<o:p></o:p> java 代码
我们可以很清楚的知道,线程会在PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());这里不挺的运行,直到程序崩溃或者用户退出才会返回。<o:p></o:p> <!----> <!----><o:p></o:p> 恩。我想我基本上知道rcp是怎么运行的了,我对主管说?<o:p></o:p> 那好啊。你总结下,它是怎么运行的。<o:p></o:p> 首先通过plugin.xml文件配置rcp的各个方面,比如扩展点,需求包等。这个文件就好像spring的bean配置文件,告诉了容器上下文。<o:p></o:p> “我说的对不对啊,主管。”我跟主管说。<o:p></o:p> “那MANIFEST.MF这个文件的用途是什么呢?”主管说。<o:p></o:p> 我查查啊。噢,原来是跟OSGI有关的啊,在xx版本的esplise以前,plugin.xml做了全部工作,后来改进了。把一些工作放到MANIFEST.MF这个文件来了。我想它主要对OSGI框架运行的元数据包装吧,比如定义RCP的运行环境跟依赖项目(有可能是插件)。<o:p></o:p> <!----> <!----><o:p></o:p> 对了我们基本上算是了解了RCP的一些基本只是,我现在想了解下,我点击那些菜单的时候为什么会有反映的,它是怎么做到的?<o:p></o:p> 那么我们试验下吧。经过查找API我们发现了Iaction,字面上怎么跟webwork的action差不多啊。因为根据名称我们知道action具体是做什么的。它也是一个Command模式的经典应用吗?<o:p></o:p> 我想是的。看看它的方法<o:p></o:p> java 代码
这就更清楚了。我们只要继承Action并覆盖它的run方法就可以实现点击的动作了。哈哈。Eclispe我太喜欢你了,<o:p></o:p> 好我们自己来定义实现一个Action吧。<o:p></o:p>
java 代码
上面只是我对rcp一点认识,如果要想设计好rcp我觉得除了对这些基本知识要有了解外,对swt/jface也是要有充分的认识的。<o:p></o:p> 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 7588 次