• 1. Eclipse RCP(二)快速入门
  • 2. 周甫(zoofchow@hotmail.com)2课程介绍本课程主要讲授Eclipse及RCP基础知识 适用于Java开发工程师 面向的学员是渴望了解Eclipse RCP的各类开发工程师 全部课程时间大约是40分钟
  • 3. 周甫(zoofchow@hotmail.com)3概 要开发环境 快速入门:My Browser
  • 4. 周甫(zoofchow@hotmail.com)4开发环境*JDK: JDK 1.5以上版本 Eclipse: 3.2英文版本(勿用3.3或者3.4Mx) Tomcat: 5.5.6 插件: MyEclipse5.5.1 SWT-Designer 6.1 其他插件: JSmooth Fat Jar
  • 5. 周甫(zoofchow@hotmail.com)5My Browser下面我们开发一个简单的RCP浏览器开始我们的RCP旅程. 正如在RCP概览一讲中所言,RCP就是一个可以独立运行的Eclipse插件,所以所有的RCP项目都是一个Eclipse plug-in project.
  • 6. 周甫(zoofchow@hotmail.com)6新建一个插件工程File -> New -> Project -> Plug-in Development -> Plug-in Project Project Name: cn.demo.mybrowser
  • 7. 周甫(zoofchow@hotmail.com)7设置plug-in cotent接下来设置插件项目的基本信息可以填入开发者信息对于RCP项目不需要激活器来控制插件生命周期当然是创建一个RCP
  • 8. 周甫(zoofchow@hotmail.com)8模板选择模板选择: Hello RCP,Eclipse将以此为模板为我们准备好基本的包和类. Finish结束向导
  • 9. 周甫(zoofchow@hotmail.com)9项目结构新建项目文件结构(Java视图下)如图:
  • 10. 周甫(zoofchow@hotmail.com)10插件清单编辑器新建项目会默认打开插件清单编辑器,如图:基本信息描述运行与测试项目
  • 11. 周甫(zoofchow@hotmail.com)11初次运行在插件清单编辑器的OverView 页, 点击 “Lanch an Eclipse application” 链接就会看到RCP应用运行时的样子.
  • 12. 周甫(zoofchow@hotmail.com)12基本类介绍工程创建完成后, Eclipse将自动生成以下类和文件: Application类 ApplicationActionBarAdvisor 类 ApplicationWorkbenchAdvisor 类 ApplicationWorkbenchWindowAdvisor类 Perspective 类 plugin.xml 文件 build.properties 文件
  • 13. 周甫(zoofchow@hotmail.com)13Application类Application类是RCP应用的主程序, 相当于整个RCP应用的控制器. Application类的职责是创建一个工作台(Workbeanch)然后添加一个工作台顾问类(WorkbeanchAdvisior). 它是启动RCP应用运行的第一个程序. 这个类实现了 Eclipse 的 IPlatformRunnable 接口. 对于绝大多数的RCP应用, 这个类的代码都是不用修改的.
  • 14. 周甫(zoofchow@hotmail.com)14工作台(Workbeanch)工作台(Workbeanch)是RCP框架的一部分, 一个RCP应用只能有一个工作台, 但是可以有多个工作台窗口(WorkbeanchAdvisior). 工作台的结构如下:
  • 15. 周甫(zoofchow@hotmail.com)15Advisor类ApplicationActionBarAdvisor, ApplicationWorkbenchAdvisor和ApplicationWorkbenchWindowAdvisor这三个类是 RCP应用的三个核心Advisor类. 它们都继承于相应的抽象Advisor父类. 是RCP应用生命周期中非常重要的三个类.
  • 16. 周甫(zoofchow@hotmail.com)16ApplicationWorkbenchAdvisor在主程序 Application 类的run() 方法中引用了 ApplicationWorkbenchAdvisor 类. 这个 Workbench Advisor 类对 Workbench 的外观进行了配置. ApplicationWorkbenchAdvisor 继承了WorkbenchWindowAdvisor 抽象类, 插件工程向导自动填充了createWorkbenchWindowAdvisor和getInitialWindowPerspectiveId方法体, 我们同样可以覆写( override )父类的其他方法. 这个类的方法会在工作台( Workbench )的生命周期的各个关键时刻由RCP平台调用. 是最重要的一个Advisor类.
  • 17. 周甫(zoofchow@hotmail.com)17ApplicationWorkbenchWindowAdvisorApplicationWorkbenchWindowAdvisor 继承了WorkbenchWindowAdvisor 类, 这个类主要负责对 Worbench Window 进行控制, 例如状态栏, 工具条, 标题, 窗口尺寸等. 这个类中的方法在 Workbench Window 的生命周期中起着重要作用.
  • 18. 周甫(zoofchow@hotmail.com)18preWindowOpen()方法插件工程向导自动帮我们填充了createActionBarAdvisor 和 preWindowOpen 方法体, 在 preWindowOpen 方法中我们看到向导隐藏了窗口的工具条和状态栏, 并且设置了窗口的大小和标题栏上显示的文字: public void preWindowOpen() { IWorkbenchWindowConfigurer configurer = getWindowConfigurer(); configurer.setInitialSize(new Point(400, 300)); configurer.setShowCoolBar(false); configurer.setShowStatusLine(false); // 设置窗口标题栏文字 configurer.setTitle("Hello RCP"); }
  • 19. 周甫(zoofchow@hotmail.com)19ApplicationActionBarAdvisorActionBarAdvisor 类继承了ActionBarAdvisor 类. 这个类负责为WorkbenchWindow 的Action Bar ( 菜单, 工具条和状态栏等 ) 创建Action. 也可以通过插件清单 plugin.xml 文件动态地提供action.
  • 20. 周甫(zoofchow@hotmail.com)20Perspective这是RCP应用的默认的透视图. 实现了 IPerspectiveFactory 接口, 并且通过org.eclipse.ui.perspectives 扩展点的className 属性指定. 透视图是一套可见的视图, 编辑器, 和菜单等. 在RCP应用中, 必须定义至少一个透视图并且设置为默认的透视图. 所有启动RCP应用后希望用户看到的视图或编辑器都必须在这个类的createInitialLayout 方法中设置.
  • 21. 周甫(zoofchow@hotmail.com)21Plugin.xml 文件Plugin.xml文件是 Eclipse 的扩展点清单, 这个文件用来定义和使用 Eclipse 扩展点.扩展点是关联 Eclipse 插件的基本方式. 例如, 这里的 Application 类就是通过org.eclipse.core.runtime.application 扩展点定义的. Eclipse 提供了插件清单编辑器, 使用这个编辑器可以方便的修改 plugin.xml 文件的内容, 使用这个编辑器可以减少手工编辑这个 xml 文件的工作和错误. 在使用插件向导创建完工程后看到的就是这个编辑器.
  • 22. 周甫(zoofchow@hotmail.com)22build.properties 文件在导出插件的时候这个文件指定了要build的内容和相关资源的路径. 如果向应用新增了一些资源, 如图标文件, 要记得把他们添加到 build.properties 文件的bin.include 一节中. 在插件清单编辑器的 Build Configuration 页面可以很方便的在导出应用前对这个文件进行配置.
  • 23. 周甫(zoofchow@hotmail.com)23动手修改:添加视图File -> New -> Other -> Designer -> RCP -> ViewPart -> Next 新建一个包存放自建视图视图的标题视图名亦即类名
  • 24. 周甫(zoofchow@hotmail.com)24plugin.xml中的变化在plugin.xml中将添加以下内容: 可以看见新的视图是以扩展点的形式添加进来的.
  • 25. 周甫(zoofchow@hotmail.com)25设计新视图打开SimpleView类,切换到Design模式. 将container的布局设置为GridLayout(AWT)
  • 26. 周甫(zoofchow@hotmail.com)26添加Browser控件把 SWT Controls 中的 Browser 控件拖到右边的RCP视图中, 添加Browser控件. 并修改该控件的url属性值为:http://localhost:8080
  • 27. 周甫(zoofchow@hotmail.com)27新视图概览现在我们的视图在设计模式中看起来如此:
  • 28. 周甫(zoofchow@hotmail.com)28添加视图到Perspective中没有添加到透视图中的视图是无法显示的. 打开Perspective类的源代码, 这个类是默认的透视图. 在它的createInitialLayout方法中添加以下代码: layout.addView( SimpleView.ID, IPageLayout.TOP, IPageLayout.RATIO_MAX, IPageLayout.ID_EDITOR_AREA );
  • 29. 周甫(zoofchow@hotmail.com)29再次运行在Overview中再次“Lanch an Eclipse application”,现在我们的浏览器能够工作了.(前提是要把tomcat运行起来,端口是8080)
  • 30. 周甫(zoofchow@hotmail.com)30一点润饰:去掉EditorArea在浏览器透视图下方会发现有一个空的视图区域, 这是EditorArea, 在 Perspective 类的 createInitialLayout 方法中添layout.setEditorAreaVisible(false); 把它隐藏掉. 现在 Perspective 类的代码变成了这个样子: layout.setEditorAreaVisible(false); layout.addView(SimpleView.ID, IPageLayout.TOP, IPageLayout.RATIO_MAX, IPageLayout.ID_EDITOR_AREA );
  • 31. 周甫(zoofchow@hotmail.com)31一点润饰:修改窗体标题现在RCP打开的窗口的标题还是 ”Hello RCP” ,在ApplicationWorkbenchWindowAdvisor 类的preWindowOpen() 方法中修改它: public void preWindowOpen() { IWorkbenchWindowConfigurer configurer = getWindowConfigurer(); configurer.setInitialSize(new Point(400, 300)); configurer.setShowCoolBar(false); configurer.setShowStatusLine(false); //设置标题 configurer.setTitle("My Browser"); }
  • 32. 周甫(zoofchow@hotmail.com)32一点润饰:窗口最大化同时,覆写父类的postWindowCreate() 方法在应用启动后让窗口自动最大化: 代码如下: public void postWindowCreate() { this.getWindowConfigurer().getWindow().getShell().setMaximized(true); }
  • 33. 周甫(zoofchow@hotmail.com)33再看看再次运行,看看如何:
  • 34. 周甫(zoofchow@hotmail.com)34发布应用刚才建立的RCP应用现在还不能独立运行, 要发布一个独立的RCP应用, 应当: File -> New -> Other -> Product Configuration -> Next -> 输入文件名:mybrowser.product -> Finish Eclispe 将会创建一个新的product configuration 文件并且自动打开productconfiguration 编辑器. 在编辑器中进入OverView 页面: Product Name: My Browser (手动输入) Product Id: cn.demo.mybrowser.product(自动生成) Application: cn.demo.mybrowser.product (自动生成)
  • 35. 周甫(zoofchow@hotmail.com)35配置产品(1):产品定义如图:
  • 36. 周甫(zoofchow@hotmail.com)36配置产品(2):插件及其依赖在编辑器中进入Configuration 页面, 点击Add… 按钮, 在弹出的列表中选中我们刚才创建的RCP插件: cn.demomybrowser, 点击Ok 把我们的RCP插件添加到Product的插件列表中. 点击 Add Required Plug-ins 按钮把RCP应用所依赖的插件全部添加进来.
  • 37. 周甫(zoofchow@hotmail.com)37Configuration页配置好后看起来如:
  • 38. 周甫(zoofchow@hotmail.com)38配置产品(3):启动项进入到Lanucher页,在Lancher Name 一栏中输入可执行程序的名称, 在Windows操作系统中这个名称就是可执行的exe文件的名称. Lancher Name:MyBrowser 同时还可以设置一个执行程序的图标,如果没有则默认用Eclipse的小图标.
  • 39. 周甫(zoofchow@hotmail.com)39配置产品(4):产品包装在Branding页中可以对即将发布的产品做一些包装。如: 在Window Images 一栏中选择RCP应用的图标. 16x16的图标是显示在应用的标题栏上面的图标, 32x32的图标是在切换应用程序的时候显示的图标.
  • 40. 周甫(zoofchow@hotmail.com)40导出产品回到Overview,点击 “Eclipse Product export wizard” 链接打开Eclispe Product 导出向导.产品发布的目录,需要事先建立
  • 41. 周甫(zoofchow@hotmail.com)41产品目录产品导出目录如下,看起来俨然是个Eclipse缩小版.
  • 42. 周甫(zoofchow@hotmail.com)42参考资料Rich Client Tutorial Part 1 (http://www.eclipse.org/articles/Article-RCP-1/tutorial1.html ) Rich Client Tutorial Part 2 (http://www.eclipse.org/articles/Article-RCP-2/tutorial2.html ) Rich Client Tutorial Part 3 (http://www.eclipse.org/articles/Article-RCP-3/tutorial3.html )
  • 43. 周甫(zoofchow@hotmail.com)43附件:项目文件打包