void (Project project, File file) { String url = FileUtil.getUrl(file); boolean fileTypeAvailable = "CVP".equals(FileTypeRegistry.getInstance().getFileTypeByFileName(file.getName()).getName()); String message = MessageFormat.format("Cached values snapshot is captured to<br>" + "{0}.<br>" + (fileTypeAvailable ? "<a href=\"editor:{1}\">Open in Editor</a><br/>" : "") + "<a href=\"{1}\">{2}</a>", file.getPath(), url, RevealFileAction.getActionName()); NotificationGroupManager.getInstance().getNotificationGroup("Cached value profiling") .createNotification(message, NotificationType.INFORMATION) .setListener(new NotificationListener.Adapter() { @Override protected void hyperlinkActivated(@NotNull Notification notification, @NotNull HyperlinkEvent e) { if (e.getDescription().startsWith("editor:")) { VirtualFile virtualFile = project.isDisposed() ? null : LocalFileSystem.getInstance().findFileByPath( VfsUtilCore.urlToPath(VfsUtilCore.fixURLforIDEA(URLUtil.unescapePercentSequences(e.getDescription().substring(7))))); if (virtualFile != null) { new OpenFileDescriptor(project, virtualFile).navigate(true); } } else { RevealFileAction.FILE_SELECTING_LISTENER.hyperlinkUpdate(notification, e); } } }) .notify(project); }