Eclipse插件开发初遇

1、涨姿式java

   在介绍Eclipse插件开发以前先介绍一点有趣的小知识,刚刚开始的时候知道EclipseJava写的我很惊讶,我比较奇怪为何Eclipse使用Java写出来的界面那么精致,而我本身写的Java窗体程序简直没有办法见人。git

   说来真的很是惭愧,知道今天我才知道Eclipse不是使用的SunAWTSwing技术,而是本身弄了一个底层图形技术SWTStandard Widgit Toolkit,标准图形工具箱),这里先说一说这3中技术。shell

   首先是AWT,这个是Java中最先弄的一个底层图形技术,由于Java要跨平台,因此AWT是对所用图形系统的支持的图形的一个交集,从名字就能够看出来AWTAbstract Widgit Toolkit,抽象图形工具箱),它是对支持的图形系统的一个抽象,就是提取公有的作成抽象图形工具箱。这样作的缺点也是很明显的嘛?交集嘛,支持的图形组件固然少了,作出来的东西简陋也就理所固然了。架构

      Swing的思想是,基本图形系统都支持手绘(本身写函数画)图形界面。Swing的组件就都是手绘出来的。这样用户须要什么就彻底能够本身手绘就能够了,它的缺点是要本身实现消息处理,性能不是很好。框架

      EclipseSWT技术的思想就是结合了AWTSwing的技术,它是判断若是系统有要使用的图形组件就使用系统提供的,若是没有就使用手绘的方式。eclipse

   偷偷的思考了一下AWT的界面看起来不怎么样应该并不只仅是可用图形少的缘由。对比一下JDeveloperEclipse就知道了,JDeveloper是使用Swing作的,Eclipse是使用SWT作的,一对比感受彻底不在一个档次上啊。ide

   还有一个听的比较多原来一直不清楚具体是个什么鬼的JFace,简单的说JFace就是对SWT进行了封装,至关于一个开发框架避免你们都作不少重复的工做。函数

   使用Eclipse这一套技术及相关的技术来开发基于Java的图形界面应用逼格马上就感受高多了。想xmind就是使用Java基于Eclipse RCP架构的软件。若是感兴趣能够了解一下RCP,EMF,GEF等相关的知识就会发现Eclipse真的很好很强大。工具

2、Eclipse插件小实例性能

   言归正传,咱们仍是来了解一下Eclipse的插件开发的东西,由于开发Eclipse插件涉及的相关知识比较多,因此下面的介绍感受比较朦胧,这里主要的目的是涨一点见识,若是感兴趣能够查阅相关的详细资料。

   首先开发Eclipse插件可使用Eclipse,以下图所示,选择File->New->Plug-in Project

               

图1 新建Eclipse插件项目

   出现以下图所示的对话框,在Project name中输入一个项目名字单击next

              

图2 插件名称肯定

   出现以下图所示的对话框,直接单击next

                

图3 插件相关内容配置

   出现以下图所示的对话框,咱们能够选择HelloWorld Command而后单击finish

            

图4 选择插件模板

   以下图所示是Eclipse为咱们生成的目录和代码。

图5 Eclipse插件项目工程结构图

   这里主要是为了涨姿式,因此不介绍具体的代码了,等下面运行一下程序就知道插件的做用了。不过既然是写Eclipse插件老是要实现一点功能的,咱们就来实现一下记录Eclipse启动时间的功能好了。为了区分咱们仍是先建一个新的包startup,而后新建一个类LaunchTime实现IStartup接口。新的工程结构图以下:

图6 Eclipse插件新的工程结构图

LaunchTime类的代码以下:

import org.eclipse.jface.dialogs.MessageDialog;

import org.eclipse.swt.widgets.Display;

import org.eclipse.swt.widgets.Shell;

import org.eclipse.ui.IStartup;


public class LaunchTime implements IStartup {


     @Override

     public void earlyStartup() {


            //获取当前线程的Display,而且同步执行Runnable接口的run方法

            Display.getDefault().syncExec(new Runnable(){


                   @Override

                   public void run() {

                          //获取eclipse的启动时间

                          long start = Long.parseLong(System.getProperty("eclipse.startTime"));

                          long launchTime = System.currentTimeMillis() - start;

                          String message = "Eclipse launch cost:" + launchTime + "ms";

                          //经过Display得到一个窗口(Shell对象)

                          Shell shell = Display.getDefault().getActiveShell();

                          //使用获得的shell,使用MessageDialog打开一个信息对话框

                          MessageDialog.openInformation(shell, "LaunchTime", message);

                         

                   }

                  

            });

     }


}

   而后以下图所示,选择plugin.xml文件选择Extentions选项,单击Add按钮。

              

图7 添加扩展点

   出现以下图所示的对话框,在Extension Point filter中输入startup,而后选择org.eclipse.startup,而后单击finish

             

图8 添加starup扩展点

   而后入下图所示,仍是选择plugin.xml文件,选择plugin.xml选项,而后像在图中3所示的位置添加<startup class="plugin.startup.LaunchTime" />把咱们写的类配置进去。

 

             

图9 配置咱们的扩展类

   而后入下图所示,依然选择plugin.xml文件,而后选择Overview选项,而后选择途中3所表示位置的Launch或者Launch in Debug

              

图10 插件测试

   以下图所示,是Eclipse启动成功以后咱们的插件的效果:

             

图11 Eclipse启动时间插件测试

   以下图所示,是咱们配置生成的Eclipse插件

             

图12 生成的Hello World插件

   当咱们单击如上图所示的图标的时候,出现以下图所示的效果:

              

图13 生成的Hello World插件测试

 

3、插件的导出与安装

   以下图所示选择File->Export选项,

             

图14 导出插件项目

   出现以下图所示对话框,选择Deployable plug-ins and fragments单击next

            

图15 选择要导出的项目类型

   出现以下图所示的对话框,选择要导出的插件项目,选择目标文件夹,单击finish就能够了。

             

图16 选择要导出插件和导出位置

   在导出的目录下有一个plugins文件夹下面就是导出的插件,把这个插件拷贝到Eclipse目录下的plugins目录下,重启EclipseOK了。

相关文章
相关标签/搜索