一:前置步骤

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插件开发总结的更多相关文章

  1. JavaScript学习笔记(四)——jQuery插件开发与发布

    jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...

  2. jira的插件开发流程实践

    怎么开头呢,由于自己比较懒,博客一直不怎么弄,以后克己一点,多传点自己遇到的问题和经历上来,供自己以后记忆,也供需要的小伙伴少走点弯路吧 最近公司项目需要竞标一个运维项目,甲方给予了既定的几种比较常用 ...

  3. Vue插件开发入门

    相对组件来说,Vue 的插件开发受到的关注要少一点.但是插件的功能是十分强大的,能够完成许多 Vue 框架本身不具备的功能. 大家一般习惯直接调用现成的插件,比如官方推荐的 vue-router.vu ...

  4. 【原创】记一次Project插件开发

    一.开发背景 最近在使用微软的Office Project 2010 进行项目管理,看到排的满满的计划任务,一个个地被执行完毕,还是很有成就感的.其实,不光是在工作中可以使用Project进行项目进度 ...

  5. JavaScript学习总结(四)——jQuery插件开发与发布

    jQuery插件就是以jQuery库为基础衍生出来的库,jQuery插件的好处是封装功能,提高了代码的复用性,加快了开发速度,现在网络上开源的jQuery插件非常多,随着版本的不停迭代越来越稳定好用, ...

  6. [Tool] Open Live Writer插件开发

    一 前言 Windows Live Writer(简称 WLW)开源之后变成 Open Live Writer(简称 OLW),原先 WLW 的插件在 OLW 下都不能用了,原因很简单,WLW 插件开 ...

  7. VS插件开发 - 登录身份验证

    [附加] 很多朋友问那个VS背景怎么弄的,我刚刚已经抽时间把制作步骤发出来了: 请参见<VS插件开发 - 个性化VS IDE编辑器,瞬间 高 大 上>. 最近一直在忙着一些事情,一直没有发 ...

  8. jQuery插件开发精品教程,让你的jQuery提升一个台阶

    要说jQuery 最成功的地方,我认为是它的可扩展性吸引了众多开发者为其开发插件,从而建立起了一个生态系统.这好比大公司们争相做平台一样,得平台者得天下.苹果,微软,谷歌等巨头,都有各自的平台及生态圈 ...

  9. 开源遥感平台opticks插件开发指南

    Opticks是一款开源的遥感数据处理平台,与其同类开源软件OSSIM一样,支持种类丰富的数据文件格式,但其最大特点为设计精巧的插件开发模式,在设计技巧上,系统提供了良好的封装特性,即使插件开发者对框 ...

  10. Eclipse ndk fix插件开发

    一. 手工修复ndk环境bug Eclipse做ndk开发的时候, 经常会遇到编译过去,却报语法错误的问题,比如 ①. 头文件不识别 ②. 头文件识别了, 类型不识别 针对这一的bug,我们一般按照如 ...

随机推荐

  1. jquey中json字符串与json的转换(转)

    <!doctype html> <html> <head> <meta charset="utf-8"> <script sr ...

  2. 使用SqlBulkCopy批量插入数据,测试20万条用时5秒

    using System;using System.Collections.Generic;using System.Linq;using System.Text; using System.Data ...

  3. InertialNav

    https://github.com/priseborough/InertialNav Instructions To Run Simulink Model Note : Simulink model ...

  4. jq以固定开头的class属性的名称

    $("div[class^='pick']").css({'border-color':'#000000'}); div [class^="aaa"]

  5. 面向服务的架构(SOA)演变图片

    公司项目演变 成熟的公司项目结构 对比 总线-服务的注册与发现

  6. Linux yum源完全配置

    一.简介 yum主要功能是更方便的添加/删除/更新RPM包,自动解决包的依赖性问题,便于管理大量系统的更新问题,其理念是使用一个中心仓库(repository)管理一部分甚至一个distributio ...

  7. git 分支的创建和切换

    每次提交,GIT 都会将他们串成一个时间线,截止到目前,只有一个时间线,GIT里叫这个分支为主分支,叫master,HEAD指向master,master指向提交,HEAD指向当前的分支. 一开始的时 ...

  8. javascript DOM基础操作

    DOM(Document Object Model)即文档对象模型,针对HTML和XML文档的API(应用程序接口).DOM描绘了一个层次化的节点树,运行开发人员添加.移除和修改页面的某一部分.DOM ...

  9. Android开发之利用ViewPager实现在Activity或Fragment中引入别的布局文件实现滑动并进行页面跳转

    有些时候经常可以看到其他APP中有一排的图标,可以在一个界面中滑来滑去,并且图标可以进行点击事件进行页面的跳转.这里对这种方法的实现做出总结. 首先看一下图片: 下面这两种图片是在一个Fragment ...

  10. 8F - 采矿

    某天gameboy玩魔兽RPG.有一个任务是在一个富含金矿的圆形小岛上建一个基地,以最快的速度采集完这个小岛上的所有金矿.这个小岛上有n(0<n<1000000)个金矿,每个金矿的矿藏量是 ...