Eclipse插件开发中RCP的一些知识
RCP开发指南

RCP开发指南一、什么是RCP桌面应用程序也可称为胖客户端程序或GUI程序。
用SWT可以像SWING一样开发独立的桌面应用,但这样无法利用Eclipse的插件机制,所以有些人就折衷了一下:把桌面应用写成Eclipse插件。
不过,插件基于Eclipse运行,Eclipse原有的菜单和工具栏无法消除。
如果你连Eclipse的那些菜单和工具栏均不想被用户看到,那么就要用到RCP平台。
所谓RCP,就是Rich Client Platform的缩写,即胖客户端平台,是Eclipse进化的产物(自3.0版以后出现),是Eclipse组织向用户提供的强大的开放性开发平台,能够使用户方便地创建自己的基于Eclipse的应用程序,并且这些应用程序能够得到Eclipse的底层支持。
更重要的是,我们可以利用Java创建象Eclipse这么漂亮的桌面程序。
二、RCP技术现状遗憾的是,目前在国内基本上找不到关于RCP的中文资料。
就国内现状来说,Eclipse 主要还是作为编程工具来使用,将Eclipse作为一个平台并在此平台上开发插件和系统的个人或公司还是非常少。
其实,Eclipse的插件开发和RCP开发并不复杂,主要还是因为太缺乏这方面的资料,我们只能通过自己的探索来为我们的程序添加我们想要的功能。
我相信,在未来的几年里,RCP一定会变得非常流行。
在RCP平台上,可以使用Eclipse 插件机制来快速开发独立的桌面应用程序,从而轻松拥有Eclipse的界面结构和界面元素,节省了很多的开发精力。
单从技术上讲,开发Java桌面应用,现阶段RCP平台是最佳选择。
RCP 通过其对桌面应用支撑的设计为我们展示了扩展点的最佳实践方法,将界面按照对象的思想进行划分,在划分的过程中根据职责形成插件,暴露出扩展点,最后形成了象树一样的结构体系,如图所示:三、快速起步指南RCP的主要知识基于SWT/JFace和Eclipse插件,自身的知识点并不多。
RCP学习笔记

4. Advanced Develop(Menu Item)
在ApplicationActionBarAdvisor类中添加一个成员变量
private IWorkbenchAction action1; 在MakeActions()创建我们的菜单项 action1 = new Action1(window); 在这里我们得创建一个继承自Action的类 public class Action1 extends Action implements IWorkbenchAction { ……/*Define the menu item action*/ } 再在fillMenuBar中将菜单项添加进来 newMenu.add(action1); 这样菜单添加的工作就完成了
2. Hello Example(2)
2. Hello Example(3)
其它的按照默认,记得将RCP那项选择上
2. Hello Example(4)
选择 Hello ECP templates, Finish完成
2. Hello Example(5)
工程创建完成后, Eclipse将自动生成以下内容: Application类 是RCP应用的主程序,相当于RCP应用的控制器 ApplicationActionBarAdvisor 类 负责为Workbech Window的Action Bar(菜单,工具条和状态栏等)创 建Action ApplicationWorkbenchAdvisor 类 ApplicationWorkbenchWindowAdvisor类 主要负责对Workbench Window进行控制,,列入状态栏,工具条, 标题,窗口尺寸等 SimplebrowserPlugin 类 主要用来存储插件的全局信息 Perspective 类 视图类,视图和编辑器都必须在这个类的creatInitilaLayout中设置 plugin.xml 文件 插件清单编辑器 build.properties 文件 在导出插件的时候这个文件指定了要Build的内容和相关资源的路径
RCP介绍

getSite().setSelectionProvider(this); 如果只是对TableViewer的选择进行监听,因为 TableViewer本身就是一个ISelectionProvider,因此可以直 接这样做: getSite().setSelectionProvider(viewer);
View/Editor交互
Eclipse提供了site,以及ISelectionService机 制,来处理视图之间的简单的交互 。 ViewSite提供了一个交互的中心点,其它 View向ViewSite提供选择事件,或者向其注 册监听器,而事件的触发与转发则由 ViewSite()来完成。
View/Editor交互(continue)
Eclipse Workbench介绍
Workbench(工作台) 只是一个可以提供各种可视部件的框架。这 些部件属于两个主要类别:视图和编辑器。
Editor:允许编辑某些内容,遵循“打开-保存-关 闭”这一循环。 View:提供对象信息。
基本工作台扩展点 工作台定义扩展点,这些扩展点允许插件将 行为添加至现有视图或编辑器,或成为新视 图和编辑器提供实现。
配置菜单
使用ActionSets Plugin.xml的extension,添加 Org.eclipse.ui.actionSets扩展点 新增menu 新增action 完善属性
SWT
窗口小部件
Text,Label,Button等
布局
RowLayout,FillLayout, GridLayout,FormLayout
实现了IEditorInput接口,在打开每一个Editor时候需要这个 EditorInput对象,以便在初始化Editor的时候得到它聚合的 对象。
RCP+常见的扩展点指南

计算机图书网上第一专营店常用插件扩展点在第17章对plugin.xml作了少量介绍,plugin.xml是插件和Eclipse内核的接口,Eclipse 就像一所大宅子,它的外墙(plugin.xml)有很多的门(扩展点),要熟练进出这座大宅子,先得搞清楚它有哪些门(扩展点)。
插件的扩展点非常之多,但很多扩展点都不常用到,只要熟悉一些主要的扩展点即可。
本节将面向实际开发需要来介绍这些扩展点,并且本章所有实例都在第17章建立的myplugin2插件项目的基础上创建。
18.1 加入透视图(perspectives)开发一个插件,最常用的方式就是新增一个属于本插件专有的透视图,然后在此透视图基础上来展开功能,本书也采用这种方式。
18.1.1 准备工作先将以前用到的包括图标的icons目录复制一份到myplugin2项目中,复制后的路径如图18.1所示。
图18.1 图标的路径18.1.2 修改plugin.xml文件,设置透视图的扩展点打开plugin.xml文件的编辑框,将如下代码块插入到最后一行的</plugin>项之前:<extensionpoint="org.eclipse.ui.perspectives"><perspectivename="myplugin透视图"icon="icons/selectall.gif"class=".chengang.SamplePerspective"id=".chengang.SamplePerspective"></perspective></extension>代码说明:❑org.eclipse.ui.perspectives是透视图的扩展点。
❑name:透视图的名称。
❑icon:透视图的图标。
❑class:透视图所对应的类(还没编写,下一步将完成此类)。
03 Eclipse RCP#

Eclipse平台的主要功能
• Eclipse平台的主要角色是为工具提供商 提供一套使用和遵循的机制,使各种工 具能够无缝地集成。这些机制体现在明 确定义的API、接口、类和方法。
9
周甫()
Eclipse平台架构
• 平台提供一些有用的构建模块和框架,以方便新工具的开发。
10
周甫()
平台运行时系统和插件架构
(ISV)。 • 提供操作任意内容类型的工具(例如, HTML,
Java, C, JSP, EJB, XML和GIF)。 • 简化不同内容类型和工具提供商之间的无缝集
成。 • 支持GUI和非GUI应用程序开发环境。 • 在各种操作系统上运行,包括Windows
8LinuxTM, Mac OS X, S周o甫(l)aris AIX和HP-UX。
13
周甫()
SWT
• 标准窗口组件套件(SWT)为窗口组件和图 形提供了一套通用的、独立于操作系统 的API,但它以与底层的本地窗口系统紧 密集成的方式实现。整个的Eclipse平台 用户界面以及其它工具插件使用SWT来 向用户展示信息。
14
周甫()
JFace
• JFace是一个用户界面套件,包含了很多 处理通用界面编程任务的类。JFace是在 API和实现上都是独立于窗口系统的,它 被设计用一和SWT一起工作,而不是隐 藏它。
15
周甫()
Workbench
• SWT和JFace是通用的界面套件,而工作台提供了 Eclipse平台个性化的用户界面,提供了工具与用户进 行交互的结构。工作台与Eclipse平台界面以及平台运 行时用户看到的主窗口是同义的。工作台API独立于 SWT API,并且对JFace的依赖较少。工作台是用SWT 和JFace来构建的,没有使用Java AWT和Swing。
Eclipse-RCP入门

Eclipse-RCP用于何处? Eclipse-RCP用于何处? IBM-Louts8 IBM-
Eclipse-RCP于我何用? Eclipse-RCP于我何用?
可以快速搭建桌面应用程序 使用Java语言编程 UI组件(widget)丰富 有可视化编程插件(SWTDesigner) 开源软件(版权、开发库)
1999年IBM开始开发Eclipse 2001年IBM发起创建Eclipse开源项目 同年,IBM发起并成立Eclipse协会 开源用户试图将Eclipse 作为通用富客户端使用,不 单单作为IDE。 2004年发布Eclipse3.0提出微小内核+插件的理念 2005年发布Eclipse3.1正式提出Eclipse-RCP的概念
Eclipse-RCP如何使用? Eclipse-RCP如何使用? Widget
Eclipse-RCP如何使用? Eclipse-RCP如何使用?
Example
Eclipse-RCP入门 Eclipse-RCP入门
快速搭建桌面应用程序
大纲
Eclipse-RCP它是什么? Eclipse-RCP怎么来的? Eclipse-RCP用于何处? Eclipse-RCP于我何用? Eclipse-RCP如何使用?
se-RCP它是什么? Eclipse-RCP它是什么?
Perspective应该包含哪些内容;
◦ 一组Viewer,一些Editor
如果通过配置产生一个Perspective; 如何在Perspective增加多个Viewer;
Eclipse-RCP如何使用? Eclipse-RCP如何使用? Layout
在composite中使用 setBounds FillLayout RowLayout GridLayout FormLayout
Eclipse RCP(中文)

Eclipse RCP的本教程介绍了如何开发Eclipse RCP应用程序。
它是基于Eclipse 3.6(Eclipse的太阳神)。
目录1。
Eclipse RCP的概况2。
Eclipse的插件架构2.1。
Eclipse IDE的越南难民。
Eclipse RCP的2.2。
Eclipse RCP的建筑2.3。
Eclipse RCP应用程序的一个主要组成部分2.4。
配置文件3。
安装3.1。
安装3.2。
更新一个Eclipse的Java IDE4。
创建您的第一个RCP应用程序4.1。
创建RCP应用程序4.2。
启动您的RCP应用程序5。
启动过程及顾问6。
运行配置6.1。
概述6.2。
检查运行时配置7。
命令7.1。
概述7.2。
定义命令7.3。
使用菜单中的命令8。
系统托盘9。
点击9.1。
概述9.2。
创建一个视图9.3。
添加你的观点的看法9.4。
结果9.5。
通过添加代码以透视9.6。
编辑/查看互动10。
现场协助和标签装饰11。
JFace的浏览器11.1。
概述11.2。
ComboViewer12。
添加一个状态行12.1。
设置状态行12.2。
共享状态线13。
透视13.1。
添加到应用程序的角度13.2。
选择的角度14。
产品及品牌14.1。
与产品应用14.2。
产品配置14.3。
创建您的产品配置14.4。
依赖性14.5。
启动您的产品14.6。
闪屏14.7。
品牌产品14.8。
自定义启动图标和发射参数15。
部署您的产品16。
技巧和诀窍16.1。
为用户节省布局16.2。
查找未使用的依赖16.3。
部署自己的JRE与您的RCP应用程序16.4。
多用户设置17。
问题与讨论18。
链接与文学18.1。
源代码18.2。
Eclipse资源18.3。
vogella资源1。
Eclipse RCP的概况Eclipse RCP的开发人员可以使用的Eclipse平台,建立灵活和可扩展的桌面应用程序。
Eclipse是建立在一个插件的体系结构。
插件是最小的部署和安装Eclipse的软件组件。
03 Eclipse RCP(三)(Eclipse平台技术综述)

1 Eclipse平台技术综述 平台技术综述
• Eclipse平台被设计和构建以满足以下需求: – 支持各种应用程序开发工具的构建。 – 支持各种工具提供商,包括独立软件制造商(ISV)。 – 提供操作任意内容类型的工具(例如, HTML, Java, C, JSP, EJB, XML和GIF)。 – 简化不同内容类型和工具提供商之间的无缝集成。 – 支持GUI和非GUI应用程序开发环境。 – 在各种操作系统上运行,包括Windows LinuxTM, Mac OS X, Solaris AIX和HP-UX。 – 利用流行的Java编程语言编写各种工具。
• Eclipse平台界面样式是基于编辑器(editor)、视图(view)
和透视图(perspective)的。从用户的角度上看,工作 台窗口由视图和编辑器组成。透视图体现在选择和安 排屏幕上可见的编辑器和视图。
周甫(zoofchow@)
16
团队支持
• Eclipse平台允许工作空间中的项目使用
18
周甫(zoofchow@)
结束语
• Eclipse平台提供了通用的构建模型和API,例如工作空
间和工作台,以及各种各样的扩展点,允许集成新的 功能。通过这些扩展点,工具可以编写成单独的插件 来扩展平台。可用的工具插件集合向用户展示了一个 专用的IDE。工具可以定义它们自己的扩展点和API, 从而成为其它插件的构建模块和集成点。 • Eclipse平台还有很多其它有趣的方面,例如调试支持、 与Ant构建工具的集成。关于Eclipse平台API、扩展点 以及标准控件进一步的详情,可以在平台插件开发指 南中找到,它是Eclipse SDK在线帮助的一部分。
– JAR中的Java代码 – 一些只读文件和其它资源(例如图片、web模板、消息资源文 件、本地类库等)。 – 一个插件清单,用于声明它与其它插件之间的连接关系,一个 插件的清单由几个文件表示:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
有关Eclipse开发中的一些知识
1. Eclipse的整个窗口称为workbench window
2. 右上角切换perspective的工具栏成为shortcut bar
3. workbench window可同时打开多个。
通过配置也可让每一个新打开的perspective显示在新window中
4. 在一个window中,每个perspective可以用不同组的view,但所有的view 共享同一组editor
5. view重用于在信息的列表或层次结构中导航,如resources;或显示当前active 的editor的属性
6. 对view的修改马上会马上保存
7. editor常用于编辑和浏览资源。
可用文本表示,也可用图像表示
8. editor的修改遵循open-save-close生命周期模型
9. part用于统称view和editor
10. 同一时间内,只能有一个active的part
11. active的part是常用操作,如copy、past、cut的目标
12. active的part也决定状态栏的内容
13. 某一个editor不再active时,view仍可能显示该不再active的eidtor的相关信息。
比如Hierarchy View。
14. editor中,显示文件名的区域称为tab,asterisk表示未save,setDirty()。
15. active part由editor变为view时,menu bar和tool bar的一些operation 可能会被disable掉。
16. editor可stack放置,也可side-by-side放置
17. 当某一resource没有相关联的editor时,将试图启用外部工具
18. 可用ctrl+F6来打开已启动的editor的列表
19. view含有两个菜单,一个用于控制其位置,一个称为”view pull-down menu”,常含有排序、过滤等功能
20. 文件导出的方式有:DND、Export、COPY/PAST
21. 文件导入的方式有:DND、Import、COPY/PAST。
(DND和COPY是否支持依赖于操作系统)
22. 删除project时,可以仅从workspace中删除而仍保留在操作系统中,也可OS中也删除。
File和Folder不支持此功能
23. search中的show previous search可显示以前的搜索结果。
其中的pin,可在再次搜索时另启动一个新的search view
24. marker包括bookmark、task marker、debugging breakpoint、problem
25. task可以关联到文件、关联到文件中的某一行、也可以没有任何关联。
在task view中可以对已完成的task打勾
26. dock cursor的种类
27. 可自定义perspective的action set
28. 开启一新的perspective后,window的标题栏会改变
29. 可自定义perspective的command,以改变menu bar和tool bar中可显示的内容
30. 可自己定义File->new菜单中显示那些内容、也可自定义window->open perspective中显示那些试图供选择
31. 文件的每一次save动作均记录有变更信息,可在history视图中查看、比较
32. universal welcome可自定义
33. resource有三类:project、folder、file
34. project可关闭,关闭的project占用更少的内存
35. Folder和File可link到workspace以外的区域,称为linked resources
36. Resource的层级结构:root、parent resources(仅可以是project或folder)、child resources(仅可以是folder或file)
37. linked resources的用途之一:作为build的输出目录。
一个资源可同属于两个project
38. 只有file有local history。
Folder和Project均没有
39. navigation view、problem view、task view、bookmark view均支持working set;search的时候也可使用working set
40. build,是由已存在的资源获得某个新资源、或者更新已存在的资源、或者两者均存在的过程。
不一定是将java文件编译为class
41. 对不同的project调用不同的builder。
如java project
42. 有两种类型的构建:增量构建(incremental build)和clean build。
前者在上一次构建的基础上构建;后者清除前一次构建产生的state和problem
43. edito左边的灰边可能含有标示error、warning或problem的图标。
bookmark、breakpoint、record note等也可能显示
44. Fast Views显示的视图在鼠标点到其它地方后自动最小化
45. Help View由几个page组成。
”Related Topics” page:跟踪workbench 内容的变化并对应显示不同内容。
其中的”About” section显示当前内容相关
的help;”Dynamic help” section显示可能相关的搜索结果。
46. 还有”All Topics”、“Book marks”、”Search”、”Index”几个page
47. Problem View,各种builder可自动记录problem、error
48. Outline View的内容是editor相关的
49. properties view显示一个被选中的item(比如resource)的属性名称和值
50. Toolbar有五种:
ü main toolbar,称为workbench tool bar。
其内容基于perspective的变化而不同。
其中的item是否disable由active的view或editor决定。
可通过鼠标拖放重新安排其section
ü view toolbar。
有些view tool bar还含有一个menu按钮,用倒三角表示
ü perspective switcher。
切换试图
ü最小化一个view stack时产生的tool bar
ü fast view bar
51. Label decorations。
编辑一个item的label或icon以显示额外的信息。
如CVS中的”>”
52. Help可在新window中查看,也可在同一window中用view查看。
53. 内容相关的help(Context Sensitive Help),选中后按”F1”,或点击帮助图标
54. Infopops。
帮助信息可以不显示在视图中,而是显示在弹出的信息框中。
55. feature是单独下载和安装的最小单元
56. 更新或下载会添加新文件,而不会删除或覆盖旧文件,因版本号不同,目录也不同
57. 新下载的feature或plugin会被配置(configuration),因此update和install 的过程被简化为更新configuration的过程。
重要的configuration应该被备份,以用于升级不成功时restore
58. 大的基于Eclipse的product常将其feature组织为tree结构
59. feature不必须的可标记为opitional
60. eclipse默认分配256M作为heap内存,可通过指定vm参数改变其大小: eclipse –vmargs –Xmx<memory size>
61. 也可指定permanent generation memory的大小。
默认值最大为64M:eclipse –vmargs –XX:MaxPermSize=<Memory Size>
62. 可通过-data指定workspace
63. 可通过-vm指定该eclipse的vm
eclipse –vm c:\j2sdk1.4.2\jre\bin\javaw
如果未指定vm,将查找OS的path
64. eclipse [platform options] [-vmargs [java vm arguments]]。
-vmargs虚拟机参数一定要放在platform参数之后,-vmargs后面的参数均会被直接传递给虚拟机,如果放在其后会因不被虚拟机识别而出错。
65. view、editor的tab位置也可以放在下方
66. 在创建一个folder或file时,可以让其link到另外一个目录或文件
67. 如某一workspace实际未被中用,却提示被占用,可删除其
workspace/.metadata/.lock
68. 外部工具的输出会显示在控制台视图中。