private static void highlightInEditor( final Project project, final IncludeDuplicate pair, final Editor editor) { final HighlightManager highlightManager = HighlightManager.getInstance(project); EditorColorsManager colorsManager = EditorColorsManager.getInstance(); TextAttributes attributes = colorsManager.getGlobalScheme().getAttributes(EditorColors.SEARCH_RESULT_ATTRIBUTES); final int startOffset = pair.getStart().getTextRange().getStartOffset(); final int endOffset = pair.getEnd().getTextRange().getEndOffset(); highlightManager.addRangeHighlight(editor, startOffset, endOffset, attributes, true, null); final LogicalPosition logicalPosition = editor.offsetToLogicalPosition(startOffset); editor.getScrollingModel().scrollTo(logicalPosition, ScrollType.MAKE_VISIBLE); }
public static RangeHighlighter highlightRangeComment( Comment.Range range, Editor editor, Project project) { CharSequence charsSequence = editor.getMarkupModel().getDocument().getCharsSequence(); RangeUtils.Offset offset = RangeUtils.rangeToTextOffset(charsSequence, range); TextAttributes attributes = new TextAttributes(); attributes.setBackgroundColor(JBColor.YELLOW); ArrayList<RangeHighlighter> highlighters = Lists.newArrayList(); HighlightManager highlightManager = HighlightManager.getInstance(project); highlightManager.addRangeHighlight( editor, offset.start, offset.end, attributes, false, highlighters); return highlighters.get(0); }
private RangeHighlighter doHightlightRange( final TextRange textRange, final TextAttributes attributes, Set<RangeHighlighter> highlighters) { HighlightManager highlightManager = HighlightManager.getInstance(mySearchResults.getProject()); MarkupModelEx markupModel = (MarkupModelEx) mySearchResults.getEditor().getMarkupModel(); final RangeHighlighter[] candidate = new RangeHighlighter[1]; boolean notFound = markupModel.processRangeHighlightersOverlappingWith( textRange.getStartOffset(), textRange.getEndOffset(), new Processor<RangeHighlighterEx>() { @Override public boolean process(RangeHighlighterEx highlighter) { TextAttributes textAttributes = highlighter.getTextAttributes(); if (highlighter.getUserData(SEARCH_MARKER) != null && textAttributes != null && textAttributes.equals(attributes) && highlighter.getStartOffset() == textRange.getStartOffset() && highlighter.getEndOffset() == textRange.getEndOffset()) { candidate[0] = highlighter; return false; } return true; } }); if (!notFound && highlighters.contains(candidate[0])) { return candidate[0]; } final ArrayList<RangeHighlighter> dummy = new ArrayList<RangeHighlighter>(); highlightManager.addRangeHighlight( mySearchResults.getEditor(), textRange.getStartOffset(), textRange.getEndOffset(), attributes, false, dummy); final RangeHighlighter h = dummy.get(0); highlighters.add(h); h.putUserData(SEARCH_MARKER, YES); return h; }