IntelliJ插件开发教程之新建Action

简介: 认识Action在IDE编辑器中可以通过右键打开选项,如下图所示,这里的动作便是Action,同时在顶部的ToolBar也会有相应的Action,如下图所示。可能大家对我这个IDE的UI有点陌生,其实这是2022.3版本的IDEA开启了New UI,NEW UI还是内测中,需要手动开启,设置位置在:Settings->appearance&behavior -> New UI

认识Action

在IDE编辑器中可以通过右键打开选项,如下图所示,这里的动作便是Action,同时在顶部的ToolBar也会有相应的Action,如下图所示。可能大家对我这个IDE的UI有点陌生,其实这是2022.3版本的IDEA开启了New UI,NEW UI还是内测中,需要手动开启,设置位置在:Settings->appearance&behavior -> New UI。

新建Action

本文示例代码可以点击文末阅读原文获取,拿MessageDialogAction进行讲解,这个Action做的事情就是通过Dialog展示当前选择的文本。所有Action都要继承自AnAction并实现actionPerformed方法,Action执行时便会回调这个方法。

同时需要在plugin.xml文件注册这个Action之后,这个Action才能生效。所有Action都在actions标签中进行注册,首先通过action标签注册,通过group标签可以将Action进行组合,add-to-group表示添加到某个组里面,可以添加到编辑器右键选项(EditorPopupMenu)和菜单栏(ToolsMenu)。

<actions>
        <action id="messageDialogAction"
                text="MessageDialog测试"
                class="com.example.ideaplugindemo.action.MessageDialogAction"/>
        <group id="notificationTest" popup="true"
               text="通知测试">
            <add-to-group group-id="EditorPopupMenu" anchor="after" relative-to-action="$Paste"/>
            <add-to-group group-id="ToolsMenu" anchor="first"/>
            <reference ref="messageDialogAction"/>
        </group>
</actions>

能干什么

actionPerformed方法传入AnActionEvent参数,通过这个参数我们可以获取到很多信息,比如通过DataContext获取到编辑器对象,通过编辑器对象就可以做很多事情,如下是通过CaretModel获取到当前选择的文本。

Editor editor = CommonDataKeys.EDITOR.getData(e.getDataContext());
String selectedText = Optional.ofNullable(editor)
    .map(Editor::getCaretModel)
    .map(CaretModel::getPrimaryCaret)
    .map(Caret::getSelectedText)
    .orElse("")
int result = Messages.showYesNoCancelDialog(e.getProject(), "Yes or no dialog 测试 测试,你选择的是" + selectedText, "Plugin Demo",
    "Yes", "No", "Cancel", Messages.getQuestionIcon());

 

相关文章
|
10月前
|
IDE Java Maven
Idea安装及项目设置配置和基本使用
Idea安装及项目设置配置和基本使用
237 0
Idea安装及项目设置配置和基本使用
|
11月前
|
数据可视化
【IntelliJ IDEA】idea如何查看一个接口的子接口
【IntelliJ IDEA】idea如何查看一个接口的子接口
117 0
【IntelliJ IDEA】idea如何查看一个接口的子接口
|
1月前
|
Java 数据库连接 Spring
如何在IDEA中自定义模板、快速生成完整的代码?
这篇文章介绍了如何在IntelliJ IDEA中使用easycode插件自定义代码生成模板,以快速生成Spring Boot、MyBatis等项目中常见的Controller、Service、Dao、Mapper等组件的代码。
如何在IDEA中自定义模板、快速生成完整的代码?
|
4月前
|
Java
【学习记录】IDEA编辑器 - 类、方法模板配置
【学习记录】IDEA编辑器 - 类、方法模板配置
67 0
【学习记录】IDEA编辑器 - 类、方法模板配置
Idea 如何新建一个groovy的项目(图文详细解释)
Idea 如何新建一个groovy的项目(图文详细解释)
501 1
|
Java Spring
IDEA更改工作空间及新建SpringBoot项目
IDEA更改工作空间及新建SpringBoot项目
IDEA更改工作空间及新建SpringBoot项目
|
Java 关系型数据库 MySQL
idea里面完整创建maven项目(包含如何使用)
Maven和Maven Archetype区别? Maven:普通工程 Maven Archetype:模板工程
643 0
idea里面完整创建maven项目(包含如何使用)
|
IDE 开发工具 git
2021 最新 IntelliJ IDEA 详细配置步骤演示(图文版)
2021 最新 IntelliJ IDEA 详细配置步骤演示(图文版)
481 0
2021 最新 IntelliJ IDEA 详细配置步骤演示(图文版)
|
存储 IDE 开发工具
2021 最新 IntelliJ IDEA 详细配置步骤演示(图文版)(二)
2021 最新 IntelliJ IDEA 详细配置步骤演示(图文版)(二)
709 0
2021 最新 IntelliJ IDEA 详细配置步骤演示(图文版)(二)
|
Java Spring
IDEA 文档插件 DocView 版本更新:修改 UI 并支持 IDEA 2020.3 !
近期工作开始忙起来,各种忙,连阅读 Spring 源码都暂停了,Doc View 也暂时搁置计划,虽然想有很多功能,但是总是要慢慢来的。
243 0