in src/main/java/org/jetbrains/plugins/spotbugs/gui/toolwindow/view/BugTreePanel.java [191:236]
private Editor createEditor(@NotNull final BugInstanceNode bugInstanceNode, @NotNull final PsiFile psiFile, @NotNull final Document document) {
final Editor editor = EditorFactory.getInstance().createEditor(document, _project, psiFile.getFileType(), false);
final EditorColorsScheme scheme = editor.getColorsScheme();
scheme.setEditorFontSize(scheme.getEditorFontSize() - 1);
final EditorSettings editorSettings = editor.getSettings();
editorSettings.setLineMarkerAreaShown(true);
editorSettings.setLineNumbersShown(true);
editorSettings.setFoldingOutlineShown(true);
editorSettings.setAnimatedScrolling(true);
editorSettings.setWheelFontChangeEnabled(true);
editorSettings.setVariableInplaceRenameEnabled(true);
final int lineStart = bugInstanceNode.getSourceLines()[0] - 1;
final int lineEnd = bugInstanceNode.getSourceLines()[1];
PsiElement element = null;
if (lineStart < 0 && lineEnd < 0 || lineStart == 0 && lineEnd == 1) { // find anonymous classes
final PsiElement psiElement = IdeaUtilImpl.findPsiElement(bugInstanceNode.getPsiFile(), bugInstanceNode.getBugInstance(), _project);
if (psiElement != null) {
element = psiElement;
}
} else {
element = IdeaUtilImpl.getElementAtLine(psiFile, lineStart);
}
RangeMarker marker = null;
if (element != null) {
final MethodAnnotation primaryMethod = BugInstanceUtil.getPrimaryMethod(bugInstanceNode.getBugInstance());
if (primaryMethod != null && DebuggerUtilsEx.isLambdaName(primaryMethod.getMethodName())) {
element = IdeaUtilImpl.findOnlyLambdaExpressionOrPsiElement(element);
}
marker = document.createRangeMarker(element.getTextRange());
} else if (lineStart >= 0 && lineEnd >= 0) {
final int lineCount = document.getLineCount();
if (lineStart < lineCount && lineEnd < lineCount) {
marker = document.createRangeMarker(document.getLineStartOffset(lineStart), document.getLineEndOffset(lineEnd));
} // else document was changed
}
if (marker != null) {
editor.getMarkupModel().addRangeHighlighter(marker.getStartOffset(), marker.getEndOffset(), HighlighterLayer.FIRST - 1, new TextAttributes(null, null, JBColor.RED, EffectType.BOXED, Font.BOLD), HighlighterTargetArea.EXACT_RANGE);
}
return editor;
}