【eclipse插件开发实战】Eclipse插件开发4——插件JDE、PDE开发方式及plugin.xml配置文件结构
Eclipse插件开发4——插件JDE、PDE开发方式及plugin.xml配置文件结构
开发方式分为:java开发环境JDE开发插件的方式和插件开发环境PDE开发插件方式。
插件通过添加到预定义的扩展点来向平台添加功能。要将程序代码变成插件,需要:
1. 决定插件如何与平台集成
2. 标识需要进行添加的扩展点以便与开发者的插件进行集成
3. 根据扩展点的规范来实现这些扩展
4. 提供清单文件plugin.xml,它描述开发者正在提供的扩展以及代码的封装
5. 测试插件
6. 对插件进行封装
插件开发实例:我们将介绍使用Java开发环境JDT开发插件,并在下一篇文章中介绍如何直接使用插件开发环境PDE开发插件。下面我们以“HelloWorld”为例,作为插件实现,说明如何创建平台插件,其步骤如下:
一、JDT开发插件
1. 使用菜单栏选择“文件”->“新建”->“项目”,打开“新建项目”向导。
2. 使用向导并以默认方式创建一个Java项目,项目名取为HelloWorld。
3. 使用菜单栏选择“文件”->“新建”->“文件”,打开“新建文件”向导。
4. 以默认方式新建一个Java文件,文件名取为HelloWorld.java。
5. 点击“完成”,创建该文件,并在文件中输入下列代码:
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.SWT;
import org.eclipse.ui.part.ViewPart;
public class HelloWorld extends ViewPart {
Label label;
public HelloWorld() {
}
public void createPartControl (Composite parent) {
label = new Label(parent,SWT.WRAP);
label.setText (“Hello, World!”);
}
public void setFocus() {
}
}
6. 在包资源管理器窗格中,鼠标右击本项目,从上下文菜单中选择“属性”,指定项目的类路径,编辑配置程序的编译环境。
7. 在”属性”窗口的左面窗格选择“Java构建路径”,然后在右面的窗格中选择“库”选项卡。
8. 在“库”选项卡下,点击“添加外部JAR”按钮,添加Eclipse安装目录下的下列三个JAR文件:
\plugins\org.eclipse.core.runtime_2.1.1\runtime.jar
\plugins\org.eclipse.swt.win32_2.1.0\ws\win32\swt.jar
\plugins\org.eclipse.ui.workbench_2.1.0\workbench.jar
注意,随着Eclipse的版本不同,以上文件的路径名可能会有所不同。
9. 使用“新建文件”向导,以默认方式创建一个XML项目,文件名必须为plugin.xml。
10. 点击“完成”,创建该文件,并在文件中输入下列代码:
<?xml version="1.0"encoding="UTF-8"?>
<plugin
id="edu.bupt.plugin"
name="HelloWorld"
version="1.0" >
<runtime>
<library name="HelloWorld.jar"/>
</runtime>
<requires>
<import plugin="org.eclipse.ui"/>
</requires>
<extension
point="org.eclipse.ui.views">
<category
name="HelloWorld"
id="edu.bupt.plugin.category1">
</category>
<view
name="HelloWorld1"
category="edu.bupt.plugin.category1"
class="edu.bupt.plugin.HelloWorld"
id="edu.bupt.plugin.view1">
</view>
</extension>
</plugin>
注:plugin.xml文件代码的含义:
在plugin.xml中一共有四个主要的标签:plugin、requires、runtime、extension。
(1) plugin标签:其中plugin标签的属性提供的是我们要开发的插件的基本信息,除了name、version、provider-name等,最重要的是id,它要求不能和现有的Eclipse插件标识符有冲突,因此本例中用包名作为插件的标识符。
(2) requires标签:requires标签中所列出的是需要的插件,需要用到Eclipse工作台和SWT
API,因此导入了org.eclipse.ui插件。
(3) runtime标签:runtime标签指明的是开发的插件所在JAR包的文件名。
(4) extension标签:extension标签是插件扩展点的信息。
n org.eclipse.ui.views是Eclipse系统提供的观察窗口扩展点。
n 本例是一个观察窗口,这表明将在 org.eclipse.ui.views扩展点上进一步开发。
n extension中还包括category和view两个标签,要注意的是category和view标签的标识符的唯一性,并且在view的属性中声明了Welcome插件的类名。
11. 选择Eclipse菜单栏“文件”->“导出”命令,将HelloWorld项目以JAR文件形式导出到Eclipse安装目录的plugin子目录下的某一目录中,同时将plugin.xml导出到该目录中。
12. 关闭并重新启动Eclipse。Eclipse启动时,将会搜索所有在插件路径下的插件并注册它们。
13. 在菜单栏中选择“窗口”->“显示视图”->“其它”,打开“显示视图”窗口。
14. “显示视图”窗口中,显示了在plugin.xml中extension的category标签中声明的name属性:HelloWorld,在HelloWorld结点中包含了view(“视图”)标签的name属性:HelloWorld1。
15. 选中HelloWorld1,并点击“确定”按钮,Eclipse中将出现HelloWorld1窗口。
二、PDE开发插件
下面将介绍直接使用插件开发环境开发插件的实例。
为何需要使用插件开发环境?首先,在Eclipse中使用常用的Java开发环境就可完成插件的开发,但在插件开发过程中的每次测试都要将代码打包、发布,然后再重新启动Eclipse系统;其次,为了进一步便于进行插件开发,Eclipse提供了进行插件开发的“插件开发环境(PDE)”;最后,PDE本身也是插件。
PDE的作用:第一,插件开发环境是一个工具,提供用来自动创建、处理、调试和部署插件的专门工具,使开发插件和扩展更方便、有效。第二,在平台工作台中工作时,PDE可以用来帮助开发者开发平台插件。第三,PDE 提供了一组平台扩展添加项(视图、编辑器和透视图等),它们共同努力使得在工作台内开发插件的进程更为顺利。
PDE和平台的集成:与一般平台原理一样,PDE 不是单独启动的工具。PDE 是作为包含在 SDK 中的一组插件来安装的。安装 PDE 时,工作台看起来是一样的,但是用户将看到工作台提供了新的透视图、向导、编辑器和视图。PDE 与平台溶合在一起,并且通过新透视图来提供其功能。PDE 是基于平台和Java 开发工具的。
之前介绍了插件开发的一些理论的东西,现在搭建一个eclipse插件工程,然后看下插件工程的结构。
第一步,新建一个插件工程,选择“插件项目”:
第二步,项目名这里为Time,注意对应eclipse版本,这里选择3.7版本
第三步,这里是基于RCP的开发,尤其注意需要选择“是”,创建富客户机应用程序。
第四步,这里有很多模板可供选择,每种模板都会有不同的插件支持,最基本的是org.eclipse.core.runtime.applications和org.eclipse.ui,这里选择这两个就够了,最简单的HelloRCP模板就只支持这两个,这里创建一个HelloRCP模板足矣。
第五步,把应用程序窗口标题改为“TimeAlamer”,点击“完成”。
第六步,下面可以看到创建好的插件项目工程,主要的目录结构如下:
首先说明几个重要文件:
1.MANIFEST.MF
OSGI 的 manifest 文件,用来描述插件的依赖关系和build环境等。打开MAINFEST.MF文件,如下图所示。
首先,在“概述”选项卡里标识了插件工程的基本信息,这里可以修改版本号等。
第二,在“调试”栏里可以修改调试方式。
2.Plugin.xml
在plugin.xml选项卡里可以看到,eclipse的配置文件,描述插件扩展点等,这个在之前已经讲过了,这里给出之前利用向导创建的Time插件工程的plugin.xml结构。其中<class>属性指定了处理事件的类(例如TimeHandler.java,这个是需要自行添加的事件处理类)。
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>
<extension
id="application"
point="org.eclipse.core.runtime.applications">
<application>
<run
class="timer.Application">
</run>
</application>
</extension>
<extension
point="org.eclipse.ui.perspectives">
<perspective
name="RCP Perspective"
class="timer.Perspective"
id="Timer.perspective">
</perspective>
</extension>
<extension
point="org.eclipse.ui.commands">
<command
defaultHandler="timer.TimeHandler"
id="rcpproject.commands.Time"
name="Time">
</command>
</extension>
<extension
point="org.eclipse.ui.menus">
<menuContribution
allPopups="false"
locationURI="toolbar:org.eclipse.ui.main.toolbar">
<toolbar
id="SayTime">
<command
commandId="rcpproject.commands.Time"
icon="icons/time.PNG"
style="push"
tooltip="StartAlarm">
</command>
</toolbar>
</menuContribution>
</extension>
<extension
point="org.eclipse.ui.menus">
<menuContribution
allPopups="false"
locationURI="menu:org.eclipse.ui.main.menu">
<menu
id="timeMenu"
label="Alarmer">
<command
commandId="rcpproject.commands.Time"
icon="icons/time.PNG"
label="Time"
style="push"
tooltip="StartAlarm">
</command>
</menu>
</menuContribution>
</extension> </plugin>
PDE 插件提供了上述这两个文件的图形化编辑器。
3.各个java类说明
在Time工程里主要有这么几个类:
Activator.java ------对插件的生命周期进行管理,被称为插件类;
Application.java
ApplicationActionBarAdvisor.java
ApplicationWorkbenchAdvisor.java---------工作台类;
Perspective.java
TimeHandler.java ------自定义的事件处理类;
在下一篇文章中,将详细介绍利用PDE来开发一个插件工程Time。
【eclipse插件开发实战】Eclipse插件开发4——插件JDE、PDE开发方式及plugin.xml配置文件结构的更多相关文章
- 【eclipse插件开发实战】Eclipse插件开发1——eclipse内核结构、扩展点机制
Eclipse插件开发实战1--eclipse内核结构.扩展点机制 一.前言 本系列总体介绍eclipse插件开发基本理论.插件项目结构及开发步骤,最后再给出两个插件开发实例. 总体安排结构如下: 1 ...
- 【eclipse插件开发实战】 Eclipse插件开发6——eclipse在线翻译插件Translator开发实例详解
Eclipse插件开发6--eclipse在线翻译插件Translator开发实例详解 在上一篇文章中讲到了一个简单的eclipse插件开发实例,主要是对插件工程的基本创建步骤进行了讲解,这篇文章当中 ...
- 【eclipse插件开发实战】Eclipse插件开发3——OSGi、RCP
Eclipse插件开发实战3--OSGi.RCP 一.OSGi 1. 什么是OSGi框架 OSGi(Open Service Gateway Initiative)框架是运行在JavaVM环境里的服务 ...
- 【eclipse插件开发实战】Eclipse插件开发2——SWT
Eclipse插件开发实战2--SWT 一.SWT简介 SWT(StandardWidget Toolkit) 标准小窗口工具箱,一开源的GUI编程框架,与AWT/Swing有相似的用处,eclips ...
- CloudIDE插件开发实战:教你如何调试代码
摘要:今天我们来重点介绍下CloudIDE插件的调试技巧,在插件开发过程中调试作为重要的问题分析和定位手段能够有效帮助开发者提升插件质量. 今天文章中的样例工程我们继续以上一篇<实战CloudI ...
- spring boot插件开发实战和原理
本文转载自spring boot插件开发实战和原理 实战:编写spring boot插件 为什么要编写boot插件 因为我们在开发的时候需要提供一些共同的功能,所以我们编写个共同的jar包.开发人员在 ...
- eclipse怎样在线安装hibernate tools插件并使用
不知不觉,小Alan已经将近3个月没有上班了,最近在复习一些知识,随时准备回到代码世界的战场,今天复习到了Hibernate,记录一下一点点小知识,那就是eclipse下hibernate Tools ...
- Eclipse 3.5使用dropins的插件安装方式
以前安装Eclipse插件有两种方式 1 直接copy插件到features/plugins目录 2 在links目录下创建链接文件. 而 Eclipse 3.5又推出另一种新的安装途径, 更加灵活. ...
- Eclipse下快速打开本地文件的插件easy explore
插件下载地址:http://jianguoyun.com/p/DeNpa8IQx5jkBRjKlAk 放到eclipse的plugin目录下后,eclipse 3.5+可以放到dropins目录下,重 ...
随机推荐
- Activiti实战
说实话,接触Activiti已经是3年前的事情,那时候组里想做一个流程自动化的application,并且记录用户点击.做单量等.第一次听说Activiti,感觉挺好奇的,遂看了下相关的文档跟同事的代 ...
- Java8新特性(一)概览
最近看了好几段Java代码和以往的风格很不一样,都有点不太适应了,后来一查原来是Java8的新特性. 为了保持对技术的敏感性(面试...),这里我们一起来学习下Java8的新特性. 如果从技术角度来看 ...
- 高性能MySQL(三)
服务器性能剖析 性能优化概述 性能优化是降低CPU使用率?错误,资源就是用来消耗的,新版本MySQL的InnoDB引擎对资源的利用率还增高了,所以这不是一个好的衡量标准. 提升每秒查询量?其实就是吞吐 ...
- 转_【大话IT】你离大数据架构师有多远?
话题背景: 首先,先科普下“数据架构师”的相关职责:数据架构师要负责建立和维持公司数据储存的技术基准,策划硬体和软体的结构,确保数据储存系统可以支持未来的数据量和分析需求. 据了解,美国地区数据架构师 ...
- ACM-BFS之Open the Lock——hdu1195(双向BFS)
这道题的0基础版本号,暴力BFS及题目详情请戳:http://blog.csdn.net/lttree/article/details/24658031 上回书说道,要用双向BFS来尝试一下. 最终A ...
- Juce源代码分析(九)应用程序基类ApplicationBase
在前面的几篇文章,分析的都是Juce库里面Core模块的内存部分,除了骨灰级C++爱好者之外,貌似大家对这些都不是非常感兴趣.相信大家更想知道Juce是怎么用于产品开发,而对于它的构成不是非常感兴趣. ...
- Bubble Cup X - Finals [Online Mirror] B. Neural Network country 矩阵快速幂加速转移
B. Neural Network country time limit per test 2 seconds memory limit per test 256 megabytes Due to t ...
- Cocos2d-JS 项目接入 触控广告平台(基于anysdk2.0.2)
本文以Cocos2d-JS项目作为示例,讲解如何集成AnySDK-JS. 一.如何创建项目我就省略了,直接进入主题. 1.1 首先,我需要下载anysdk框架包,下载地址:http://www.any ...
- 最简单的Windows程序
准备研究一下vmp 保护,从一个最简单的Windows程序入手似乎是个不错的想法. 如何才最简单呢,仅仅有一个MessageBox 调用好了. 弹出消息.退出,哦也,够简单吧. 祭出法器VC2010. ...
- log4j(转)
让System.out.println回家种田,换句话说,就是该干嘛干嘛去. 您可能在想: System.out.println几乎在每个Java程序里都有那么几行,如何让他老人家回家种田呢? 我们怎 ...