zoukankan      html  css  js  c++  java
  • 【eclipse插件开发实战】Eclipse插件开发4——插件JDE、PDE开发方式及plugin.xml配置文件结构

    Eclipse插件开发4——插件JDE、PDE开发方式及plugin.xml配置文件结构


            开发方式分为:java开发环境JDE开发插件的方式和插件开发环境PDE开发插件方式。

            插件通过添加到预定义的扩展点来向平台添加功能。要将程序代码变成插件,需要:

    1. 决定插件如何与平台集成

    2. 标识需要进行添加的扩展点以便与开发者的插件进行集成

    3. 根据扩展点的规范来实现这些扩展

    4. 提供清单文件plugin.xml,它描述开发者正在提供的扩展以及代码的封装

    5. 测试插件

    6. 对插件进行封装

            插件开发实例:我们将介绍使用Java开发环境JDT开发插件,并在下一篇文章中介绍如何直接使用插件开发环境PDE开发插件。下面我们以“HelloWorld”为例,作为插件实现,说明如何创建平台插件,其步骤如下:

    一、JDT开发插件

    1. 使用菜单栏选择“文件”->“新建”->“项目”,打开“新建项目”向导。

    2. 使用向导并以默认方式创建一个Java项目,项目名取为HelloWorld。

    3. 使用菜单栏选择“文件”->“新建”->“文件”,打开“新建文件”向导。

    4. 以默认方式新建一个Java文件,文件名取为HelloWorld.java。

    5. 点击“完成”,创建该文件,并在文件中输入下列代码:

    import org.eclipse.swt.widgets.Composite;
    import org.eclipse.swt.widgets.Label;
    import org.eclipse.swt.SWT;
    import org.eclipse.ui.part.ViewPart;
    public class HelloWorld extends ViewPart {
        Label label;
        public HelloWorld() {
         }
       public void createPartControl (Composite parent) {
                  label = new Label(parent,SWT.WRAP);
                  label.setText (“Hello, World!”);
        }
       public void setFocus() {
        }
    }

    6. 在包资源管理器窗格中,鼠标右击本项目,从上下文菜单中选择“属性”,指定项目的类路径,编辑配置程序的编译环境。

    7. 在”属性”窗口的左面窗格选择“Java构建路径”,然后在右面的窗格中选择“库”选项卡。

    8. 在“库”选项卡下,点击“添加外部JAR”按钮,添加Eclipse安装目录下的下列三个JAR文件:

    pluginsorg.eclipse.core.runtime_2.1.1 untime.jar

    pluginsorg.eclipse.swt.win32_2.1.0wswin32swt.jar

    pluginsorg.eclipse.ui.workbench_2.1.0workbench.jar

    注意,随着Eclipse的版本不同,以上文件的路径名可能会有所不同。

    9. 使用“新建文件”向导,以默认方式创建一个XML项目,文件名必须为plugin.xml。

    10. 点击“完成”,创建该文件,并在文件中输入下列代码:

    <?xml version="1.0"encoding="UTF-8"?>
    <plugin
       id="edu.bupt.plugin"
      name="HelloWorld"
      version="1.0" >
      <runtime>
         <library name="HelloWorld.jar"/>
      </runtime>
      <requires>
         <import plugin="org.eclipse.ui"/>
      </requires>
      <extension     
            point="org.eclipse.ui.views">
         <category
               name="HelloWorld"
               id="edu.bupt.plugin.category1">
         </category>
         <view
               name="HelloWorld1"
               category="edu.bupt.plugin.category1"
               class="edu.bupt.plugin.HelloWorld"
               id="edu.bupt.plugin.view1">
         </view>
      </extension>
    </plugin>

    注:plugin.xml文件代码的含义:

    plugin.xml中一共有四个主要的标签:pluginrequiresruntimeextension

    (1) plugin标签:其中plugin标签的属性提供的是我们要开发的插件的基本信息,除了nameversionprovider-name等,最重要的是id,它要求不能和现有的Eclipse插件标识符有冲突,因此本例中用包名作为插件的标识符。

    (2) requires标签requires标签中所列出的是需要的插件,需要用到Eclipse工作台和SWT API,因此导入了org.eclipse.ui插件。

    (3) runtime标签runtime标签指明的是开发的插件所在JAR包的文件名。

    (4) extension标签extension标签是插件扩展点的信息。

    org.eclipse.ui.viewsEclipse系统提供的观察窗口扩展点。

    本例是一个观察窗口,这表明将在 org.eclipse.ui.views扩展点上进一步开发。

    extension中还包括categoryview两个标签,要注意的是categoryview标签的标识符的唯一性,并且在view的属性中声明了Welcome插件的类名。

    11. 选择Eclipse菜单栏“文件”->“导出”命令,将HelloWorld项目以JAR文件形式导出到Eclipse安装目录的plugin子目录下的某一目录中,同时将plugin.xml导出到该目录中。

    12. 关闭并重新启动Eclipse。Eclipse启动时,将会搜索所有在插件路径下的插件并注册它们。

    13. 在菜单栏中选择“窗口”->“显示视图”->“其它”,打开“显示视图”窗口。

    14. “显示视图”窗口中,显示了在plugin.xml中extension的category标签中声明的name属性:HelloWorld,在HelloWorld结点中包含了view(“视图”)标签的name属性:HelloWorld1。

    15. 选中HelloWorld1,并点击“确定”按钮,Eclipse中将出现HelloWorld1窗口。


    二、PDE开发插件

    下面将介绍直接使用插件开发环境开发插件的实例。

    为何需要使用插件开发环境?首先,在Eclipse中使用常用的Java开发环境就可完成插件的开发,但在插件开发过程中的每次测试都要将代码打包、发布,然后再重新启动Eclipse系统;其次,为了进一步便于进行插件开发,Eclipse提供了进行插件开发的“插件开发环境(PDE)”;最后,PDE本身也是插件。

      PDE的作用:第一,插件开发环境是一个工具,提供用来自动创建、处理、调试和部署插件的专门工具,使开发插件和扩展更方便、有效。第二,在平台工作台中工作时,PDE可以用来帮助开发者开发平台插件。第三,PDE 提供了一组平台扩展添加项(视图、编辑器和透视图等),它们共同努力使得在工作台内开发插件的进程更为顺利。

      PDE和平台的集成:与一般平台原理一样,PDE 不是单独启动的工具。PDE 是作为包含在 SDK 中的一组插件来安装的。安装 PDE 时,工作台看起来是一样的,但是用户将看到工作台提供了新的透视图、向导、编辑器和视图。PDE 与平台溶合在一起,并且通过新透视图来提供其功能。PDE 是基于平台和Java 开发工具的。

    之前介绍了插件开发的一些理论的东西,现在搭建一个eclipse插件工程,然后看下插件工程的结构。


    第一步,新建一个插件工程,选择“插件项目”:



    第二步,项目名这里为Time,注意对应eclipse版本,这里选择3.7版本



    第三步,这里是基于RCP的开发,尤其注意需要选择“是”,创建富客户机应用程序。



    第四步,这里有很多模板可供选择,每种模板都会有不同的插件支持,最基本的是org.eclipse.core.runtime.applications和org.eclipse.ui,这里选择这两个就够了,最简单的HelloRCP模板就只支持这两个,这里创建一个HelloRCP模板足矣。


    第五步,把应用程序窗口标题改为“TimeAlamer”,点击“完成”。



    第六步,下面可以看到创建好的插件项目工程,主要的目录结构如下:


    首先说明几个重要文件:

    1.MANIFEST.MF

    OSGI 的 manifest 文件,用来描述插件的依赖关系build环境等。打开MAINFEST.MF文件,如下图所示。

    首先,在“概述”选项卡里标识了插件工程的基本信息,这里可以修改版本号等。

    第二,在“调试”栏里可以修改调试方式。


    2.Plugin.xml

    在plugin.xml选项卡里可以看到,eclipse的配置文件,描述插件扩展点等,这个在之前已经讲过了,这里给出之前利用向导创建的Time插件工程的plugin.xml结构。其中<class>属性指定了处理事件的类(例如TimeHandler.java,这个是需要自行添加的事件处理类)。

    <?xml version="1.0" encoding="UTF-8"?>
    <?eclipse version="3.4"?>
    <plugin>
       <extension
             id="application"
             point="org.eclipse.core.runtime.applications">
          <application>
             <run
                   class="timer.Application">
             </run>
          </application>
       </extension>
       <extension
             point="org.eclipse.ui.perspectives">
          <perspective
                name="RCP Perspective"
                class="timer.Perspective"
                id="Timer.perspective">
          </perspective>
       </extension>
       <extension
             point="org.eclipse.ui.commands">
          <command
                defaultHandler="timer.TimeHandler"
                id="rcpproject.commands.Time"
                name="Time">
          </command>
       </extension>
       <extension
             point="org.eclipse.ui.menus">
          <menuContribution
                allPopups="false"
                locationURI="toolbar:org.eclipse.ui.main.toolbar">
             <toolbar
                   id="SayTime">
                <command
                      commandId="rcpproject.commands.Time"
                      icon="icons/time.PNG"
                      style="push"
                      tooltip="StartAlarm">
                </command>
             </toolbar>
          </menuContribution>
       </extension>
       <extension
             point="org.eclipse.ui.menus">
          <menuContribution
                allPopups="false"
                locationURI="menu:org.eclipse.ui.main.menu">
             <menu
                   id="timeMenu"
                   label="Alarmer">
                <command
                      commandId="rcpproject.commands.Time"
                      icon="icons/time.PNG"
                      label="Time"
                      style="push"
                      tooltip="StartAlarm">
                </command>
             </menu>
          </menuContribution>
       </extension>
    
    </plugin>
    

    PDE 插件提供了上述这两个文件的图形化编辑器。


    3.各个java类说明

    在Time工程里主要有这么几个类:

    Activator.java ------对插件的生命周期进行管理,被称为插件类;

    Application.java

    ApplicationActionBarAdvisor.java

    ApplicationWorkbenchAdvisor.java---------工作台类;

    Perspective.java

    TimeHandler.java ------自定义的事件处理类;

    在下一篇文章中,将详细介绍利用PDE来开发一个插件工程Time。



  • 相关阅读:
    SVN上新增一个项目和用户
    Linux增加swap分区的方法
    FPGA研发之道(25)-管脚
    altera tcl
    信号处理的好书Digital Signal Processing
    每天逛一次官方论坛
    GTS、GCK,GSR全称
    altera tcl
    FPGA组成、工作原理和开发流程
    复杂可编程逻辑器件CPLD的基本结构
  • 原文地址:https://www.cnblogs.com/DianaCody/p/5425682.html
Copyright © 2011-2022 走看看