void (@NotNull Range range, boolean isIgnored, @NotNull ColorKey colorKey) { TextRange textRange = DiffUtil.getLinesRange(myEditor.getDocument(), range.getLine1(), range.getLine2(), false); TextAttributes textAttributes = new LineStatusMarkerDrawUtil.DiffStripeTextAttributes(range.getType()); RangeHighlighter highlighter = myEditor.getMarkupModel() .addRangeHighlighter(textRange.getStartOffset(), textRange.getEndOffset(), DiffDrawUtil.LST_LINE_MARKER_LAYER, textAttributes, HighlighterTargetArea.LINES_IN_RANGE); highlighter.setThinErrorStripeMark(true); highlighter.setLineMarkerRenderer(new ActiveGutterRenderer() { @Override public void paint(@NotNull Editor editor, @NotNull Graphics g, @NotNull Rectangle r) { LineStatusMarkerDrawUtil.paintRange(g, myEditor, range, 0, isIgnored); } @Override public boolean canDoAction(@NotNull MouseEvent e) { return LineStatusMarkerDrawUtil.isInsideMarkerArea(e); } @Override public void doAction(@NotNull Editor editor, @NotNull MouseEvent e) { myDispatcher.getMulticaster().selectionInPreviewChanged(colorKey.getExternalName()); } @NotNull @Override public String getAccessibleName() { return DiffBundle.message("vcs.marker.changed.line"); } }); }