一个旧的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 fillMenuBar(IMenuManager menuBar) {
}
将其他UI组件初始化工作放入到ApplicationWorkbenchWindowAdvisor的如下方法:
IWorkbenchWindowConfigurer configurer = getWindowConfigurer();
configurer.setInitialSize(new Point(400, 300));
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