开发Eclipse插件

Eclipse最有魅力的地方就是它的插件体系结构。在这个体系中重要的概念是扩展点(extension points),也就是为插件提供的接口。每一个插件都是在现有的扩展点上开发,并可能还留有自己的扩展点,以便在这个插件上继续开发。
由于有了插件,Eclipse系统的核心部分在启动的时候要完成的工作十分简单:启动平台的基础部分和查找系统的插件。在Eclipse中实现的绝大部分功能是由相应的插件完成的,比如WrokBench UI插件完成界面的外观显示,Resource Management插件完成维护或生成项目或文件等资源治理工作(在下面的第二个例子就会用到这个插件),而Version and Configuration Management (VCM)插件则负责完成版本控制功能,等等。虽然以上提到的每一个功能都是绝大多数IDE环境所必备的功能,Eclipse却也把它们都做成了插件模式,甚至用来开发Java程序的开发环境(Java development tooling,JDT)也只不过是Eclipse系统中的一个普通插件而已。整个Eclipse体系结构就象一个大拼图,可以不断的向上加插件,同时,现有插件上还可以再加插件。下面的插件开发示例就是在WorkBench UI插件中的观察窗口扩展点上开发的。 
  
  本文第一部分介绍过Eclipse的开发界面其中之一就是观察窗口,它通常配合编辑窗口显示一些有用的信息,在这里我们只简单生成一个显示欢迎信息的观察窗口,假设新插件的名子叫Welcome。 
  
  第一步,先用向导新建一个Java项目。我们可以在菜单栏选择FileàNew,或用工具栏的向导按键,或是在资源窗口用鼠标右键菜单中的New,打开向导对话框,然后用缺省方式创建项目。并在项目中建立一个Welcome.java文件,代码如下: 
  
package com.nidapeng.eclipse.plugin;
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 Welcome extends ViewPart {
 Label label;
 public Welcome() {
 }
 public void createPartControl(Composite parent) {
  label = new Label(parent, SWT.WRAP);
  label.setText("Welcome to Eclipse");
 }
 public void setFocus() {
 }
}

  
  为使这个程序能正常编译,要配置它的编译环境,即指定所需的CLASSPATH。在Eclipse中可以用几种方法,常用的是两种:第一是在资源窗口或Java包窗口选中该项目,点击鼠标右键,在打开的菜单中选择属性(Properties),之后在属性对话框中选择Java Build PathàLibraries,用Add External JARs功能添加三个包,它们都是Eclipse的现有插件的类包,可以在"你的Eclipse安装路径plugins"下面的相应路径中找到。分别是org.eclipse.core.runtime插件中的runtime.jar,org.eclipse.swt中的swt.jar和org.eclipse.ui中的workbench.jar。第二种指定CLASSPATH的方法是先将以上提到的三个包直接导入到Eclipse中的某下一个项目中。假如导入到和Welcome.java相同的项目中,则无需进一步指定CLASSPATH,否则需要在项目的属性菜单中选择Java Build PathàProjects,然后选中这三个包所在的项目。 
  
  在我们的项目中还要生成一个XML文件,它的名字必须plugin.xml。代码如下: 
  
<?xml version="1.0" encoding="UTF-8"?>
<plugin
   id="com.nidapeng.eclipse.plugin"
   name="Welcome to Eclipse"
   version="1.0"
   provider-name="Ni Dapeng">
<requires>
   <import plugin="org.eclipse.ui"/>
</requires>
<runtime>
   <library name="welcome.jar"/>
</runtime>
<extension
      point="org.eclipse.ui.views">
   <category
         name="Welcome"
         id="com.nidapeng.eclipse.plugin.category1">
  </category>
   <view
         name="Welcome to Eclipse"
         category="com.nidapeng.eclipse.plugin.category1"
         class="com.nidapeng.eclipse.plugin.Welcome"
         id="com.nidapeng.eclipse.plugin.view1">
  </view>
</extension>
</plugin>

  
  在plugin.xml中一共有四个主要的标签:plugin,requires,runtime,extension。其中plugin标签的属性提供的是我们要开发的Welcome插件的基本信息,除了name,version,provider-name等,最重要的是id,它要求不能和现有的Eclipse插件id有冲突,因此我们用包名作为插件的id。requires标签中所列出的是需要的插件,这里我们要用到Eclipse Workbench和SWT API,因此导入了org.eclipse.ui插件。runtime标签指明的是我们开发的插件所在JAR包的文件名。extension标签是插件扩展点的信息。org.eclipse.ui.views是Eclipse系统提供的观察窗口扩展点,我们的例子是一个观察窗口(View),这表明我们是要在 org.eclipse.ui.views扩展点上进一步开发。extension中还包括category和view两个标签,在后续的启动Welcome插件步骤中,我们就会知道这两个标签的含义。要注重的是category和view标签的id的唯一性,并且在view的属性中声明了Welcome插件的类名。 
  
  在Eclipse中为plugin.xml提供了缺省可视化的编辑器,在编写plugin.xml过程中可以借助这个编辑器完成一些工作。假如你直接录入了plugin.xml文件源代码,还可以用这个编辑器校验你的代码:假如编辑器不能正确读入,就表明你的plugin.xml有一些问题。 
  
  在确认Weclome.java和plugin.xml都正确无误之后,可以用Eclipse菜单栏中的EXPort命令将Weclome.java导出为JAR文件,它的名子应该和plugin.xml中runtime声明的JAR相一致。同时导出plugin.xml。安装Welcome插件的方法和本文第一部分介绍的安装Tomcat插件方法是一样的:首先在"Eclipse的安装路径plugins"路径下面建立一个com.nidapeng.eclipse.plugin路径,然后将Weclome.jar和plugin.xml拷到这个路径下。之后必需重新启动Eclipse,在Eclipse启动的时候,它会搜索所有在插件路径下的插件并注册它们(仅仅是注册,只有在需要某个插件的时候,Eclipse才会启动它)。在重新启动的Eclipse的菜单栏中选择PerspectiveàShow ViewàOthers,在打开的对话框中我们会找到在plugin.xml中extension的category标签中声明的name属性:Welcome。在Welcome的支结点中包含了view标签name属性:Welcome to Eclipse。选中它并确认,Welcome窗口就会显示在Eclipse Workbench上的某个位置 。假如在执行了以上操作,但没有显示新窗口,可以再次打开Show View菜单,此时在菜单中应该有新一顶选择:Welcome to Eclipse,然后选中它。 
  
  上面我们完成了一个观察窗口的插件,但这个操作过程对开发稍微复杂一些的插件就显得不太方便了:每次测试都要将代码打包,发布,再重新启动Eclipse系统!为此Eclipse提供了一个专门为开发插件而做插件(有点绕嘴):Plug-in Development Environment(PDE)。本文前面曾提到,目前Eclipse的Release或Stable版本缺省提供了这个插件,因此假如安装的Eclipse是这两个版本中的一个就可以直接进行下面的步骤。下面我们再用PDE环境开发一个稍微复杂一些的插件。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值