• IDEA 插件开发笔记


    前言

    • 未完待续...

    Gradle创建项目

    • File -> New -> Project -> Gradle,勾选 Java 和 IntelliJ Platform Plugin,可以勾选 Kotlin 相关内容但不影响
    • 2021.2.3 版本的 IDEA 必须用 JDK 11 及以上进行开发
    • 配置过程会在 .gradle 文件夹中下载一个 IDEA 本体程序包,注意磁盘剩余空间

    项目结构

    • src/main/java 功能代码目录
    • src/main/resource/plugin.xml 配置文件
    • 开发流程为写功能代码 + 注册到配置文件中

    Action——菜单项

    Action

    • 最简单的内容 Action,也就是一个菜单项,其实就是一个点击事件,所有 Action 继承自 AnAction
      public class MyAction extends AnAction {
        @Override
        public void actionPerformed(@NotNull AnActionEvent event) {
            // 点击菜单之后的逻辑
        }
      
        @Override
        public void update(@NotNull AnActionEvent e) {
            // 控制这个菜单项的状态,如设置某条件下菜单不可用
        }
      }
      
    • 鼠标移动到类名上会自动提示没有在 xml 中注册,弹出配置对话框进行配置
    • 设置 Action 加入到某个组,那么这个菜单项就会显示在某个菜单/子菜单里,右侧表示在组中显示的位置
    • 点击确定,可以看到在 xml 中生成的内容,当然也可以自己写这些 xml

    Action Group

    • 我们可以创建自己的菜单或者子菜单
    • 当创建菜单项不变的菜单时,只需要在 xml 中注册即可,由 IDEA 自动处理对应的类
      <actions>
        <!-- id 为了唯一性可以以包名开头,text 为显示的内容,popup=true表示自动弹出,也就是子菜单,否则会直接显示 group 内的 action -->
        <group id="com.example.test.action.MyGroup" text="MyGroup" popup="false">
          <!-- 每个 group 都要加入某个 group,如主菜单区域 group id="MainMenu",relative-to-action 既可以填 group id,也可以填 action id,总之就是相对页面上某个元素 -->
          <add-to-group group-id="MainMenu" relative-to-action="HelpMenu" anchor="after" />
        </group>
      </actions>
      这样就会在菜单栏的 Help 后面添加一个 MyGroup 菜单
      

    Module——项目创建向导

    项目类型

    • 待补充...

    向导内容

    • 创建一个 MyModuleBuilder 继承 ModuleBuilder
      public class MyModuleBuilder extends ModuleBuilder {
        @Override
        public ModuleType<?> getModuleType() {
          // IDEA 提供了默认的一些类型,这里选空类型,在新建项目时就会在列表里显示为空项目。否则需要创建自己的 ModuleType 子类并注册
          return ModuleType.EMPTY;
        }
      
        @Override
        public void setupRootModel(@NotNull ModifiableRootModel modifiableRootModel) throws ConfigurationException {
          // 点击最后一步 finish 按钮,创建了项目名文件夹后的逻辑
          // 最后应该调用默认的 doAddContentEntry() 创建这个项目
          doAddContentEntry(modifiableRootModel);
        }
        @Override
        public ModuleWizardStep[] createWizardSteps(@NotNull WizardContext wizardContext, @NotNull ModulesProvider modulesProvider) {
          // 每一个 ModuleWizardStep 就是创建项目的一个步骤,当然最后一步 finish 那页不算
          return new ModuleWizardStep[]{
            new ModuleWizardStep() {
              @Override
              public JComponent getComponent() {
                // 返回 Java Swing 界面,IDEA 还提供了另一套 Swing 组件(JB-前缀)
                return null;
              }
              @Override
              public void updateDataModel() {
      
              }
            }
          };
        }
      }
      
    • 在配置文件中添加我们的 Builder 就可以看到效果
      <extensions defaultExtensionNs="com.intellij">
        <moduleBuilder builderClass="com.example.test.module.MyModuleBuilder"/>
      </extensions>
      
  • 相关阅读:
    ubuntu 14.04 安装gvim 后报出warning
    ubuntu 如何搭建svn 服务器
    如何为wordpress 添加favicon
    如何为wordpress 的文章添加分页
    ubuntu 如何添加alias
    wordpress 如何防止盗链
    ubuntu 14.04 如何设置静态ip
    钉钉与金蝶ERP对接开发方式
    金蝶组件无法正常工作
    金蝶补丁安装失败
  • 原文地址:https://www.cnblogs.com/moonfan/p/15555664.html
Copyright © 2020-2023  润新知