IntelliJ插件开发教程之通知提醒

简介: 前言本文介绍三种常用的通知提醒方式,每种方式都适用不同场景,需要合理使用。本文演示代码请查看idea-plugin-demo。DialogDialog是一种比较常见的通知形式,IntellJ平台包装了一个易用的Messages类给开发者使用,通过这个类可以做一些简单的通知并接收用户的反馈,如下所示是通过showYesNoCancelDialog展示的Dialog,反复返回结果表示用户点击了哪个按钮

前言

本文介绍三种常用的通知提醒方式,每种方式都适用不同场景,需要合理使用。本文演示代码请查看idea-plugin-demo

Dialog

Dialog是一种比较常见的通知形式,IntellJ平台包装了一个易用的Messages类给开发者使用,通过这个类可以做一些简单的通知并接收用户的反馈,如下所示是通过showYesNoCancelDialog展示的Dialog,反复返回结果表示用户点击了哪个按钮。

 


int result = Messages.showYesNoCancelDialog(e.getProject(), "Yes or no dialog 测试 测试,你选择的是" + selectedText, "Plugin Demo",
     "Yes", "No", "Cancel", Messages.getQuestionIcon());
if (result == Messages.YES) {
    LOG.error("MessageDialogAction actionPerformed YES");
} else if (result == Messages.NO) {
    LOG.error("MessageDialogAction actionPerformed NO");
}

Dialog的作用不仅仅能作为简单的通知,而且还可以通过继承DialogWrapper去定制Dialog展示复杂页面。

Editor Hints

编辑器浮动提醒如下图所示,一般用于展示与插入位置相关的提醒,如下图所示提醒了插入符号的位移、行号、列号。浮动提醒支持渲染HTML,可以展示比较丰富的内容。

 


public void showHint(Editor editor, String text) {
    if (StringUtils.isBlank(text)) {
        return;
    }
    HintManagerImpl hintManager = (HintManagerImpl) HintManagerImpl.getInstance();
    JComponent label = HintUtil.createInformationLabel(text, null, null, null);
    AccessibleContextUtil.setName(label, "Hint");
    LightweightHint hint = new LightweightHint(label);
    Point p = HintManagerImpl.getHintPosition(hint, editor, editor.getCaretModel().getVisualPosition(), (short) 1);
    int flags = HintManager.HIDE_BY_ANY_KEY | HintManager.HIDE_BY_TEXT_CHANGE | HintManager.HIDE_BY_SCROLLING;
    hintManager.showEditorHint(hint, editor, p, flags, 0, true, (short) 1);
}

Ballon

气泡提醒也是经常使用的一种,这种通知没有上面两种那么强烈,而且会按照时间线进行展示,并且可以在底部带出相应的执行动作。

 

首先需要先在plugin.xml定义notificationGroup,然后才可以在代码里通过NotificationGroupManager并指定id获取notificationGroup实例,通过链式调用构建Notification,并且可以添加回调函数作为Action。


NotificationGroupManager.getInstance().getNotificationGroup("Idea Plugin Demo")
    .createNotification("Idea Plugin Demo title","通知内容,点击动作之后会打一条错误日志", NotificationType.INFORMATION)
    .addAction(new NotificationAction("动作名称"){
        @Override
        public void actionPerformed(@NotNull AnActionEvent e, @NotNull Notification notification) {
             LOG.error("BalloonNotificationAction NotificationAction actionPerformed");
        }
    }).notify(e.getProject());


<extensions defaultExtensionNs="com.intellij">
  <notificationGroup id="Idea Plugin Demo" displayType="BALLOON" key="notification.group.name"/>
</extensions>

参考

https://plugins.jetbrains.com/docs/intellij/notifications.html

相关文章
|
IDE 开发工具
IntelliJ插件开发教程之新建Action
认识Action 在IDE编辑器中可以通过右键打开选项,如下图所示,这里的动作便是Action,同时在顶部的ToolBar也会有相应的Action,如下图所示。可能大家对我这个IDE的UI有点陌生,其实这是2022.3版本的IDEA开启了New UI,NEW UI还是内测中,需要手动开启,设置位置在:Settings->appearance&behavior -> New UI
IntelliJ插件开发教程之新建Action
|
搜索推荐 IDE 开发工具
IDEA自定义右键菜单
IDEA自定义右键菜单
2740 1
|
Ubuntu 数据安全/隐私保护
Ubuntu创建root用户
Ubuntu创建root用户
171 1
|
IDE 程序员 开发工具
IDEA插件-IKun Progress 坤坤成IDEA进度条了
"IKun Progress"是一款适用于JetBrains IntelliJ IDEA等IDE的插件,该插件能够将标准的进度条替换为一个有趣且独特的篮球动画,其中的角色名为坤坤(Kun Kun)。它旨在为您的IDE使用过程增添一些娱乐和轻松的氛围。 该插件让您可以在执行IDE中的任务时享受到更加视觉上吸引人的进度指示器,例如构建、运行测试或其他涉及进度条的操作。相比传统的普通进度条,您将看到坤坤在打篮球,给您的开发工作流程增添了一份乐趣。
1660 0
IDEA插件-IKun Progress 坤坤成IDEA进度条了
|
人工智能 Java 测试技术
低成本工程实践-AI帮我写代码做需求
本文主要讲述,以“无需训练模型”的方式实现:AI智能分析功能需求、写代码、review代码解决特定业务问题的实践过程
479 12
低成本工程实践-AI帮我写代码做需求
|
缓存 监控 负载均衡
将近2万字的Dubbo原理解析,彻底搞懂dubbo
市面上有很多基于RPC思想实现的框架,比如有Dubbo。今天就从Dubbo的SPI机制、服务注册与发现源码及网络通信过程去深入剖析下Dubbo。
28248 9
|
机器学习/深度学习 人工智能 算法
【机器学习】探究Q-Learning通过学习最优策略来解决AI序列决策问题
【机器学习】探究Q-Learning通过学习最优策略来解决AI序列决策问题
557 1
|
消息中间件 测试技术 领域建模
DDD - 一文读懂DDD领域驱动设计
DDD - 一文读懂DDD领域驱动设计
38621 5
|
开发工具 git
Git 中 merge 和 rebase 的区别
$ git pull --rebase和$ git pull区别 是git fetch + git merge FETCH_HEAD的缩写,所以默认情况下,git pull就是先fetch,然后执行merge操作,如果加-rebase参数,就是使用git rebase代替git merge 。
29558 0

热门文章

最新文章