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项目完成微信公众号收到用户消息自动回复功能附带视频(超详细)
599 0
|
4月前
|
前端开发 JavaScript Java
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
本文介绍了一个结合SpringBoot和Python的实用功能,旨在监控iPhone 15的库存状态并通过邮件提醒用户。系统采用SpringBoot监听苹果官网API,解析JSON数据判断是否有货,并展示最近的库存记录。此外,还能自动触发Selenium+Python脚本实现自动化购买。文中详细介绍了技术栈、接口分析、邮件配置及自动化脚本的设置方法。该项目不仅适用于熟悉后端开发的人员,也适合回顾Layui和Jquery等前端技术。
59 0
【实操】SpringBoot监听Iphone15邮件提醒,Selenium+Python自动化抢购脚本
|
6月前
|
缓存 IDE Java
IntelliJ IDEA 2023.1 正式发布,看看又多了那些神仙功能..
IntelliJ IDEA 2023.1 正式发布,看看又多了那些神仙功能..
101 0
|
XML Java 数据格式
【Java项目】SpringBoot项目完成微信公众号收到用户消息自动回复功能附带视频(超详细)(二)
【Java项目】SpringBoot项目完成微信公众号收到用户消息自动回复功能附带视频(超详细)
326 0
|
Java Maven 开发工具
首次安装必备!idea最常用设置(配置),让开发更顺手
首次安装必备!idea最常用设置(配置),让开发更顺手
5600 0
首次安装必备!idea最常用设置(配置),让开发更顺手
小储云方糖消息通知插件配置教程
可以对用户的各种操作进行通知,官网:http://sc.ftqq.com,可对新订单,提现,工单,注册,用户升级,评价等相关操作做出通知
492 0
小储云方糖消息通知插件配置教程
小储云邮件通知插件配置教程
设置通知配置,配置完成之后,有订单-工单-提现可以通知站长,提升了平台处理效率!
457 0
小储云邮件通知插件配置教程
|
Python
pycharm小项目 用于桌面提醒(有源码)
pycharm小项目 用于桌面提醒(有源码)
92 0
pycharm小项目 用于桌面提醒(有源码)
|
设计模式 安全 Java
Android事件通知工具:RxBus在Eclipse和AS中的实践
Android事件通知工具:RxBus在Eclipse和AS中的实践
250 0
Android事件通知工具:RxBus在Eclipse和AS中的实践
|
Web App开发 人工智能 JSON
【利器篇】前端40+精选VSCode插件,总有几个你未拥有!(上)
有句话,事半功倍,其必然是借助了某些思想和工具。 VSCode是我们前端开发的武器,本文40+精选插件,让其更加锋利,无坚不摧!
289 0
【利器篇】前端40+精选VSCode插件,总有几个你未拥有!(上)