• IDEA插件开发(18)---通知


    主要的设计原则之一是避免使用模式消息框来通知用户错误和其他可能引起用户注意的情况。作为替代,IntelliJ 平台提供了多个非模态通知 UI 选项。

    有关概述,请参阅 IntelliJ 平台 UI 指南中的通知。

    对话框
    在对话框中工作时,不要在按下OK按钮时检查输入的有效性并使用模态对话框通知用户无效数据,推荐的方法是使用DialogWrapper.doValidate()前面描述的方法。

    编辑提示
    对于从编辑器调用的操作(例如重构、导航操作和不同的代码洞察功能),通知用户无法执行操作的最佳方式是使用HintManager类。它的方法showErrorHint()在编辑器上方显示一个浮动弹出窗口,当用户开始在编辑器中执行另一个操作时,它会自动隐藏。其他HintManager方法可用于在编辑器上显示其他类型的非模态通知提示。

    编辑器横幅
    有关 UI 参考,请参阅IntelliJ 平台 UI 指南中的横幅。

    出现在文件编辑器顶部的通知是要求用户采取重要操作的好方法,如果忽略这些操作会影响他们的体验(例如,缺少 SDK、需要用户输入的设置/项目配置)。

    注册一个EditorNotifications.Provider使用com.intellij.editorNotificationProvider扩展点的实现。如果不需要索引访问,它可以实现DumbAware在索引期间显示。

    一个常用的 UI 实现是EditorNotificationPanel.

    “知道了”通知
    用于通过 突出显示重要的新功能/更改功能GotItMessage。有关概述,请参阅IntelliJ 平台 UI 指南中的Got It 工具提示。

    顶级通知(气球)
    显示非模态通知的最通用方法是使用Notifications该类。

    它有两个主要优点:

    用户可以在设置/首选项下控制每种通知类型的显示方式| 外观与行为 | 通知

    所有显示的通知都收集在事件日志工具窗口中,以后可以查看

    有关 UI 参考,请参阅IntelliJ 平台 UI 指南中的Balloon。

    用于显示通知的具体方法是Notifications.Bus.notify()。如果当前项目已知,请使用带Project参数的重载,以便通知显示在其关联的框架中。

    通知的文本可以包含 HTML 标记。

    用于Notification.addAction(AnAction)在内容下方添加链接,NotificationAction使用方便。

    构造函数的groupId参数Notification指定通知类型。用户可以在Settings/Preferences |下选择每种通知类型对应的显示类型 外观与行为 | 通知。

    要指定首选显示类型,您需要使用NotificationGroup创建通知。

    请参阅以下设置步骤,具体取决于目标平台版本。

    2020.3 及更高版本
    2020.3 之前
    NotificationGroup使用扩展点在plugin.xml中注册。com.intellij.notificationGroup用于key提供本地化组显示名称。

    然后可以通过它们的id.

    代码洞察可用于期望通知组的参数id。

    public class MyNotifier {

    public static void notifyError(@Nullable Project project,
    String content) {
    NotificationGroupManager.getInstance()
    .getNotificationGroup(“Custom Notification Group”)
    .createNotification(content, NotificationType.ERROR)
    .notify(project);
    }

    }

  • 相关阅读:
    Maven路上的疑难杂症
    Spring getBean流程
    基础题——数组
    【Mediator模式】C++设计模式——中介者模式
    【一起学Rust · 项目实战】命令行IO项目minigrep——重构优化模块和错误处理
    项目-五子棋双人对战:游戏房间的管理(5)
    python-鼠标绘画线条程序
    SVM-SMO算法
    Oracle函数之分析函数
    15.3反射的应用------ 取得类的结构(血干JAVA系类)
  • 原文地址:https://blog.csdn.net/jiangguilong2000/article/details/126061979