关于Eclispe插件开发起步(一)

简介:

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

复制代码
 1 /**
 2  * The activator class controls the plug-in life cycle
 3  */
 4 public class Activator extends AbstractUIPlugin {
 5     // The plug-in ID
 6     public static final String PLUGIN_ID = "myplugin"; //$NON-NLS-1$
 7     // The shared instance
 8     private static Activator plugin;
 9     /**
10      * The constructor
11      */
12     public Activator() {
13     }
14     public void start(BundleContext context) throws Exception {
15         super.start(context);
16         plugin = this;
17     }
18     public void stop(BundleContext context) throws Exception {
19         plugin = null;
20         super.stop(context);
21     }
22     /**
23      * Returns the shared instance
24      */
25     public static Activator getDefault() {
26         return plugin;
27     }
28     /**
29      * Returns an image descriptor for the image file at the given
30      * plug-in relative path
31      */
32     public static ImageDescriptor getImageDescriptor(String path) {
33         return imageDescriptorFromPlugin(PLUGIN_ID, path);
34     }
35 }
复制代码

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

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

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

SampleAction.java

复制代码
 1 public class SampleAction implements IWorkbenchWindowActionDelegate {
 2     private IWorkbenchWindow window;
 3 
 4     public SampleAction() {
 5     }
 6 
 7     /**
 8      * The action has been activated. The argument of the
 9      * method represents the 'real' action sitting
10      * in the workbench UI.
11      * @see IWorkbenchWindowActionDelegate#run
12      */
13     public void run(IAction action) {
14         MessageDialog.openInformation(
15             window.getShell(),
16             "Myplugin",
17             "Hello, Eclipse world");
18     }
19 
20     public void selectionChanged(IAction action, ISelection selection) {
21     }
22 
23     public void dispose() {
24     }
25 
26     public void init(IWorkbenchWindow window) {
27         this.window = window;
28     }
29 }
复制代码

项目根目录下还有一个非常重要的文件是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产生的效果.

 


本文转自SummerChill博客园博客,原文链接:http://www.cnblogs.com/DreamDrive/p/4172025.html,如需转载请自行联系原作者

相关文章
|
6月前
|
JSON 开发工具 git
工作五年多,idea插件推荐(一)
工作五年多,idea插件推荐(一)
|
8月前
|
SQL XML 搜索推荐
推荐IDEA中在实际工作开发中超好用的几款插件
推荐IDEA中在实际工作开发中超好用的几款插件
310 0
|
10月前
|
SQL 搜索推荐 Java
值得推荐的Idea几大优秀插件
1、Stackoverflow 这个插件其实是最实用的插件,程序猿遇到的问题,基本都能找到回答,但是它使用的是google搜索引擎,对于,不购买vpn的同学来说,感觉好鸡肋呀~ 选中需要搜索的问题,然后,右键点击
|
10月前
|
人工智能 IDE Java
谈一谈|几款实用的IDEA插件
谈一谈|几款实用的IDEA插件
401 0
|
IDE 开发工具 Android开发
搭建Eclipse 2020安卓开发环境
搭建Eclipse 2020安卓开发环境
61 0
搭建Eclipse 2020安卓开发环境
|
存储 IDE Java
【NetBeans】在Maven项目开发过程中对于NetBeans的合理运用以及自动化部署的方案详解
【NetBeans】在Maven项目开发过程中对于NetBeans的合理运用以及自动化部署的方案详解
171 0
|
Android开发
【安卓开发】AndroidStudio添加依赖
【安卓开发】AndroidStudio添加依赖
69 0
【安卓开发】AndroidStudio添加依赖
|
Ubuntu Java Apache
Maven官宣:干掉Maven和Gradle!推出更强更快更牛逼的新一代构建工具,炸裂!
相信作为Java开发者的你早已经受够了maven的编译缓慢,但是又由于历史包袱、使用习惯等问题暂时切换不了其他更快的构建工具,这里笔者将给你介绍一款更快的maven——maven-mvnd。
Maven官宣:干掉Maven和Gradle!推出更强更快更牛逼的新一代构建工具,炸裂!
|
IDE 前端开发 Java
从 0 编写自己的第一款 IDEA 插件!
从 0 编写自己的第一款 IDEA 插件!
131 0
从 0 编写自己的第一款 IDEA 插件!
|
Java Maven Android开发
Eclipse导入Maven项目,实在算得上是历经千辛万苦(2)
Eclipse导入Maven项目,实在算得上是历经千辛万苦
93 0
Eclipse导入Maven项目,实在算得上是历经千辛万苦(2)