void (final CompilerMessage message) { synchronized (myMessageViewLock) { if (myErrorTreeView != null) { final Navigatable navigatable = message.getNavigatable(); final VirtualFile file = message.getVirtualFile(); final CompilerMessageCategory category = message.getCategory(); final int type = translateCategory(category); final String[] text = convertMessage(message); if (navigatable != null) { final String groupName = file != null ? file.getPresentableUrl() : category.getPresentableText(); myErrorTreeView.addMessage(type, text, groupName, navigatable, message.getExportTextPrefix(), message.getRenderTextPrefix(), message.getVirtualFile()); } else { myErrorTreeView.addMessage(type, text, file, -1, -1, message.getVirtualFile()); } final boolean shouldAutoActivate = !myMessagesAutoActivated && ( CompilerMessageCategory.ERROR.equals(category) || (CompilerMessageCategory.WARNING.equals(category) && !ErrorTreeViewConfiguration.getInstance(myProject).isHideWarnings()) ); if (shouldAutoActivate) { myMessagesAutoActivated = true; activateMessageView(); } } } }