通知弹出窗口添加指向设置窗口的链接

时间:2017-08-25 12:21:56

标签: intellij-idea intellij-plugin

我已经关注了代码,这是从SOF上的一个问题中复制的,

private void showMyMessage() {
        ApplicationManager.getApplication().invokeLater(() -> {
            com.intellij.notification.Notification notification = GROUP_DISPLAY_ID_INFO
                    .createNotification("<html>TLogin failed", " Go to <a href=\"" + "LINK!!!" + "\" target=\"blank\">Settings</a> to setup login data!</html>",
                            NotificationType.ERROR,
                            new NotificationListener.UrlOpeningListener(true));
            Project[] projects = ProjectManager.getInstance().getOpenProjects();
            Notifications.Bus.notify(notification, projects[0]);
        });
    }

我想要一个链接,而不是文字&#34; LINK !!!&#34; ,你有什么建议? 我认为我需要创建操作并将此操作添加到我的论坛 GROUP_DISPLAY_ID_INFO ,但此群组不在xml中,只是代码存在。

2 个答案:

答案 0 :(得分:0)

private static void showMyMessage(String LINK) {       
    ApplicationManager.getApplication().invokeLater(() -> {
        Notification notification = GROUP_DISPLAY_ID_INFO
            .createNotification("<html>TLogin failed", " Go to <a href=\"" + LINK + "\" target=\"blank\">Settings</a> to setup login data!</html>",
            NotificationType.ERROR,
            new NotificationListener.UrlOpeningListener(true));
        Project[] projects = ProjectManager.getInstance().getOpenProjects();
        Notifications.Bus.notify(notification, projects[0]);
    });
}

只需将链接替换为参数,并将其用作showMyMessage("http://google.com")

此外,您不需要在xml中配置组显示ID,只需在代码中写入id。

答案 1 :(得分:0)

我没有收到任何关于这个问题的建议,但经过一段时间的休息,我找到了我需要的东西:

如果以上面的代码为例,需要在新的

之后添加
NotificationListener.UrlOpeningListener(true))

addAction(new NotificationAction("Settings") {
    @Override
    public void actionPerformed (@NotNull AnActionEvent anActionEvent,
            @NotNull Notification notification){
        DataContext dataContext = anActionEvent.getDataContext();
        Project project = PlatformDataKeys.PROJECT.getData(dataContext)
        ShowSettingsUtil.getInstance().showSettingsDialog(project,
                YOURCLASS.class);
    }

其中yourclass.class是实现Configurable interface

的类

现在单击“设置”,您将看到打开的设置窗口(yourclass.class)