【插件开发】—— 2 插件入门

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

以前接触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.0
Bundle-ManifestVersion: 2
Bundle-Name: 我的插件
Bundle-SymbolicName: com.test.myplugin; singleton:=true
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: com.test.myplugin.Activator
Bundle-Vendor: xingoo
Require-Bundle: org.eclipse.ui,
 org.eclipse.core.runtime
Bundle-ActivationPolicy: lazy

  

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

  SymblicName 是我们插件的包名

  version 是插件的版本

  Activator 是插件的激活类

  Vendor 是插件开发者的信息

  Bundle 是插件以来的库

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

  

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

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.4"?>
<plugin>

   <extension
         point="org.eclipse.ui.actionSets">
      <actionSet
            label="Sample Action Set"
            visible="true"
            id="com.test.myplugin.actionSet">
         <menu
               label="Sample &amp;Menu"
               id="sampleMenu">
            <separator
                  name="sampleGroup">
            </separator>
         </menu>
         <action
               label="&amp;Sample Action"
               icon="icons/sample.gif"
               class="com.test.myplugin.actions.SampleAction"
               tooltip="Hello, Eclipse world"
               menubarPath="sampleMenu/sampleGroup"
               toolbarPath="sampleGroup"
               id="com.test.myplugin.actions.SampleAction">
         </action>
      </actionSet>
   </extension>

</plugin>

  

  <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 ID
13     public static final String PLUGIN_ID = "com.test.myplugin";
14 
15     // The shared instance
16     private static Activator plugin;
17     
18     /**
19      * The constructor
20      */
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 instance
44      *
45      * @return the shared instance
46      */
47     public static Activator getDefault() {
48         return plugin;
49     }
50 
51     /**
52      * Returns an image descriptor for the image file at the given
53      * plug-in relative path
54      *
55      * @param path the path
56      * @return the image descriptor
57      */
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。启动效果如下:

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

【扩展篇】Eclipse插件的8种安装方式 本文介绍Eclipse插件开发中,插件的八种安装方式,属个人总结,如有错误欢迎指正交流。 阅读详情

相关推荐

【Eclipse插件开发】3工作台workbench探索【下篇】

Activator类代表贡献插件并管理插件的生命周期。正如我们在Hello World示例中看到的,您不必指定插件类。该平台将为您提供一个。在这种情况下,我们的插件需要在启动时初始化与UI相关的数据。平台类AbstractUIPlugin提供了一个用于管理UI资源的结构,并由Activator扩展。AbstractUIPlug使用通用的启动和关闭方法来管理插件生命周期中的图像、对话框设置和首选项存储。JFace插件提供了一个用于实现向导、首选项页面和对话框的框架。这些对话框的实现遵循一种通用模式。

qq_48081868的博客 707

eclipse插件开发小知识

代码】eclipse插件开发小知识。

u012447791的博客 471

ROS2从入门到精通4-4:局部控制插件开发案例(以PID算法为例)

在ROS2中,局部控制插件为导航系统提供灵活性和可扩展性。本文详细总结ROS2控制器插件开发的范式,并提供基于PID算法的控制插件实现路径跟踪,文章结合开发范式、算法原理和实际开发案例加深理解

FRIGIDWINTER的博客 1万+

Eclipse插件之Tomcat Plugin 介绍、安装与使用

Eclipse Tomcat 插件为开发Java Web应用程序提供了Tomcat容器的简单集成。所谓的集成其实主要是以下功能: 1. 在Eclispe中启动和关闭Tomcat 2. 启动后的应用可以很容易的打断点进行调试, 这一点应该是该插件最大的优势。

oscar999的专栏 4160

手机刷双系统

刷机教程(https://www.geekeyes.cn/forum.php/forum.php?mod=viewthread&amp;tid=492) 解锁教程(http://www.gioov.com/index.php/1386)   解锁教程 cmd下 进入adb目录( 如果环境变量配置了adb 可以直接在cmd 下输入命令) 手机连接电脑,确保usb 调试打开,然后手机连接电脑,...

超宇的博客 1万+

基于YOLOv8-obb的自动车牌检测与CRNN车牌识别

基于YOLOv8-obb模型实现了针对带角度车牌的自动检测,并结合CRNN(Convolutional Recurrent Neural Network)技术进行车牌字符识别,旨在提高复杂场景下车牌识别系统的准确性和鲁棒性

坚强的强酸柠檬的博客 1145

Maven2插件开发入门

一、创建Maven项目 首先创建一个Maven插件项目,可以手动或使用mvn archetype:create从原型创建。pom.xml配置如下: 1 2 3 4 ...

weixin_30785593的博客 114

静态分析工具COBOT与Testbed对比

Testbed为规则检查工具的代表,市场占有量非常大,但随着时间的推移,大家从规则匹配转向了用静态分析工具检查Bug,所以规则检查型工具占有量比开始时候已经减少,但仍有一些比较落后的单位还在继续采购此类工具。3、通过对开源工程的测试,进行误漏报率的对比,发现COBOT(库博)的误漏报率相比Testbed较低,因COBOT主打国内市场,在众多军工单位进行大量试用及使用,吸取了众多单位的意见和建议,更加符合国内军工单位的使用习惯及测试要求。4、此外库博在功能上还可以进行计划任务,检测队列,检测并发的功能支持。

chengoodflower的博客 2056

Zabbix Agent2的插件开发入门

本文实现了一个最简单的Zabbix可加载插件,使它能够切实的配置在item key中,发挥作用。

ouiki的专栏 901

UniApp X 网络请求避坑指南:从 JS 到 UTS 的 JSON 数据处理全解析

摘要:UniAppX开发中处理JSON数据时,UTS强类型特性要求开发者改变JS习惯。本文对比两种主流方案:1)UTSJSONObject通过keypath访问数据,兼容JS但缺乏类型提示;2)type+泛型方案,通过定义数据类型实现强类型校验和智能提示,推荐用于固定数据结构。文章详细演示了两种方式的具体实现、转换方法及实战案例,并提供了类型定义技巧和注意事项,帮助开发者编写更稳定高效的跨平台应用。

归梦工作室 2790

【SpringBoot 4.x 第2节】夯爆了,学习 Spring Boot 4.x 前,需要具备哪些 Java 基础?

🏆 本文收录于 《滚雪球学 Spring Boot 4.x》 专栏。 本专栏面向 有一点 Java 基础,但没有系统学过 Spring Boot 的读者,采用“滚雪球式学习法”:先跑通、再理解、再重构、再上线,最终带你从第一个 Hello API 一路完成一个可部署、可监控、可扩展的后端项目。

**My Coding Family** 4569

【Eclipse插件开发】Eclipse p2入门

Eclipse p2 随笔p2基础文件布局 p2基础 文件布局   在p2之前,许多 Eclipse 用户绕过 Update Manager 并通过将新插件转储到eclipse/plugins/目录中并使用 -clean 命令行参数重新启动来安装新插件。这种“狂野”的方法有很多缺点,我们不会在这里讨论,但可以说不推荐这种安装方法。尽管 p2 会检测直接添加到plugins文件夹中的插件(具有相关的启动性能成本),但不支持对p2 安装在此目录中的插件进行更改。如果您手动删除 p2 安装的插件,或尝试用不同版本

毛毛雨下的博客 1800

Xposed插件开发手册(2):Xposed插件开发入门

前言 在上一篇文章《Xposed插件开发手册(1): Xposed框架的安装》,我们学习到了Xposed的安装,这篇文章我们就来做一个简单的Xposed模块,劫持我们写的App,整篇文章我参考了官网的教程来编写。 环境参数 虽然之前的文章中,我也写了我的环境参数, 研发环境 操作系统:MacOS Mojava IDE:Android Studio 3.2 Gradle:gradle-4.6-al...

Martin.Mu `s Special Column 3456

【局部规划模块轨迹优化算法】Teb_planner规划算法

认知有限,望大家多多包涵,有什么问题也希望能够与大家多交流,共同成长!本文先对****做个简单的介绍,具体内容后续再更,其他模块可以参考去我其他文章提示:以下是本篇文章正文内容由于ROS中的局部路径规划器比较老了,所以我推荐大家使用比较新的局部路径规划器teb_local_planner。teb_local_planner是基于弹性时间带碰撞约束的算法,算法将动态障碍物、运行时效、路径平滑性等约束做综合考虑,在复杂环境下有更优秀的表现。

qq_35635374的博客 951

QGis软件 —— 1、Windows10下载安装QGis及插件

QGis —— 1、Windows10下载安装QGis及插件

5159

Volumio2插件开发入门:打造专属音乐服务扩展

Volumio2是一款功能强大的高保真音乐播放器,通过插件系统可以轻松扩展其音乐服务能力。本文将带你快速掌握Volumio2插件开发的核心知识,从零开始创建属于自己的音乐服务扩展。 ## 插件开发准备工作 在开始开发前,首先需要准备好开发环境。确保你已克隆Volumio2项目代码库: ```bash git clone https://gitcode.com/gh_mirrors/vo/Vo

gitblog_00548的博客 1092

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

MM2-0/Kvaesitso 插件开发入门指南

Kvaesitso 是一款专注于搜索功能的开源 Android 启动器,其强大的插件系统允许开发者扩展启动器的功能。本文将详细介绍如何从零开始开发 Kvaesitso 插件,涵盖基础概念、开发环境搭建、插件类型选择以及实战开发示例。 ## 插件系统架构 Kvaesitso 的插件系统基于 Android 的 Content Provider(内容提供器)架构构建,通过 Plugin SDK 简

gitblog_00201的博客 481

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

上一篇: 【实习记】2014-08-10(下)用宏来批量声明定义函数
下一篇: FPAG结构 组成 工作原理 开发流程(转)
weixin_33709609
博客等级 码龄11年 1万+粉丝 1332原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值