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

相关文章
|
XML Java 应用服务中间件
【Java项目】SpringBoot项目完成微信公众号收到用户消息自动回复功能附带视频(超详细)(一)
【Java项目】SpringBoot项目完成微信公众号收到用户消息自动回复功能附带视频(超详细)
532 0
|
人工智能 IDE JavaScript
IntelliJ IDEA 2023.2 主要更新了什么?(图文版)
IntelliJ IDEA 2023.2 主要更新了什么?(图文版)
210 0
IDEA运行 支付宝案例
该博客文章提供了在IntelliJ IDEA中运行支付宝案例的指南,并分享了项目源码的GitHub地址以及使用说明。
|
IDE NoSQL JavaScript
IDEA 又双叒叕 更新 大版本了 , IntelliJ IDEA 2022.3 正式发布,详情 请参考博文
IDEA 又双叒叕 更新 大版本了 , IntelliJ IDEA 2022.3 正式发布,详情 请参考博文
173 0
IDEA 又双叒叕 更新 大版本了 , IntelliJ IDEA 2022.3 正式发布,详情 请参考博文
|
JSON 开发框架 JavaScript
一文带你学会使用SpringBoot+Avue实现短信通知功能(含重要文件代码)
一文带你学会使用SpringBoot+Avue实现短信通知功能(含重要文件代码)
276 0
|
XML Java 数据格式
【Java项目】SpringBoot项目完成微信公众号收到用户消息自动回复功能附带视频(超详细)(二)
【Java项目】SpringBoot项目完成微信公众号收到用户消息自动回复功能附带视频(超详细)
299 0
|
Java Maven 开发工具
首次安装必备!idea最常用设置(配置),让开发更顺手
首次安装必备!idea最常用设置(配置),让开发更顺手
5406 0
首次安装必备!idea最常用设置(配置),让开发更顺手
小储云邮件通知插件配置教程
设置通知配置,配置完成之后,有订单-工单-提现可以通知站长,提升了平台处理效率!
446 0
小储云邮件通知插件配置教程
小储云方糖消息通知插件配置教程
可以对用户的各种操作进行通知,官网:http://sc.ftqq.com,可对新订单,提现,工单,注册,用户升级,评价等相关操作做出通知
487 0
小储云方糖消息通知插件配置教程
|
Java 开发工具 iOS开发
开发工具IDEA——更换主题
日常我们开发使用的工具有很多,IDEA是我们日常进行Java开发比较常用的开发工具之一,如果你是一个编程爱好者或者一个从事软件开发的人员,我们将每天有很大一部分时间看着开发工具进行输出脑袋里面的知识与想法,这时我们就需要一款对于我们眼睛舒服并各项关键词又很清晰的主题来作为我们日常使用,本篇是我比较喜欢用的几个主题,在此分享给大家,欢迎大家也在评论区分享自己的主题。
442 0
开发工具IDEA——更换主题