ImageVerifierCode 换一换
格式:DOCX , 页数:48 ,大小:1.41MB ,
资源ID:12255174      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/12255174.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Eclipse插件开发文档记录文本.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Eclipse插件开发文档记录文本.docx

1、Eclipse插件开发文档记录文本Eclipse插件开发文档记录一、 参考 .360doc./content/12/0322/18/9210133_196714278.shtml二、 Eclipse插件开发之基础篇(1)名词翻译有一些名词在翻译的过程中可能会出现歧义,在这里统一一下。=architecture=架构=platform=平台=component=组件其余的随时补充。1.Eclipse的架构Eclipse被作为java的IDE(集成开发环境)被广泛的应用,但是从本质上看Eclipse是一个整合了各种开发工具的平台。因此,它采用了可以自由的增加各种功能的插件架构技术。Eclipse平

2、台的基本架构如图1-1所示。?图1-1 Eclipse的架构在这里,在最底层位置的是作为Eclipse插件架构基干的OSGi运行时。虽然在早期的Eclipse版本中已经开始使用插件架构了,但是在Eclipse3.0的时候才首次引入了OSGi。OSGi是open services gateway initiative的简称、原本是一种为嵌入式硬件开发的,使网络上的服务提供者和使用者交互(結)的注册服务。Eclipse使用OSGi来进行插件的管理。OSGi运行时之上所有被配置的组件群都是以插件的方式提供的。SWT和JFace提供了用户接口(User Interface)的API。由于SWT和JFa

3、ce并不依赖于Eclipse,也有可能被作为类库单独使用。Eclipse不仅把基本的用户接口作为工作台API(WorkBench API)提供出来,在后面要讲到的工作区(Workspace)的资源通过资源API(Resource API)的形式也被作为基本API提供出来了。在这之上构建起了帮助系统以及基于更新管理器的自动更新等功能。从Eclipse平台的角度看,SWT、JFace、工作台的部分就是EclipseRCP(Rich Client Platform)。EclipseRCP是基于Eclipse的富客户端技术,Eclipse不仅是一个开发工具,也可以作为一个通用的应用程序平台。Eclip

4、seRCP是Eclipse平台的子集,同时,Eclipse自身也是一个EclipseRCP的运用实例。2.扩展点插件为了自身能够对其他插件进行扩展而提出了扩展点的概念。当要为插件增加功能的时候就可以利用这个扩展点。在扩展点的基础上,插件之间可以互相连接。图1-2 使用扩展点进行扩展扩展和扩展点的连接在程序执行时被建立,提供扩展点的插件事先并不知道该扩展点实际被扩展了什么样的行为。使用扩展点的插件需要在清单文件(plugin.xml)中像代码1-1那样,使用extension元素声明扩展。extension元素中的schema由提供扩展点的插件决定,元素中的容必须按照schema进行书写。代码1

5、-1 plugin.xml中声明扩展?123 . 像上面这样的扩展点和扩展不断的积累重叠,使得Eclipse平台能够实现各种各样的功能。Eclipse平台提供的扩展点有 增加菜单项 增加视图 增加编辑器等等,数量非常的多。本文将以使用频率相对较高的扩展点为中心进行介绍,在Eclipse的帮助中有Eclipse提供的所有扩展点的说明,大家在使用时可以参考。当然,定义一个新的自制插件是绝对可能的。扩展点的定义方法会在扩展点定义章节中为大家详细介绍。3.工作台(Workbench)在这里认为看到本文的同学们都曾经用Eclipse做过java的开发。Eclipse的各个部分的名称大家也许都已经知道了。

6、为了在以后的文章中统一意识,在这里我们再复习一下。工作台是Eclipse的整个用户接口的统称。工作台的结构见图1-3图1-3 工作台 工作台窗口Eclipse的窗口。通常一个工作台会打开一个窗口,但是也可能一个工作台对应多个窗口。 工作台页面在工作台上打开的每个透视图(用于特定用途的视图、编辑器的布局)和一个页面对应。可以包含多个视图和编辑器。 菜单栏和一般的GUI应用一样的菜单栏区域。 工具栏和一般的GUI应用一样的工具栏区域。默认情况下工具栏的右边区域用来显示透视图的列表 状态栏通常在画面的最下面显示的区域。编辑器的光标位置、生成进度状况等根据工作台上的操作容显示各种信息。 视图作用是提供

7、开发者想要的信息。可以收到状态栏,必要时再打开(高速视图)。基本上一个视图在一个工作台只能打开一个。 编辑器主要用于文件的编辑。和视图不同编辑器可以同时打开多个。对于同一个文件也可以打开多个编辑器。从插件的代码中访问工作台使用org.eclipse.ui.PlatformUI类。代码1-2说明了从PlatformUI中取得工作台和工作台窗口的代码示例。代码1-2 使用PlatformUI访问工作台?12345678/取得工作台 IWorkbench workbench = PlatformUI.getWorkbench(); /取得工作台窗口 IWorkbenchWindow window =

8、 workbench.getActiveWorkbenchWindow(); /取得工作台页面 IWorkbenchPage page = window.getActivePage(); /取得当前处于活动状态的编辑器窗口 IEditorPart part = page.getActiveEditor();4.工作区和资源API在Eclipse中使用工作区作为开发人员的作业区域。工作区是在Eclipse启动时指定的一个物理文件夹。开发人员在Eclipse上生成工程、创建文件等操作都会在工作区指定的文件夹生成实际的文件。工作区的资源在Eclipse部使用org.eclipse.core.reso

9、urces包中定义的虚拟对象进行操作,例如工程是IProject、文件夹是IFolder、文件时IFile。图1-4 工作区的资源在插件开发的时候很多情况都会使用到工作区的文件或者文件夹。这时就可以使用这些对象。对工作区的访问需要使用org.eclipse.core.resources.ResourcesPlugin。代码1-3是利用IWorkspaceRoot,去的工作区的工程的代码示例代码1-3 使用ResourcesPlugin访问工作区?1234/取得工作区的root IWorkspaceRoot wsroot = ResourcesPlugin.getWorkspace().getR

10、oot(); /取得项目 IProject projects = wsroot.getProjects();工作台和资源访问的API是Eclipse提供的API中最基本的,在插件开发时使用频率较高的API。在这里不做详细的说明,在以后得例子中会出现一些这样的API。使用PlatformUI作为工作台访问的入口点和使用ResourcesPlugin作为工作区访问的入口点,是无论如何也要记住的。三、 Eclipse插件开发之基础篇(2) 第一个Eclipse插件在Eclipse中使用PDE(Plugin Development Environment)进行插件开发。在PDE中为大家准备了几个模板供

11、大家参考。第一步咱们先利用模板制作一个简单的插件作为和PDE的第一次接触。1.生成插件工程通过选择文件-新建-工程.启动新工程(New Project)向导。在插件开发的时候我们就不能选择通常的java工程了,要选择新建一个插件工程。选择插件工程(Plug-in Project)后点击下一步(Next)(图2-1)。下一步,输入一个适当的项目名(图2-2)。习惯上项目名和插件的ID是相同的。插件ID和java包的命名方式相同,必须一个世界围唯一的名称。在这里用cn.sf.amateras.sample作为项目名称(=插件ID)。点击下一步(Next)。图2-1 生成插件工程图2-2 输入插件信

12、息输入插件ID、插件版本、插件属性(插件作者)(图2-3)等信息。插件ID会被自动设成之前输入的工程名。没有其他特别的设定的话继续点击下一步(Next)。图2-3 输入生成工程必要的信息图2-4 模板选择图2-5 输入模板信息根据选择的模板生成的插件在(图2-5)的画面可以修改一些信息。如果没有特别需要设定的地方点击完成(Finish),生成工程。PDE透视图插件工程生成后,就会切换到PDE(插件开发)透视图。工程此时根据选择的Hello,World模板生成了插件的源代码,并且打开了manifest编辑器。图2-6 PDE(插件开发)透视图2. 插件的动作接下来我们看一下插件的动作。manif

13、est编辑器的概要页面右侧启动Eclipse应用(Luanch an Eclipse application)(图2-7)。点击后,会启用一个新的Eclipse实例。这个新的实例被称为运行时工作台。运行工作台可以以嵌入当前正在开发的插件的状态启动,以使开发者可以对插件的动作进行确认。图2-7 启动运行时工作台启动的运行时工作台,会在菜单栏上增加一个新的菜单项。这个菜单项就是插件的代码追加上去的。在工具栏上也增加了一个相应的按钮。工具栏上的按钮和菜单项目效果相同,都会出现一个Hello,Eclipse World的对话框。Eclipse版的Hello World就完成了。确认完这些动作后,就可以

14、关闭当前的运行时工作台了,咱们在下个小节的讲解中还要去参考插件工程的代码呢图2-8 示例中新增的菜单项和工具栏按钮以及相应的动作MANIFEST.MF和plugin.xml一个插件包含MANIFEST.MF和plugin.xml两个配置文件。MANIFEST.MF是OSGi的handler配置文件,记录了插件ID、名称、作者、和其他插件的依赖关系等。plugin.xml记录了插件的扩展和扩展点的定义等信息。Eclipse3.1以前由于还没有采用OSGi技术,插件的所有信息都记录在plugin.xml里。所以应用在Eclipse3.1以前版本的插件如果要应用于Eclipse3.1和以后版本时要注

15、意遵守OSGi的配置文件定义规。3. PDE的功能PDE(插件开发环境Plugin Development Enviromment)提供了插件开发的各种功能。因为插件的开发使用java语言,所以也会使用到java编码工具JDT。Manifest编辑器PDE提供的功能中最重要的就是Manifest编辑器。编辑器可以为插件的两个配置文件提供图形化的编辑功能。(图2-9)编辑器的配置项目非常多,可以通过编辑器下面的tab页切换设定画面。图2-9 Manifest编辑器表1 Manifest编辑器各tab页 页面说明Overview可以设定插件的概要信息。生成用于发布的文档以及启动运行时工作台。Dep

16、endencies设定插件间的依赖关系。Runtime可以设置导出包和ClassPath。Extensions管理当前插件对扩展点的扩展。Extension Points管理当前插件的扩展点。Build生成工程时的各种设定。MANIFEST.MF显示MANIFEST.MF的源代码plugin.xml显示plugin.xml的源代码build.properties显示build.properties的源代码在Overview以外的tab页上部会显示一些快捷键按钮,使用这些按钮也可以进行启动运行时工作台,导出等操作。图2-10 编辑器上部下面介绍一下PDE题供的几种视图。在Window-Show

17、View中可以找到没有被显示的视图。插件(Plug-ins)视图所有的插件列表,包含当前工作区正在开发的插件。打开插件节点可以显示插件下包含的资源,但是以jar包提供出来的插件就显示不出来了。在插件节点上点击右键选择打开依赖关系(Open Dependencies)可以打开后面要介绍的依赖关系视图,表现插件间的依赖关系。右键菜单中也可以把选中的插件作为一个工程引入到当前工作区。依赖关系(Plug-in Dependencies)视图表现了插件间的依赖关系。可以分别表示当前插件依赖的插件和依赖当前插件的插件。插件注册(Plug-in Registry)视图当前工作台加载的所有插件列表。打开插件节

18、点,显示插件提供的扩展和扩展点、依赖关系等。错误Log(Error Log)视图错误Log视图虽然不是PDE提供的功能,但是在插件开发的时候非常有用。它可以表现当前工作台发生的错误,并且在错误上双击既可以导向到错误发生的地方。Plugin-in SelectionSpy同时按下alt+shift+F1Plugin-in SelectionSpy是从Eclipse3.4开始加入的新功能,能够显示当前焦点所在的编辑器、视图、向导、对话框等的部信息。把已有的插件作为参考,进行插件开发,使用这个功能是再合适不过了。4. 解读示例插件的代码让我们回到插件工程来,看一看插件工程生成的代码。首先看一下plu

19、gin.xml的代码。代码2-1 plugin.xml?12345678910111213141516171819202122232425262728 为了在菜单栏增加一个项目,文件中使用了extension元素。的id指定了扩展点的名称org.eclipse.ui.actionSets。extension里的容根据扩展点而不同。示例插件中包含了actionSet、menu、action等元素。中的class属性指定了cn.sf.amateras.sample.actions.SampleAction类作为响应菜单或者工具栏按钮的action类。代码2-2 SampleAction.java?

20、12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364package.sf.amateras.sample.actions; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.

21、ui.IWorkbenchWindowActionDelegate; import org.eclipse.jface.dialogs.MessageDialog; /* * Our sample action implements workbench action delegate. * The action proxy will be created by the workbench and * shown in the UI. When the user tries to use the action, * this delegate will be created and execut

22、ion will be * delegated to it. * see IWorkbenchWindowActionDelegate */public class SampleAction implements IWorkbenchWindowActionDelegate private IWorkbenchWindow window; /* * The constructor. */public SampleAction() /* * The action has been activated. The argument of the * method represents the rea

23、l action sitting * in the workbench UI. * see IWorkbenchWindowActionDelegate#run */public void run(IAction action) /. MessageDialog.openInformation( window.getShell(), Sample, Hello, Eclipse world); /* * Selection in the workbench has been changed. We * can change the state of the real action here *

24、 if we want, but this can only happen after * the delegate has been created. * see IWorkbenchWindowActionDelegate#selectionChanged */public void selectionChanged(IAction action, ISelection selection) /* * We can use this method to dispose of any system * resources we previously allocated. * see IWor

25、kbenchWindowActionDelegate#dispose */public void dispose() /* * We will cache window object in order to * be able to provide parent shell for the message dialog. * see IWorkbenchWindowActionDelegate#init */public void init(IWorkbenchWindow window) this.window = window; run()方法记录了action执行时的处理。利用MessageDialog.openInformation方法打开了一个对话框。咱们再看看生成的另外一个类-Activator类。这个类对插件的生命周期进行了管理,被称为插件类。代码2-3 Activator.java?12345678

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1