void (Throwable e, final Project project, @NotNull VirtualFile vfile) { if (!GroovyDslFileIndex.isActivated(vfile)) { return; } final String exceptionText = ExceptionUtil.getThrowableText(e); LOG.info(exceptionText); GroovyDslFileIndex.disableFile(vfile, DslActivationStatus.Status.ERROR, exceptionText); if (!ApplicationManager.getApplication().isInternal() && !ProjectRootManager.getInstance(project).getFileIndex().isInContent(vfile)) { return; } String errorMessage = e.getMessage(); String content = new HtmlBuilder().append( HtmlChunk.p().addText(errorMessage == null ? e.toString() : errorMessage) ).append( HtmlChunk.p().child( HtmlChunk.link("", GroovyBundle.message("gdsl.investigate.link.label")) ) ).toString(); NOTIFICATION_GROUP.createNotification(GroovyBundle.message("gdsl.error.notification.title"), content, NotificationType.ERROR) .setListener(new NotificationListener() { @Override public void hyperlinkUpdate(@NotNull Notification notification, @NotNull HyperlinkEvent event) { InvestigateFix.analyzeStackTrace(project, exceptionText); notification.expire(); } }) .notify(project); }