博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【插件开发】—— 2 插件入门
阅读量:5745 次
发布时间:2019-06-18

本文共 3850 字,大约阅读时间需要 12 分钟。

  最近由于特殊需要,开始学习插件开发。

以前接触java也算有些时日,但是一直不知道有插件开发这样一种技术路径,本想着这开发工具都给你备好了,直接用不就行了。但是总有些IT工厂,为了要节约成本,开发自己的开发工具,但是又要节省时间,总不能一切都自己来。毕竟开发一个eclipse也要很长时间的。因此,插件开发出现在历史舞台。

  首先要了解插件开发,就得从SWT/JFACE说起了。SWT是一种开源的界面开发框架,以前学java的时候,总是用一些panel,就类似这个。JFace又是一种基于SWT的UI不见的API。Eclipse就是用这个开发出来的,它提供了Eclipse强大的扩展性,因此可以让用户任意的插入自己想要的插件,开发自己的IDE。

  下面就直接弄一个简单的插件吧!

  

首先认识一下Eclipse,这个大家应该很熟了!

  1 红色部分是我们的工具栏

  2 蓝色部分是视图

  3 黄色部分是编辑器

  通常我们使用编辑器,进行代码操作,或者业务操作。在视图,进行一些资源的查看等。红色引入一些常用的功能,辅助我们的操作。

我们先做一个简单的工具栏的控件,了解一下eclipse的插件开发流程!

  1 新建一个插件工程

  2 创建自己的插件名字,这个名字最好特殊一点,一遍融合到eclipse的时候,不会发生冲突。

  首先,写入自己的插件名字。

  source folder 是插件的代码路径。

  output folder是插件输出的目标路径。

  下面是开发插件的eclipse的版本。

  3 下一步,进行插件的具体详情设置

ID 是插件的标识

version 是插件的版本

Name是插件的名字

Provider是开发者的信息

 

下面的Activator,是插件的激活类,用来管理插件的生命周期。

 

最后是选择是否开发RCP,富客户端应用,暂且不用,选否就行了。

  4 使用插件模板,创建一个插件工具

选择hello world.这是一个工具栏的按钮。

 5 下一步,进行按钮的信息设置。

  默认会生成类的名字,路径(包名),以及工具栏按钮出发的消息提示。

  6 点击finish,完成插件的创建。


 

  这样,我们就完成了一个插件的创建,那么看一下,eclipse都为我们生成了什么。

1 导入了插件所需要用到的jar包

2 导入了插件依赖的库

3 源文件

4 插件按钮图片

5 插件的配置信息

  MANIFEST.MF 插件的捆绑信息

Manifest-Version: 1.0Bundle-ManifestVersion: 2Bundle-Name: 我的插件Bundle-SymbolicName: com.test.myplugin; singleton:=trueBundle-Version: 1.0.0.qualifierBundle-Activator: com.test.myplugin.ActivatorBundle-Vendor: xingooRequire-Bundle: org.eclipse.ui, org.eclipse.core.runtimeBundle-ActivationPolicy: lazy

  

  Name 是我们之前设置的插件名字

  SymblicName 是我们插件的包名

  version 是插件的版本

  Activator 是插件的激活类

  Vendor 是插件开发者的信息

  Bundle 是插件以来的库

  这些信息都对应着插件的overview页面的信息。

  

  plugin.xml 插件的详细设置文档,包含插件的扩展点信息,以及插件自己的信息

  

  <plugin>元素清单的主体

  <extension>插件的功能扩展,里面包括 point 扩展点的标识、id 扩展实例的标识、name 提供的用户的名称等等

  build.properties 构建的元素列表

source.. = src/output.. = bin/bin.includes = plugin.xml,\               META-INF/,\               .,\               icons/

  里面包括插件的源文件目录,生成文件目录,还有一些配置信息的引入。

  提供的插件类Activator.java

1 package com.test.myplugin; 2  3 import org.eclipse.jface.resource.ImageDescriptor; 4 import org.eclipse.ui.plugin.AbstractUIPlugin; 5 import org.osgi.framework.BundleContext; 6  7 /** 8  * The activator class controls the plug-in life cycle 9  */10 public class Activator extends AbstractUIPlugin {11 12     // The plug-in ID13     public static final String PLUGIN_ID = "com.test.myplugin";14 15     // The shared instance16     private static Activator plugin;17     18     /**19      * The constructor20      */21     public Activator() {22     }23 24     /*25      * (non-Javadoc)26      * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)27      */28     public void start(BundleContext context) throws Exception {29         super.start(context);30         plugin = this;31     }32 33     /*34      * (non-Javadoc)35      * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)36      */37     public void stop(BundleContext context) throws Exception {38         plugin = null;39         super.stop(context);40     }41 42     /**43      * Returns the shared instance44      *45      * @return the shared instance46      */47     public static Activator getDefault() {48         return plugin;49     }50 51     /**52      * Returns an image descriptor for the image file at the given53      * plug-in relative path54      *55      * @param path the path56      * @return the image descriptor57      */58     public static ImageDescriptor getImageDescriptor(String path) {59         return imageDescriptorFromPlugin(PLUGIN_ID, path);60     }61 }

  start()和stop()分别用于插件开始与停止调用的函数。

  


 

 

  最后让我们运行一下这个插件吧!

 

  启动方式1 直接在overview界面点击;

   启动方式2 也可以点击运行或者DEBUG按钮,运行方式选择Eclipse Application。

  

  点击启动后,会为我们重新开启一个Eclipse,这个Eclipse就是带有我们创建的插件的新Eclipse。启动效果如下:

  这样一个简单的插件就开发完啦!让我们就此真正的起航吧!!!

转载地址:http://wnxzx.baihongyu.com/

你可能感兴趣的文章
拥在怀里
查看>>
chm文件打开,有目录无内容
查看>>
whereis、find、which、locate的区别
查看>>
一点不懂到小白的linux系统运维经历分享
查看>>
桌面支持--打不开网页上的pdf附件解决办法(ie-tools-compatibility)
查看>>
nagios监控windows 改了NSclient++默认端口 注意事项
查看>>
干货 | JAVA代码引起的NATIVE野指针问题(上)
查看>>
POI getDataFormat() 格式对照
查看>>
Python 中的进程、线程、协程、同步、异步、回调
查看>>
好的产品原型具有哪些特点?
查看>>
实现java导出文件弹出下载框让用户选择路径
查看>>
刨根问底--技术--jsoup登陆网站
查看>>
OSChina 五一劳动节乱弹 ——女孩子晚上不要出门,发生了这样的事情
查看>>
Spring--通过注解来配置bean
查看>>
pandas 十分钟入门
查看>>
nginx rewrite
查看>>
前端安全系列(一):如何防止XSS攻击?
查看>>
查看Linux并发连接数
查看>>
你是谁不重要,关键是你跟谁!
查看>>
CSS中规则@media的用法
查看>>