创建第一个Eclipse插件项目

2016-05-24  本文已影响1514人  Ggx的代码之旅

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


很熟悉的界面吧!

  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个页面都是可视化操作页面,后三个页面是特定的文本编辑器。

/**
  * 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了。

![](https://img.haomeiwen.com/i2053660/a889347ce26badcb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
点击OK 我们将看到我们第一个试图插件诞生了

![Samlpe View 视图插件](https://img.haomeiwen.com/i2053660/34edc22184c4a7dd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
随便点点看看有什么效果吧!

下一章我们讲解SampleView中都做了什么
上一篇 下一篇

猜你喜欢

热点阅读