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插件转换为RCP应用程序(上)有不少朋友问到如何把一个已有的Eclipse插件转换为RCP应用程序,其实这个过程并不复杂,因为RCP 应用也是基于插件的结构,可以说RCP 就是精简后的Eclipse平台,只是我们要对这个平台做一些定制工作。
将任何一个传统的Eclipse插件项目转换到RCP可以分为两个步骤,这篇先介绍第一个步骤:建立应用程序。
在GEF入门系列(三、应用实例)里我曾做过一个精简的GEF应用程序(下载),这一篇里我就一步一步的把这个例子转换为RCP应用程序(点击下载转换后的项目打包)。
应用程序(Application)是通过扩展org.eclipse.core.runtime.applications扩展点建立的,其作用是让 Eclipse知道你的RCP需要什么样的功能,比如界面上有哪些视图,菜单和工具条,应用程序窗口的初始大小等等。
在plugin.xml里添加应用程序的定义很简单,像下面这样指定一个id和一个类名就可以了。
<extensionid="myapplication"point="org.eclipse.core.runtime.applications"><application><run class="com.example.application.MyApplication"/></application></extension>接下来我们的主要任务是实现这个类,MyApplication必须实现org.eclipse.core.runtime.IPlatformRunnable接口,这个接口只定义了一个run()方法,对于Eclipse Platform来说这个方法就相当于传统java程序的main()方法,是入口方法。
所有RCP应用程序里这个方法的实现几乎是完全一样的,即启动 Workbench,并把一个WorkbenchAdvisor实例作为参数传给它,如下所示:public class MyApplication implements IPlatformRunnable {public Object run(Object args) throws Exception {Display display = PlatformUI.createDisplay();try {int returnCode = PlatformUI.createAndRunWorkbench(display, new MyWorkbenchAdviso r());if (returnCode == PlatformUI.RETURN_RESTART) {return IPlatformRunnable.EXIT_RESTART;}return IPlatformRunnable.EXIT_OK;} finally {display.dispose();}}}所以应用程序的定制实际上是通过这个WorkbenchAdvisor实例实现的。
eclipse rcp 编程-回复Eclipse RCP (Rich Client Platform) 是一种用于构建桌面应用程序的框架,使开发人员能够基于Eclipse平台开发功能强大且个性化的应用程序。
本文将以以中括号内的内容为主题,一步一步回答关于Eclipse RCP 编程的问题。
什么是Eclipse RCP?Eclipse RCP是Eclipse基于插件化架构的一个桌面应用开发框架。
开发人员可以使用Eclipse RCP来构建具有丰富用户界面的功能强大的Java应用程序。
Eclipse RCP提供了一个可扩展的架构,使开发人员能够利用Eclipse平台的核心功能,并通过插件机制来添加自定义功能。
为什么选择Eclipse RCP?选择Eclipse RCP开发桌面应用程序有以下几个优势:1. 强大的插件机制:Eclipse RCP框架采用插件化架构,使开发人员可以将应用程序分解为独立的模块,通过插件的方式来实现功能的扩展和定制。
这种模块化的设计使得应用程序更易于维护和扩展。
2. 成熟的生态系统:Eclipse平台作为一个开源社区,拥有庞大的开发者社区和丰富的插件库。
使用Eclipse RCP开发应用程序可以充分利用这些已经存在的插件和工具,提高开发效率。
3. 丰富的用户界面:Eclipse RCP提供了丰富的GUI组件库,可以轻松构建出现代化的用户界面。
开发人员可以利用Eclipse的界面设计器创建界面,也可以使用自定义的SWT和JFace组件。
4. 跨平台性:Eclipse RCP框架是基于Java的,因此可以在多个操作系统上运行。
开发人员只需编写一次代码,即可在Windows、MacOS和Linux等系统上部署应用程序。
如何开始使用Eclipse RCP?以下是使用Eclipse RCP开始开发桌面应用程序的步骤:1. 下载并安装Eclipse IDE:从官方网站( IDE。
确保选择与您的操作系统和Java版本兼容的版本。
RCP基础总结:1.简介Rich client platform 富客户端平台:应用于JAVA桌面程序开发;一个Eclipse插件:Eclipse插件:普通插件(对宿主的扩展);脱离Eclipse框架独立运行;与J2EE(jsp,Servlet,ejb)完整结合;目前,国内 RCP 应用也逐渐发展和壮大起来,RCP 有希望扭转Java桌面应用的颓势。
如 Jlibrary 是一款开源的 CMS 系统,就是Eclipse RCP的典型应用,还有Nomad PIM(个人信息管理软件),ETC…。
2.RCP体系结构RCP就是一个简化了的eclipse平台,它只包含5个插件:runtime是核心类,osgi是定义的一个标准,用来规范不同的插件,让他们可以相互协作。
剩下的三个插件Workbench、SWT、JFace是用来显示给用户界面的。
填充RCP框架的"血肉"(内容:) ):1.Workbench每个RCP应用程序,对应一个Workbench(工作台),应用程序的主窗体.2.Perspective模块化单元,一个Workbench可包含多个Perspective(透视图),各个透视图之间是相互独立的单元.主要功能:布局视图3.View视图:主要负责信息的显示.一个透视图可包含一或多个视图.特点:可灵活布局于特定透视图,作为一个独立的显示模块, 可重用4.Editor编辑器:信息编辑区域.一个透视图对应一个编辑器.特点:可以与视图进行及时交互;方便用户编辑数据.几个不得不知道的文件:● src文件夹下为运行插件时的一些类文件。
● MANIFEST.MF为插件清单文件,是插件与外界沟通的桥梁。
MANIFEST.MF文件是保存OSGi 的 Bundle文件。
该文件也就是与其他平台的接口,通过该接口,外部平台可以使用该Eclipse的插件程序。
关键的key值所表示的意义:Bundle-Name:插件的名称。
第Ⅱ部分通过范例学习RCP学习作为富客户端平台的RCP,最佳方法是创建一个富客户端应用程序。
本书的这一部分内容,将引导你完成这个任务。
启动一台完全没有任何Eclipse 功能的机器,为了进行RCP开发,我们来逐步设置Eclipse,然后创建、运行、调试并增强一个功能齐全的即时消息客户端应用程序——名曰Hyperbola。
下图所示为你将创建的Hyperbola聊天客户端应用程序的屏幕截图。
第Ⅱ部分,以非正式的教程风格进行介绍——假设我们坐在一起,指导你完成Hyperbola的开发。
我们鼓励你跟着说明步骤去做。
如果你不想按照这些步骤或遇到困难,也可以在本书配套网站()找到每一章的全部源代码。
即使这几章非常注重开发,但每章的内容也非常完整,不按下列步骤或不看提供的源代码也可以读完。
第3章教程入门入门往往被证明是最大的挑战之一。
特别是,考虑到未来十多章教程的性质,理解本教程的目标,并确保你有一个合理的开发计划,对于拥有一个愉快的学习经验而言是至关重要的。
本章的目的是设置情境,包含如下内容:●概述教程的内容和发展●如何设置才能进行Eclipse RCP开发●如何获取、比较和管理范例代码●使用Eclipse IDE开发源代码的一些技巧3.1 Hyperbola是什么Hyperbola是为本书明确开发的一个即时消息聊天客户端程序。
即时消息领域十分引人注目,因为它非常简单,也容易理解。
事实上,你很可能在某个时候已经使用了即时消息客户端。
无论是Google Talk(谷歌对话)、Yahoo! Messenger(雅虎通)、AOL Instant Messenger (AOL即时信使)、MSN Messenger或者是Lotus Sametime,原理基本上是相同的——客户端连接到服务器,服务器将信息从一个客户端路由到另外一个客户端。
是什么使得编写另外一个聊天客户端如此有意思?尽管这个想法很简单,但是即时通信客户端本身还有很多挑战和功能需求。
有关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. 外部工具的输出会显示在控制台视图中。