zoukankan      html  css  js  c++  java
  • 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;

  • 相关阅读:
    【bzoj1707/Usaco2007 Nov】tanning分配防晒霜——贪心+优先队列
    【bzoj1754/Usaco2005 qua】Bull Math——高精度乘法
    【bzoj1709/Usaco2007 Oct】Super Paintball超级弹珠——递推
    【bzoj2060/Usaco2010 Nov】Visiting Cows 拜访奶牛——树形dp
    【bzoj1710/Usaco2007 Open】Cheappal 廉价回文——区间dp
    【bzoj1828/Usaco2010 Mar】balloc 农场分配——贪心+差分+优先队列
    【bzoj4552/Tjoi2016&Heoi2016】排序——二分+线段树/平衡树+线段树分裂与合并
    【bzoj2083/Poi2010】Intelligence test——二分+贪心
    【bzoj1596/Usaco2008 Jan】电话网络——dfs
    【bzoj1782/Usaco2010 Feb】slowdown 慢慢游——dfs序+树状数组
  • 原文地址:https://www.cnblogs.com/silentdoer/p/9764666.html
Copyright © 2011-2022 走看看