前言
- 未完待续...
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——项目创建向导
- 官网教程 https://plugins.jetbrains.com/docs/intellij/adding-new-steps.html
- 当想要在 IDEA 新建项目的位置新增一个和 Java、Maven、Gradle 等并列的项目类型,那么就需要创建一个 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>