`
flyingbug
  • 浏览: 126352 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个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

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics