zoukankan      html  css  js  c++  java
  • 关于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产生的效果.

     

  • 相关阅读:
    Fibonacci Numbers
    Fibonacci(...刷的前几道题没有记博客的习惯,吃了大亏)
    Fibonacci Check-up
    Pendant
    奥运
    Tr A
    A Simple Game
    Be the Winner
    John
    Being a Good Boy in Spring Festival(尼姆博弈)
  • 原文地址:https://www.cnblogs.com/DreamDrive/p/4172025.html
Copyright © 2011-2022 走看看