创建第一个Eclipse插件项目

最近一时兴起,突然想搞一款自己的编辑器,可以实现一些比较复杂的内容,奈何技术不过关啊!不过既然对java比较熟悉,那么还是从java做起吧,慢慢来总有一天会发现新大陆的。经过老大的指点发现eclipse插件是个不错的入门开始,正好我也有这方面的兴趣于是乎就入坑了,这方面的东西在国内用的比较少,在此记录下自己的学习经历。
每当学习一个新的东西时候总会有一个熟悉的东西,那就是Hello World,这真是一个好的开始,通常一个Hello World能让你很快的对某样技术有一个初步的了解好了装了不少逼了可以开始正文了。

  • 基础设施
    1.Eclipse4.4.1
    2.JDK8
    3.参考书籍《Eclipse插件开发学习笔记》
    PS:这本书比较旧了,网上也很难再搜到 不过依然不影响我们学习,只不过书中有些内容 与现阶段有点不服而已。所以我在此记录了我的学习过程。

  • Hello World
    打开Eclipse,既然是制作插件项目,那么肯定就是要创建插件工程了。
    选择File--->New--->Other--->Plug-in Development--->Plug-in Project--->Next;
    这是会看到如图界面:


很熟悉的界面吧!

  1. 输入您的工程名这里是HelloWorldPlugin
  2. 勾选Create a Java project
  3. 默认选择插件运行目标平台默认选择Eclipse version 3.5或更高

然后点击下一步,你将看到:

  1. Properties
    1.1 ID插件的标识符,Eclipse将通过此标识符来识别插件
    1.2 Version ,Name和Vendor插件的版本号和名字以及供应商
    1.3 Execution Enviroment 插件的执行环境这里是JRE8

2.Options
默认勾选Generate an activator,这是一个java类用来控制插件生命周期的,这里是把它给勾选上,当然你也可以编辑它的类名。
第二个勾选项也要默认勾上。无需多问

3.Rich Client Application
这是一个富客户端应用这里暂时也不用管,因为我们不需要,所以选上no就好。

然后进入下一步那里提供了一些可用的模板来帮助你快速构建插件应用:

不要看到里面的Hello World就下手 我们不选则这个,不要问为什么因为我也是新手我们得跟着教程一步一步来。这里我们选择Plug-in with a view这个模板,然后接着点击下一步:


上面看到的这个向导界面,描述了我们选择的这个视图模板的一些基本信息。有包名,试图类名,视图名,视图类别Id,视图类别名称以及 让你选择该视图是一个list还是tree view这应该很容易理解吧。如果选择了Table viewer那么出来的视图内容就是一个简单的列表结构,如果是tree viewer那么出来的内容就是一个树形结构。剩下的3个复选框 默认都是勾选的 这里也勾选上,不需要做多大的改动,看它的说明就很容易就明白了。接着我们点击Finish之后,至此一个简单的插件工程模板就创建好了。


我们可以在这个工程结构中看到我们刚刚创建的2个类,一个是SampleView另一个就是Activator类,以及icons目录,这里面存放着这个插件所需要的所有图标。META-INF目录下存放的就是该插件的清单文件,这个文件很重要,在后面的开发中我们会经常接触。现在我们打开这个清单

Eclipse会为我们打开一个PDE,PDE提供了一个基于表单的多页插件清单编辑器,上图中我们看到,该清单编辑器包括9个页面,前6个页面都是可视化操作页面,后三个页面是特定的文本编辑器。

  • 概述
    上图中打开的就是概述界面,此界面是快速进入其他页面的通道(多数情况并没什么卵用,看个人习惯了),还提供了该插件的一般信息和执行环境的编辑,我们可以在这里定义和修改插件的基本属性(修改在创建插件工程时对插件做出的默认设定)

  • 依赖性
    这里管理该插件的一些依赖我们可以在这里添加第三方包。


  • 运行时
    这个就不用看了用过eclipse的人都应该知道,不知道的自行思过去。

  • 扩展
    这个文件描述了该插件的扩展口经常操作,具体后面就知道了。

  • 扩展点
    同上

  • 构建

  • MANIFEST.MF
    这里也是暂时了解一下就好,此文件用来提供关于捆绑软件的描述信息,此文件也可以在概述页面和依赖页面进行可视化编辑,编辑内容都会反映到该页面上。


  • plugin.xml
    由于Eclipse体系结构是基于可配置扩展点这一概念,因此插件具有扩展其他插件和发布扩展点的能力。此文件就是用来记录插件的扩展点和扩展的,在刚刚创建的这个应用这暂时还没有扩展点,仅有一个对Eclipse试图的扩展,打开此文件我们可以进行手动编辑,这个文件的内容也会反映在上面的扩展页面上,所以不管是在扩展页面进行可视化操作还是在这里进行手动编辑都是一样的,最终都会改变改页面的内容。


  • build.properties
    这个文件记录了需要构建的元素列表,即使不明白,简单看看内容就知道 它描述了该插件的需要的东西。我们可以发现之前说过的熟悉的东西。不过此文件在最终是不会存在在构建好的插件中。


  • 插件类
    还记得前面在创建工程的时候勾选的创建activator类么,我们可以简单理解为这是一个插件类,准确点说这是一个媒介类,打开该类的文件我们可以看到Eclipse自动帮我们生成的内容:

/**
  * The activator class controls the plug-in life cycle
  */
public class Activator extends AbstractUIPlugin {

    // The plug-in ID
    public static final String PLUGIN_ID = "HelloWorldPlugin"; //$NON-NLS-1$

    // The shared instance
    private static Activator plugin;
    
    /**
     * The constructor
     */
    public Activator() {
    }

    /*启动插件是调用该方法
     * (non-Javadoc)
     * @see org.eclipse.ui.plugin.AbstractUIPlugin
     * #start(org.osgi.framework.BundleContext)
     */
    public void start(BundleContext context) throws Exception {
        super.start(context);
        plugin = this;
    }

    /*卸载插时调用该方法
     * (non-Javadoc)
     * @see org.eclipse.ui.plugin.AbstractUIPlugin
     * #stop(org.osgi.framework.BundleContext)
     */
    public void stop(BundleContext context) throws Exception {
        plugin = null;
        super.stop(context);
    }

    /**
     * Returns the shared instance
     *
     * @return the shared instance
     */
    public static Activator getDefault() {
        return plugin;
    }

    /**
     * Returns an image descriptor for the image file at the given
     * plug-in relative path
     *
     * @param path the path
     * @return the image descriptor
     */
    public static ImageDescriptor getImageDescriptor(String path) {
        return imageDescriptorFromPlugin(PLUGIN_ID, path);
    }
}```
此类很简单,注释还是写的很详细的,不过目前还不理解为何它提供了我们一个静态的获得默认对象的方法还把构造器的修饰符做为public哈哈。不过这并不影响使用目前来说此类一般不会手动去new它。
`getImageDescriptor(String path)`方法是用来获取插件中图像的标识符。根据此方法可以使用图像资源,如果去该插件中icons目录下的sample.gif图标,可以这样用:
`AbstractUIPlugin.getImageDescriptor("icons/sample.gif").createImage();`
* **运行插件**
1.鼠标右击项目选择Run as--->Java Application
2.鼠标右击项目选择Run as--->Eclipse Application

按照上面的两个步骤之后会打开一个新的Eclipse的实例,这时 我们在Window--->show view--->Other--->就可以找到我们的Hello World项目,不过目录名字并不叫做Hello World而是叫做Sample Category,点击展开就可以看到我们的Sample View了。

![](http://upload-images.jianshu.io/upload_images/2053660-a889347ce26badcb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
点击OK 我们将看到我们第一个试图插件诞生了

![Samlpe View 视图插件](http://upload-images.jianshu.io/upload_images/2053660-34edc22184c4a7dd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
随便点点看看有什么效果吧!

下一章我们讲解SampleView中都做了什么
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容