private Editor createEditor()

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;
	}