随笔 - 59, 文章 - 4, 评论 - 184, 引用 - 7
数据加载中……

一个SWT Application如何转职成为RCP Appliactioin

昨天david问到如何将旧的swt应用转成一个RCP应用,昨晚胃疼难忍,于是草草说了一下,就早早上床休息了,早上起来又想起这件事情,遂在这里说一下思路
下面说一下我的思路
(注:以下观点未经证实,请自行斟酌使用)

一个旧的SWT应用,应该都是有一个main函数里初始化一些UI组件,然后run一个事件循环

在RCP中,由于是基于Eclipse的插件体系,也就是说,使用我前面那篇文章发布的RCP Application,是可以直接发布成Eclipse插件的
所以,对于UI组件的控制也要遵循Eclipse的插件体系的代码要求,看看Hello RCP模板中的几个类:ApplicationActionBarAdvisor、ApplicationWorkbenchAdvisor、ApplicationWorkbenchWindowAdvisor以及RCPPlugin,想起了什么?对,OSGI

我们只要将原swt的main函数中初始化的ui组件,放入到这几个Advisor中进行初始化

将下拉菜单项的ui组件的初始化工作放入到ApplicationActionBarAdvisor的如下方法:

    protected void makeActions(IWorkbenchWindow window) {
    }



    
protected void fillMenuBar(IMenuManager menuBar) {
    }


将其他UI组件初始化工作放入到ApplicationWorkbenchWindowAdvisor的如下方法:

    public void preWindowOpen() {

        IWorkbenchWindowConfigurer configurer 
= getWindowConfigurer();

        configurer.setInitialSize(
new Point(400300));

        configurer.setShowCoolBar(
false);

        configurer.setShowStatusLine(
false);

        configurer.setTitle(
"Hello RCP");

    }


至于ApplicationWorkbenchAdvisor这个类,我想你一定想起了Eclipse中的Workbench概念
在这里,可以定义当这个RCP作为plugin的时候的Worbench的透视图的一些属性。

-----------------------------------

最后,基于Eclipse3.1的product方式的RCP程序将获得同Eclipse相同的插件体系支持
也就是说:你的应用本身就是基于Eclipse Platform的,这样,你的程序也可以接受插件插入了(如果你设计的好的话^_^)
另外,还有其他很多好处,比如在线升级功能的自动绑定啊,帮助功能的使用啊等等
想一想,你的程序将既能作为单独的程序运行,又能作为Eclipse的插件运行,而且还跨平台,think about it...
So....try it now, you will get more

posted on 2006-01-17 11:02 fisher 阅读(1738) 评论(0)  编辑  收藏 所属分类: Eclipse Tech


只有注册用户登录后才能发表评论。


网站导航: