分享

干货|IntelliJ IDEA插件开发

 过河卒冲 2020-03-03

每天读一篇一线开发者原创好文

作者简介

作者姚刚,网管软件开发高级工程师,开源软件爱好者,对性能调优有深入研究,近年致力于TDD、重构、DDD、DSL等研究以及在团队中的落地。

今天他通过实战方式,为我们带来关于IDEA 插件开发全流程,希望给每个想要学习IDEA插件开发的朋友们提供些许帮助。

1.开发环境搭建


2.开发流程

2.1.开发插件访问入口(Action)

(1)扩展抽象类AnAction

 Code:

(点击查看大图)

(2)将扩展类注册到plugin.xml文件actions节点中,并完成相关属性配置。

属性含义:

Id:每个action的唯一标识,要保证整个插件定义中唯一。

Class:插件访问入口类,必须扩展抽象类AnAction

Text:插件在界面上的显示文本

Description:插件的描述信息

Icon:插件图标,本例效果:

add-to-group:定义action锚点,其中group-id指定显示在某个菜单栏或鼠标右键。

这里以ToolsMenu为例,指定显示在菜单栏“Tools”菜单中。

Anchor指定在菜单中相对于其他菜单项的位置,有三个取值“first”“last”,“before”,“after”。

keyboard-shortcut:定义插件的快捷键。

说明:当通过IDEA新建Action的时候,IDEA也会自动完成Aciton在plugin.xml文件中的注册配置,注册内容如下(其中部分属性内容可通过后期手动配置进行修改添加)。

2.2开发插件配置面板(SearchableConfigurable)

(1)实现SearchableConfigurable接口

三个关键方法:

getDisplayName:控制在配置面板中左侧窗口的显示名称。

createComponent:配置界面的绘制,负责用户输入信息的接受。

isModified:当用户修改配置参数后,在点击“OK”“Apply”按钮前,框架会自动调用该方法,判断是否有修改,进而控制按钮“OK”“Apply”的是否可用。

Apply:用户点击“OK”或“Apply”按钮后会调用该方法,通常用于完成配置信息持久化。

Reset:用户点击“Reset”按钮后,用户界面配置参数重置。

 Code:

(点击查看大图)

(2)界面绘制

可通过所见即所得的绘制工具或插件完成,当然直接编码绘制也可以。

(3)在plugin.xml文件中注册配置面板

含义:

applicationConfigurable :配置

2.3 插件配置参数持久化 

当插件有一些用户定制的配置参数信息时,需要插件具备记忆功能,在IDEA重启后,任然能够生效,这就需要用到插件配置信息持久化接口。 

(1)实现接口PersistentStateComponent<Element>

(点击查看大图)

(2)配置持久化文件位置以及参数

@State(name = 'SearchJar', storages = {@com.intellij.openapi.components.Storage(id = 'other', file ='$APP_CONFIG$/searchJarPath.xml')})

含义:

name:持久化文件组件名称可随意指定,通常用插件名称即可。

storages :定义配置参数的持久化位置。其中$APP_CONFIG$变量为Idea安装后默认的用户路径,例如:C:\Documents and Settings\10139682\.IdeaIC2017.3\config\options\searchJarPath.xml

上面的注解配置参数,在用户通过配置界面设置查找路径后,会自动修改或生成(当文件不存在)如下配置文件:

2.4开发状态栏进度条

对于存在长耗时运算的插件,会了提升用户体验,常常需要增加进度条。

扩展Task.Backgroundable抽象类,并覆盖run方法。

Code:

3.运行效果

3.1插件管理

3.2 Setting配置界面

3.3 插件入口

通过菜单Tools>>Search Jar或执行Ctrl+Alt+U快捷键。

弹出搜索jar输入框

开始执行搜索,任务状态栏显示效果如下

查找结果展示:

插件源码:

https://10.89.168.164:8443/svn/Network_Management_Dept4/科室建设/EMS性能告警科/DEV_TEST_TOOLS/Plugin Dev/SearchJar

参考文献:

[1]http://blog.csdn.net/chengtt_love/article/details/53745025

[2]http://www./intellij/sdk/docs/welcome.html

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多