Eclipse插件开发中RCP的一些知识
- 格式:doc
- 大小:23.50 KB
- 文档页数:5
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插件,自身的知识点并不多。
计算机图书网上第一专营店常用插件扩展点在第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:透视图所对应的类(还没编写,下一步将完成此类)。
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的软件组件。
简单RCP框架源码分析关键字: RCP框架在我们新建一个RCP应用程序框架时,eclipse会为我们自动生成若干个类:网上也有很多关于“Hello RCP”的分析说明,但都聚集在类功能分析,没有源代码的分析。
下面着重分析一下其中的某些不易理解的类以及其中涉及到的其它类的源代码。
1.Application类:是RCP应用程序的入口点,你可以把它想象成程序的控制器,类似于Model2架构中的控制器。
它很简短,而且在不同的项目中变化不大;它所做的就是创建一个工作台Workbench,同时将其于一个WorkbenchAdvisor联系起来。
Workbench是RCP框架的一部分,一个RCP应用对应一个Workbench,但一个Workbench可以有多个Workbench窗口。
2.ApplicationWorkbenchAdvisor类:继承了WorkbenchAdvisor类,提供了两个方法,其中createWorkbenchWindowAdvisor方法将创建窗口的工作交给了ApplicationWorkbenchWindowAdvisor类。
3.WorkbenchAdvisor类:该类不是一个接口,而是一个抽象类,它不包含任何的功能实现,因为将来很有可能在其中添加其它方法。
Eclipse的设计者们希望每个RCP应用都实现它,由平台来调用。
Workbench和Workbench Window生命周期中的有一些重要事件,这些事件在WorkbenchAdvisor中都有相应的方法,Platform调用这些方法从而执行你的定制代码。
表1. WorkbenchAdvisor提供的事件处理方法表2. WorkbenchAdvisor提供的事件循环钩子表3. WorkbenchAdvisor提供的信息获取方法,你可以在子类中覆盖上面的WorkbenchAdvisor事件对大多数应用来说是足够了,但是在某些情况,RCP又提供了两个方法来控制你的应用窗口和控件如何被创建。
有关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. 外部工具的输出会显示在控制台视图中。