IDEA插件开发总结
一:前置步骤
1.添加开发插件所需的SDK:
1.1先添加JDK
1.2打开Project Structure-Platform Settings-SDKs
1.3添加IntelliJ Platform Plugin SDK
1.4找到IDEA安装目录选择并OK
1.5为SandBox创建目录(最好也是创建在IDEA安装目录下)
2.下载安装gradle,为了能使用gradle命令;
二:创建工程
1.新建Gradle工程
1.1勾选Java和IntelliJ Platform Plugin这两个选项,SDK选择JDK1.8即可
1.2然后一路next即可;
上面的不要看了,不用Gradle,反正暂时用了一下不怎么好用,还是用网上常用的方式来创建;
2.新建Module选择IntelliJ Platform Plugin,然后SDK选择之前创建的;
2.1直接next,设置项目名然后Finish
3.对着src右键(或者Alt + Insert)选择Plugin DevKit选择Action
3.1在设置Action页面ActionID一般是包名+Action类名,后面两个Name就用Action类名即可,最后一个是备注
3.2可以在下面设置这个Action的所处的面板(包括顶上的如Build等一般以Menu后缀如BuildMenu),然后右侧选择所处Group的子栏;在下面可以设置Action的快捷键
4.接着就生成了自定义的Action,然后它的配置会在plugin.xml里;(上面是通过工具生成,也可以自己写个类实现AnAction类然后注册到plugin.xml里)
4.1在生成的Action的actionPerformed方法里添加
Messages.showMessageDialog("这个是我的测试弹窗!", "TestTile", Messages.getWarningIcon());
然后运行Plugin即可,找到之前设置的自定义Plugin的按钮,点击;
注意,运行后会产生一个全新的(且未配置的)IDEA程序来模拟安装了该插件;
5.一些开发总结:
5.1对于AnActionEvent e有如下用法:(PSI是程序结构接口的意思)
先定义两个变量:Project project = e.getData(PlatformDataKeys.PROJECT);和VirtualFile file = e.getData(PlatformDataKeys.VIRTUAL_FILE);(如果要获取当前文件的光标相关信息,如光标所在行,被光标引用的字符串等信息用EDITOR)
然后:
// 项目名,即获取调用此插件的当前项目的名字,输出为demo-test-plugin-dev
String projectName = project.getName();
// C:/Users/liqi.wang/IdeaProjects/demo-test-plugin-dev
String projectBasePath = project.getBasePath();
// file://C:/Users/liqi.wang/IdeaProjects/demo-test-plugin-dev(这个和上面的区别就是这里获得的是BasePath目录的文件)
VirtualFile baseDir = project.getBaseDir();
// java
String typeName = file.getExtension();
// Entrance.java
String fileName = file.getName();
// C:/Users/liqi.wang/IdeaProjects/demo-test-plugin-dev/src/Entrance.java
String canonicalPath = file.getCanonicalPath();
5.2对于plugin.xml的配置的group-id有:1.HelpMenu是上面的Help;2.EditorPopupMenu.GoTo是右键当前文件的GoTo栏,而如果直接EditorPopupMenu则是直接在打开的文件上右键的一级菜单栏;
而ProjectViewPopupMenu则是右键左侧的Project中的如文件、目录时弹窗的列表;
5.3如果要开发在Settings里能配置的插件是new GUI Form,如果是插件按钮点击后有窗体是new Dialog;
IDEA插件开发总结的更多相关文章
- JavaScript学习笔记(四)——jQuery插件开发与发布
jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...
- jira的插件开发流程实践
怎么开头呢,由于自己比较懒,博客一直不怎么弄,以后克己一点,多传点自己遇到的问题和经历上来,供自己以后记忆,也供需要的小伙伴少走点弯路吧 最近公司项目需要竞标一个运维项目,甲方给予了既定的几种比较常用 ...
- Vue插件开发入门
相对组件来说,Vue 的插件开发受到的关注要少一点.但是插件的功能是十分强大的,能够完成许多 Vue 框架本身不具备的功能. 大家一般习惯直接调用现成的插件,比如官方推荐的 vue-router.vu ...
- 【原创】记一次Project插件开发
一.开发背景 最近在使用微软的Office Project 2010 进行项目管理,看到排的满满的计划任务,一个个地被执行完毕,还是很有成就感的.其实,不光是在工作中可以使用Project进行项目进度 ...
- JavaScript学习总结(四)——jQuery插件开发与发布
jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...
- [Tool] Open Live Writer插件开发
一 前言 Windows Live Writer(简称 WLW)开源之后变成 Open Live Writer(简称 OLW),原先 WLW 的插件在 OLW 下都不能用了,原因很简单,WLW 插件开 ...
- VS插件开发 - 登录身份验证
[附加] 很多朋友问那个VS背景怎么弄的,我刚刚已经抽时间把制作步骤发出来了: 请参见<VS插件开发 - 个性化VS IDE编辑器,瞬间 高 大 上>. 最近一直在忙着一些事情,一直没有发 ...
- jQuery插件开发精品教程,让你的jQuery提升一个台阶
要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...
- 开源遥感平台opticks插件开发指南
Opticks是一款开源的遥感数据处理平台,与其同类开源软件OSSIM一样,支持种类丰富的数据文件格式,但其最大特点为设计精巧的插件开发模式,在设计技巧上,系统提供了良好的封装特性,即使插件开发者对框 ...
- Eclipse ndk fix插件开发
一. 手工修复ndk环境bug Eclipse做ndk开发的时候, 经常会遇到编译过去,却报语法错误的问题,比如 ①. 头文件不识别 ②. 头文件识别了, 类型不识别 针对这一的bug,我们一般按照如 ...
随机推荐
- 使用IntelliJ IDEA 搭建 spring mvc开发环境
填好GroupId.ArtifactId,一路Next创建工程,在main 目录创建 java文件夹并转换为Sources Root,创建好工程目录结构如下: 配置工程 配置 pom.xml,引入相关 ...
- Java_5 数组
1.数组的概念与作用 数组:一组数据的集合,数组中的每个数据被称作元素.在数组中可以存放任意类型的元素,但同一个数组里存放的元素类型必须一致. 作用:可以存贮多个数据. 2.数组的使用方式 数据类型[ ...
- elastic5.4安装错误解决
首先,我们从官网下载:(官网:https://www.elastic.co/downloads/elasticsearch)(推荐下载deb或者rpm包,否则坑很多) 启动 (需要依赖java环境) ...
- 9.11 h5日记
9.11 超链接标签<a></a>十分特殊改a标签内容的字体颜色,必须是直接给a 设置,给它的父级标签设置是不可行的. PS:什么是属性继承,即父级标签设置的样式后 ...
- Apache Commons configuration使用入门
使用Commons Configuration可以很好的管理我们的配置文件的读写, 官网:http://commons.apache.org/configuration 需要用到commons-la ...
- html标签一
<body></body> 网页内容 <p></p>段落 <h1></h1> ----<h6></h6> ...
- oracle sqlplus操作
步骤: su - oracle 切换到oracle用户 sqlplus /nolog 进入sqlplus命令行 conn cps/cps 连接到cps用户的数据库,cps/cps表示:用户/密码 执行 ...
- Generate a Push Certificate
To send Push notification to an application/device couple you need an unique device token (see the O ...
- Python generator 的yield (enumerate)
生成杨辉三角 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 def triangles(max): L = [1,] while len(L) - 1 < ...
- 看看用PS来转基因的动物,居然很欢乐!!
出于礼貌,我先笑一下,哈哈哈哈哈哈!好了,开始.Gyyporama是挪威的一名程序员,他无聊的时候会从网上找来一些动物的图片,把他们的头和身体进行混合,生成另一种奇怪的动物.然后邀请其他网友过来给他们 ...