第一天:第一个Plug-in,Hello World

作者:梁祺 (eclipsesbs@gmail.com)

来自:http://www.benisoft.net/day1/index.html

刚开始接触Plug-in开发,我们可以先看一个最简单的Plug-in,Hello World。这个Plug-in可以通过Eclipse提供的模版生成,不需要写任何代码。不过通过这个Plug-in,可以了解Plug-in的基本结构,对于今后的Plug-in开发是很有帮助的。下面我们就开始吧。

首先启动Eclipse,来创建一个Plug-in项目。在主菜单选择“File/New/Project”。

在“New Project”对话框中选择“Plug-in Project”,点击“Next“。

在“New Plug-in Project”对话框中,在”Project name“文本框输入项目名,这里我们输入“eclipse.tutorial.day1“。顺便看一下”Location“文本框,也就是新创建的项目在磁盘上的位置,方便今后查找。其他的属性就不用改了,点击“Next“。

这里我们需要输入Plug-in的一些基本信息。

  • ID:Plug-in的ID是Plug-in的唯一标识,我们输入“ eclipse.tutorial.day1”。
  • Version:我们就用缺省值"1.0.0.qualifier",”1.0.0“比较好理解,”qualifier“我们后面会看到,在Plug-in导出时,它会被替换成导出的日期。
  • Name:用以表达Plug-in用途,用户在安装Plug-in的时候,是通过这个名字了解这个Plug-in是做什么用的。
  • Vendor:就是开发者或公司名称,我们这里用不着。
  • Execution Environment,是指定Plug-in运行的环境要求,比如Java 1.5还是1.6,等等。

其他选项用就用缺省值,点击“Next“。

在接下来这页,选择模版“Hello, World”。从右面的解释,可以看到这个模版演示如何使用Action Set来创建菜单和工具栏按钮,在Eclipse里,菜单和按钮都由Action来完成,Action是Eclipse里非常灵活的一个部分,当然也很复杂。另外,Eclipse里大量使用扩展点来添加功能,在这个例子里,就用到“org.eclipse.ui.actionSets”这个扩展点,通过扩展这个扩展点,可以在Eclipse的主菜单栏和工具栏中插入我们的菜单项和工具栏按钮。当然,插入的位置是Eclipse预先保留给其他Plug-in的。点击“Next“。

我们定义的Action需要告诉Eclipse菜单项的显示文字,Tooltip文字,图标,一个符合要求(实现接口)的Action类,以及快捷键等等。详细的内容我们等一会儿会看到。这里模版只要求提供如下几项:

  • Java Package Name:输入“eclipse.tutorial.day1.actions”作为Action类的Java包名
  • Action Class Name:输入Action的类名为SampleAction
  • Message Box Text:这个模版演示的Action会打开一个对话框,并显示这里输入的文字。我们用缺省的“Hello, Eclipse world”。

点击”Finish“。

这样,一个Plug-in项目就建好了。项目里的绝大部分文件都可以在左侧的Package View里找到,但是”.project“和”.classpath“这两个文件除外。(不过你仍然可以通过Navigation View找到它们,一般情况我们不需要这样做)。项目包含三个文件。

  • src: 存放Java源文件
  • icons: 存放Plug-in用到的图像文件
  • META-INF: 只存放MANIFEST.MF文件

Package View右面是Plug-in Editor,通过它,你可以查看或修改Plug-in的任何信息。它的内容来源于两个文件,MANIFEST.MF和plugin.xml。前者提供Plug-in的ID,版本,与其他Plug-in之间的依赖关系等Plug-in的配置信息,后者则定义了当前Plug-in的所有扩展。Plug-in Editor有很多配置子页,大部分都很直观,这里就不多作解释了。

运行一下看看这个Plug-in运行起来怎么样。在Plug-in Editor的Overview子页中,点击“Launch an Eclipse Application”。事实上,我们启动的是加载了Hello World这个Plug-in的Eclipse,Plug-in本身是无法独立运行的,它必须在Eclipse提供的框架中运行,这个框架提供了Plug-in运行所需要的运行时环境。等Eclipse启动起来后,在主菜单栏里找到“Sample Menu”,选择“Sample Action”。

我们会看到下面这个对话框,对话框里显示的“Hello, Eclipse world”就是我们刚才输入的内容。

到目前为止,我们没有编写任何代码,那它到底是怎么工作的呢?下面我们来看一下。首先找到Plug-in Editor的Extensions子页,这个页面列出Plug-in扩展的所有扩展点,也就是Extension Point。这个Plug-in只扩展了扩展点“org.eclipse.ui.actionSets”。它先是定义了一个Action Set,名字是“Sample Action Set”。Action Set允许你把同一类的Action归在一起,便于管理。这个Action Set定义了一个名为“Sample Menu”的菜单。菜单下面的sampleGroup是一个菜单分割线,菜单分割线一方面起了对Action分组的作用,把同一类的Action挂到同一个sampleGroup上,就可以保证它们在菜单显示时处于相邻的位置。另一方面,菜单里会出现一个分割线,把归属于不同菜单分割线的Action隔开,所以它被称为分割线(separator)。

最后我们说一下Sample Action,它有很多东西需要定义:

  • id:每个Action需要有一个标识,命名方式类似于Java包名的命名方式。
  • label:指定出现在菜单上的文字,&符号以及它后面的字母标识Action的快捷键。
  • menubarPath:指定Action在菜单中的位置,“sampleMenu/sampleGroup”表示放在主菜单栏中ID是sampelMenu的菜单里,和ID为sampleGroup的其他Action放在一起。
  • toolbarPath:指定Action在工具栏中的位置,工具栏不象菜单栏是有层次结构的,所以定义起来就比较简单,只要给个组名就可以了。
  • icon:指定图标文件在Plug-in项目中的相对路径。
  • tooltip:显示Tooltip文字。
  • class:指定Action的Java类。把鼠标移到class上,我们能看到Action的Java类必须实现IWorkbenchWindowActionDelegate,或者IWorkbenchWindowPulldownDelegate接口。点击class,就可以打开Java类文件,非常方便。

SampleAction这个类实现了IWorkbenchWindowActionDelegate接口,其中最重要的方法就是run方法,用户选择菜单后,在这个方法会弹出一个对话框。

     /**
     * The action has been activated. The argument of the
     * method represents the \'real\' action sitting
     * in the workbench UI.
     * @see IWorkbenchWindowActionDelegate#run
     */

     public void run(IAction action) {
        MessageDialog.openInformation(
            window.getShell(),
            \ "Day1\",
            \ "Hello, Eclipse world\");
    }

到此为止,我们可以看到,Hello World Plug-in通过扩展“org.eclipse.ui.actionSet”这个扩展点,定义了一个Action,包括它的菜单名,图标,在菜单栏和工具栏中的位置,以及Java类SampleAction, SampleAction根据“org.eclipse.ui.actionSet”扩展点的要求,实现IWorkbenchWindowActionDelegate接口,在run方法里完成动作,弹出对话框。

非常的简单,不是吗?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值