Eclipse中三个最吸引人的地方是:

第一是它创新性的图形API,就是SWT/JFace.

第二是它的插件机制.

第三个是利用它的插件机制开发众多功能强大的插件.

插件成就了Eclipse的今天.Eclipse的内核很小,其他功能都是基于这个内核上的插件.

如Eclipse中自代的JUnit,Ant等.如果微软愿意他可以把Office软件做成Eclipse的插件.

如果Adobe有兴趣,Photoshop也可以有for Eclipse的插件版.

Eclipse中的绘图API---Draw2D的功能也是很强的.

那么把软件写成Eclipse插件有什么好处呢?对于用户来说Eclipse的使用环境比较友好,

前面的SWT/JFace中还是比较基本的界面元素.像Eclipse中的视图,编辑窗,停泊窗这些界面如果用Application的方式会很麻烦.但是用

Eclipse插件的最大优点就是界面友好,风格统一,特别是对熟悉Eclipse操作的用户.这种优势更加明显.

当然将软件写成插件的形式也有一定的缺陷.首先必须依附于Eclipse运行.如果要安装插件就得先安装Eclipse.其次,插件和Eclipse融合在一起,原来Eclipse的一些菜单和工具栏是无法屏蔽的.

插件的Hello World(第一个插件程序)步骤:

最后运行结果图:

界面的左边视图中多了一个名为myplugin的项目.项目中有两个文件:MypluginPlugin.java,SampleAction.java

可能是书中的Eclipse版本和我的不一样,.我的在本地生成java文件,第一个文件的名字是Activator.java

>>>>>后来了解追加.>>>>>>>>

因为我看的书是第一版的,第一版作者写书的时候是在2004年,之后在07年又对这一版进行了更新所以上面不一样的主要原因就是因为Eclipse的版本不一致的问题.

Activator.java就是Eclipse老版本的***Plugin.java,后来Eclipse插件机制用OSGi规范重新实现之后,将其更名为Activator.java.

此文件比较重要,它使用的是单例模式.它管理着插件的生命周期.并提供了插件启动和停止的方法.

代码如下:

Activator.java

 /**
* The activator class controls the plug-in life cycle
*/
public class Activator extends AbstractUIPlugin {
// The plug-in ID
public static final String PLUGIN_ID = "myplugin"; //$NON-NLS-1$
// The shared instance
private static Activator plugin;
/**
* The constructor
*/
public Activator() {
}
public void start(BundleContext context) throws Exception {
super.start(context);
plugin = this;
}
public void stop(BundleContext context) throws Exception {
plugin = null;
super.stop(context);
}
/**
* Returns the shared instance
*/
public static Activator getDefault() {
return plugin;
}
/**
* Returns an image descriptor for the image file at the given
* plug-in relative path
*/
public static ImageDescriptor getImageDescriptor(String path) {
return imageDescriptorFromPlugin(PLUGIN_ID, path);
}
}

Activator.java 比较重要,今后将会使用到它,而SampleAction.java则是一个类似JFace中的Action,可以把它看做是插件中的Action.

运行时将看到SampleAction.java的效果.

SampleAction.java是IWorkbenchWindowActionDelegate接口的实现类,它类似于JFace中的Action.新打开Eclipse环境里新增的工具栏按钮和主菜单项都是由它实现.当然还要把它在plugin.xml中注册一下才发挥作用.

SampleAction.java

 public class SampleAction implements IWorkbenchWindowActionDelegate {
private IWorkbenchWindow window; public SampleAction() {
} /**
* 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(),
"Myplugin",
"Hello, Eclipse world");
} public void selectionChanged(IAction action, ISelection selection) {
} public void dispose() {
} public void init(IWorkbenchWindow window) {
this.window = window;
}
}

项目根目录下还有一个非常重要的文件是plugin.xml.这个文件是插件的入口.Eclipse是根据这个文件里的设置信息来加载插件的.

在开发插件的初期会频繁的在这个文件中做编辑.术语叫做"设置扩展点".像在Eclipse的增加主菜单,视图,按钮等.都是在这个文件里面设置的不同的扩展点,后面将详细讲到如何编辑此文件.

也许你会问:开发一个系统会有很多的菜单和按钮,是不是都要在plugin.xml文件里设置呢?回答:不必.

在plugin.xml里只设置嵌入到Eclipse框架里的主要扩展点.其他软件只有的菜单和按钮就不用再plugin.xml里面设置了.

下图中所示为Eclipse界面中部显示的就是plugin.xml的编辑窗口,点击该窗口下部的plugin.xml选项.可以直接编辑此文件.

和plug.xml相配合一起对插件做配置的还有MANIFEST.MF和build.properties文件.

运行插件"运行---->运行方式----->运行工作平台"这种是专用于插件的运行方式,运行之后将打开一个新的Eclipse环境,并同时将插件项目编译加载到新Eclipse环境中;今后开发经常要通过这种方法来试运行说开发的插件项目,不过那时候选择"运行---->调试----->运行工作平台"更适合调试.Eclipse支持调试期间的部分热修改.不用每次修改都重新启动一个Eclipse.这样能节省很多调试开发时间.

新开的Eclipse界面如图所示.在新的Eclipse环境中新增加了一个工具栏按钮和一个主菜单项.单击此按钮或者菜单项.

将弹出一个"Hello,Eclispe world"信息提示框.按钮和菜单项都是由SampleAction.java产生的效果.

关于Eclispe插件开发起步(一)的更多相关文章

  1. 制作镜像文件工具packer

    openstack镜像制作要在openstack上创建虚拟机,必然要使用到虚拟机镜像. 对于普通用户,可以使用已经创建好的虚拟机镜像.一般是操作系统官方构建并提供的. 某些用户可以有自己独特的需求,需 ...

  2. JavaScript学习笔记(四)——jQuery插件开发与发布

    jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...

  3. jira的插件开发流程实践

    怎么开头呢,由于自己比较懒,博客一直不怎么弄,以后克己一点,多传点自己遇到的问题和经历上来,供自己以后记忆,也供需要的小伙伴少走点弯路吧 最近公司项目需要竞标一个运维项目,甲方给予了既定的几种比较常用 ...

  4. [NodeJS] Hello World 起步教程

    概述: 做数据,免不了需要展示数据,数据可视化是必须经历的步骤. 本文将提供一个NodeJS的起步教程,是笔者这两天探索的小结. 正文:  1. 为什么使用NodeJS 究竟是以B/S还是C/S的架构 ...

  5. Vue插件开发入门

    相对组件来说,Vue 的插件开发受到的关注要少一点.但是插件的功能是十分强大的,能够完成许多 Vue 框架本身不具备的功能. 大家一般习惯直接调用现成的插件,比如官方推荐的 vue-router.vu ...

  6. 【原创】记一次Project插件开发

    一.开发背景 最近在使用微软的Office Project 2010 进行项目管理,看到排的满满的计划任务,一个个地被执行完毕,还是很有成就感的.其实,不光是在工作中可以使用Project进行项目进度 ...

  7. JavaScript学习总结(四)——jQuery插件开发与发布

    jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...

  8. [Tool] Open Live Writer插件开发

    一 前言 Windows Live Writer(简称 WLW)开源之后变成 Open Live Writer(简称 OLW),原先 WLW 的插件在 OLW 下都不能用了,原因很简单,WLW 插件开 ...

  9. VS插件开发 - 登录身份验证

    [附加] 很多朋友问那个VS背景怎么弄的,我刚刚已经抽时间把制作步骤发出来了: 请参见<VS插件开发 - 个性化VS IDE编辑器,瞬间 高 大 上>. 最近一直在忙着一些事情,一直没有发 ...

随机推荐

  1. 【转】C数据存储(包括const存储在哪,C++不同部分我在文中用红字已指出)

    非原创(文中红字为自己见解,如有不对,请大神指点) 程序由指令和数据组成,C语言程序亦是如此.开发者在编写程序的时候往往需要根据不同数据的特点以及程序需求来选择不同的数据存储方式,那么在C语言中数据的 ...

  2. 8.1.C++ AMP简介

    C++ AMP是专为设计支持C++的异构并行模型. 全程是: Accelerator Massive Parallelism 下面是一个Vector C++ AMP的代码,通过这段代码来解释C++ A ...

  3. 使用GitHub进行团队协作

    当进行团队协作完成一个项目时,GitHub是个不错的选择.下面是记录我和朋友做项目的时候协作的方法. 首先下载Github for windows 客户端,http://windows.github. ...

  4. 【解决】国内访问github过慢

    github在国内慢的有点不能忍了,受不了了google了一下有什么方法没,还真找到一些方法. 死马当活马医,操作完之后确实速度上快了一些,但是毕竟国情所限,仍然做不到“秒开”. 主要是参考两篇博客: ...

  5. 有关按位DP

    这是一道正式比赛的题目 数据范围是 10^999 ~ 10^1000 的两个整数以及一个k我记得好像是不超过100,计算两个数中间有多少个每一位相乘最后和k取摸等于0的数.这道题对于不会按位dp的人是 ...

  6. leetcode@ [54/59] Spiral Matrix & Spiral Matrix II

    https://leetcode.com/problems/spiral-matrix/ Given a matrix of m x n elements (m rows, n columns), r ...

  7. CentOS下的防火墙关闭

    关闭防火墙 1.查看防火墙状态 service iptables status 2.关闭,但开机后又会打开 service iptables stop 3.查看防火墙开机启动状态 chkconfig ...

  8. RegExp.exec

    来自:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/exec Summ ...

  9. 笔记-动画篇-layout动画初体验

    约束动画的文章要比预计的迟迟来临,最大的原因是没有找到我认为的足够好的动画来讲解约束动画 —— 当然了,这并不是因为约束动画太难.相反,因为约束动画实在太简单了,反而没有足够多的简单动画素材让我选用. ...

  10. 重看Decorator Pattern,联想到Delegate传递及Flags Enum--欢迎拍砖!

    话说装饰模式(Decorator)的动机是“动态地给一个对象添加一些额外的职责.就增加功能来说,Decorator模式相比生成子类更为灵活.[GOF <设计模式>]”.再次学到该模式,有感 ...