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);
  }
Пример #3
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;
  }