`
eclipsesbs
  • 浏览: 20357 次
社区版块
存档分类
最新评论

第一天:第一个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方法里完成动作,弹出对话框。

非常的简单,不是吗? 

分享到:
评论
1 楼 unique.wu 2014-05-04  
太无聊了,这么古老的东西可以删除了。。。不然只会误人子弟。
通过org.eclipse.ui.actionSets 设置扩展点已经过时了,并且制作出的插件在最新eclipse里已经不能运行了。

相关推荐

    RCP+Plug-in开发自学教程_RCP+Plug-in开发自学教程_源码

    3. **Extension Points**:提供一种方式让一个Plug-in向其他Plug-in公开其服务或功能,其他Plug-in可以通过实现这些Extension Points来扩展应用功能。 4. **Extensions**:一个Plug-in可以注册到另一个Plug-in提供的...

    Jenkins插件:Post-Build Script Plug-in

    Post-Build Script Plug-in是其中的一个重要插件,它允许用户在构建过程完成后执行自定义脚本,以此来实现一系列自动化任务,比如发送通知、清理工作空间、执行质量检查等。这个插件的稳定版本确保了在执行这些关键...

    SAE J2931_4:2014 Broadband PLC Communication for Plug-in Electric Vehicles - 完整英文电子版(78页).pdf

    本文档的目标是提供一个通用的标准,用于实现plug-in电动汽车的宽带电力线通信,以便于提高电动汽车的充电效率和安全性。 在该标准中,SAE还提供了一个关于宽带电力线通信的rationale,解释了该标准的制定理由和...

    jenkins的Dynamic Parameter Plug-in 插件

    当第一个参数改变时,第二个参数的选项会自动更新。 4. **安全性考虑** - **脚本执行风险**:动态参数涉及脚本执行,可能存在安全风险。务必限制可执行脚本的权限,避免注入攻击。 - **漏洞修复**:由于存在漏洞...

    NACL Web Plug-in 大华车牌识别chrome插件

    NACL Web Plug-in 大华车牌识别chrome插件 crx文件 一个被美国列为限制采购的企业 把最常用的组件发到美国,且在知道国内无法访问的情况下。

    Dynamic Parameter plug-in Jenkins plug-in

    "Dynamic Parameter plug-in"是 Jenkins 插件家族中的一个重要成员,它为构建过程提供了更灵活的参数化构建功能。由于某种原因,这个插件在官方仓库可能无法直接搜索到,但它的价值在于能够帮助开发者自定义构建过程...

    Fat Jar Eclipse Plug-In教程.

    **Fat Jar Eclipse Plug-In** 是一个非常实用的Eclipse插件,它能够帮助开发者将Java项目打包成一个包含所有依赖的可执行JAR文件,即所谓的“fat jar”或“uber jar”。这种方式非常适合那些需要在不同环境中部署的...

    AEM Chrome Plug-in-0.8.0.zip

    名称:AEM Chrome Plug-in -------------------- 版本:0.8.0 作者:https://adobe-consulting-service 分类:开发者工具 -------------------- 概述:用于 AEM 开发的 Devtools 面板。包括浏览器内的 Log Tracer 和...

    Google Chrome Plug-in 插件

    1:Adblock for Youtube™ 2:Adblock Plus 3:Adobe Acrobat 4:Click&Clean 5:Context Menu Search 6:Gestures for Chrome 7:Google Translate 8:IDM Integration Module 9:IE Tab 10:LastPass Free ...

    CarPlay Communication Plug-in R14G17.2.zip

    CarPlay Communication Plug-in R14G17.2 是苹果公司为开发者提供的一个核心组件,用于构建与CarPlay系统交互的应用程序。这个插件是官方发布的,确保了开发者能够遵循苹果的安全标准和用户体验规范,为iOS设备用户...

    Eclipse RCP Plug-in开发自学教程(Eclipse3.6)

    2. **创建第一个RCP程序** - **创建一个RCP程序**:指导读者创建基本的RCP项目,包括设置项目结构和编写启动类。 - **启动RCP程序**:介绍如何运行RCP程序,并理解程序启动过程。 - **程序VS产品**:区分程序与...

    SAE J2931_4:2014 Broadband PLC Communication for Plug-in Electri

    SAE J2931_4:2014 Broadband PLC Communication for Plug-in Electri

    Adobe Flash Builder 4.7 Plug-in Utility.exe

    Adobe Flash Builder 4.7 Plug-in Utility.exe

    CarPlay Communication Plug-in R14G17_carplay_Carplayplugin

    CarPlay Communication Plug-in R14G17_carplay_Carplayplugin是一款专为苹果CarPlay系统设计的通信插件,其主要功能是增强车辆与iPhone之间的连接性和交互性。这款插件是苹果公司针对车载信息系统的一项重要更新,...

    Eclipse Plug-in 开发参考

    以开发一个简单的视图为例,我们将创建一个名为`HelloWorldView`的视图,该视图将在屏幕上显示一条问候消息。 1. **定义视图类**: - `HelloWorldView` 类继承自 `ViewPart` 类。 - 在构造函数中初始化视图的组件...

    Dynamic Parameter Plug-in

    动态参数插件(Dynamic Parameter Plug-in)是Jenkins持续集成工具中的一个重要扩展,它为构建过程提供了更加灵活的参数化选项。在 Jenkins 中,参数化构建允许用户在触发构建时输入特定值,这些值可以影响构建的过程...

    Motion LIVE Plug-in 1.02.1203.1.rar

    Motion LIVE Plug-in 1.02.1203.1 是一款专为增强动态图形设计体验而开发的插件,适用于那些希望在实时环境中创作、编辑和展示动态视觉效果的专业人士。这款插件可能与视频编辑软件或三维动画软件如Adobe After ...

    SAE J2954-2020 Wireless Power Transfer for Light-Duty Plug-in_Electric Vehicles and Alignment Methodology - 完整英文版(194页).pdf

    SAE J2954-2020 Wireless Power Transfer for Light-Duty Plug-in_Electric Vehicles and Alignment Methodology - 完整英文版(194页).pdf

    Google Chrome plug-in 2018-10

    或者OneTab,将多个标签页整合到一个标签中,节省浏览器资源。 4. **开发工具插件**:如Chrome DevTools,是内置的开发者工具,对于前端开发者而言必不可少,用于调试代码、检查元素、性能分析等。 5. **阅读增强...

    SAE J2931_1:2014 Digital Communications for Plug-in Electric Veh

    总之,《SAE J2931_1:2014 Digital Communications for Plug-in Electric Vehicles》是一个关键的技术规范,它为电动汽车和充电设施的数字化交互提供了坚实的框架,推动了整个行业的标准化进程,促进了电动汽车的...

Global site tag (gtag.js) - Google Analytics