从上篇文章《RAP 与 RCP的差别》中,我们知道,RCP与RAP之间的区别很小,现在我们就开始研究他 们的区别到底有多小,接下来打算将一个RCP项目迁移到RAP项目,我们从这样的一个实际的例子来演示。
我们先在Eclipse创建一个RCP插件工程,选择RCP应用的Mail模板。我们就将这个RCP版本的Mail Demo 变成 RAP版本的Mail Demo,比如我们的插件工程的名称就叫做“com.vwpolo.rcp.mail”,
创建完RCP插件项目后,我们双击打开plugin.xml文件,切换到“Dependencies”选项卡,默认的RCP项 目会依赖“org.eclipse.ui“和”org.eclipse.core.runtime“这两个项目,在这里,我们将他们替换成 “org.eclipse.rap.ui”和“org.eclipse.rap.ui.views”,(具体的依赖插件根据项目的需要进行添加 ),
接着我们切换到“Extensions”选项卡,配置扩展点,RCP模板工程默认提供如下扩展点:
在RAP项目中,是通过IEntryPoint 的子类来负责启动程序,而RCP是通过IApplication的子类来启动 程序的,所以这里的“org.eclipse.core.runtime.applications”扩展点没有用武之地,可以直接删除 ,替换成RAP支持的“org.eclipse.rap.ui.entrypoint”扩展点,在这个扩展点中可以指定启动类的ID和 完整路径还有参数名称,这里的参数名称是提供给Servlet容器判断应该加载那个应用。
我们指定Application这个类负责程序的启动,这个类原来是RCP的启动类,我们现在将它实现的接口 由IApplication修改成IEntryPoint,并实现createUI方法,在这个方法中创建UI界面,基本上和 RCP IApplication的start 方法类似,只是这里我们不需要处理客户端的退出,系统会自动帮我们处理好的 。createUI方法很简单:
1 @Override
2 public int createUI() {
3 Display display = PlatformUI.createDisplay();
4 return PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
5 }