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());

 

相关文章
|
人工智能 监控 Swift
魔搭社区LLM模型部署实践 —— 以ChatGLM3为例
本文将以ChatGLM3-6B为例,介绍在魔搭社区如何部署LLM
|
搜索推荐 IDE 开发工具
IDEA自定义右键菜单
IDEA自定义右键菜单
2740 1
|
Java Apache
解决gradle下载慢的问题
解决gradle下载慢的问题
8532 0
|
Windows
关于 Qt设置置顶窗口,透明部分显示黑色底色(已设置透明窗口) 的解决方法
关于 Qt设置置顶窗口,透明部分显示黑色底色(已设置透明窗口) 的解决方法
关于 Qt设置置顶窗口,透明部分显示黑色底色(已设置透明窗口) 的解决方法
|
前端开发 网络协议 Dubbo
超详细Netty入门,看这篇就够了!
本文主要讲述Netty框架的一些特性以及重要组件,希望看完之后能对Netty框架有一个比较直观的感受,希望能帮助读者快速入门Netty,减少一些弯路。
91258 32
超详细Netty入门,看这篇就够了!
|
6月前
|
关系型数据库 Linux 数据库
PostgreSQL 入门指南:安装、配置与基本命令
本文从零开始,详细介绍如何在 Windows、Linux 和 macOS 上安装和配置 PostgreSQL,涵盖30+个实操代码示例。内容包括安装步骤、配置远程访问和用户权限、基础数据库操作命令(如创建表、插入和查询数据),以及常见问题的解决方案。通过学习,你将掌握 PostgreSQL 的基本使用方法,并为后续深入学习打下坚实基础。
6719 1
|
Kubernetes Cloud Native Java
探索Quarkus:Java的新一代高性能轻量级框架
探索Quarkus:Java的新一代高性能轻量级框架
4956 3
|
开发者
IntelliJ插件开发教程之通知提醒
前言本文介绍三种常用的通知提醒方式,每种方式都适用不同场景,需要合理使用。本文演示代码请查看idea-plugin-demo。DialogDialog是一种比较常见的通知形式,IntellJ平台包装了一个易用的Messages类给开发者使用,通过这个类可以做一些简单的通知并接收用户的反馈,如下所示是通过showYesNoCancelDialog展示的Dialog,反复返回结果表示用户点击了哪个按钮
IntelliJ插件开发教程之通知提醒
|
人工智能 Java
通过okhttp调用SSE流式接口,并将消息返回给客户端
通过okhttp调用SSE流式接口,并将消息返回给客户端
|
安全 Java
自动拆箱调用方法原理
自动拆箱调用方法原理
261 0

热门文章

最新文章