void (final Collection<? extends PsiReference> refs, final Collection<Pair<PsiElement, TextRange>> stringUsages) { if (ApplicationManager.getApplication().isUnitTestMode()) { runRenameTemplate(TestModeFlags.is(CHOOSE_ALL_OCCURRENCES_IN_TEST) ? stringUsages : new ArrayList<>()); return; } JBPopupFactory.getInstance().createPopupChooserBuilder(List.of(CODE_OCCURRENCES, ALL_OCCURRENCES)) .setItemSelectedCallback(selectedValue -> { if (selectedValue == null) return; dropHighlighters(); final MarkupModel markupModel = myEditor.getMarkupModel(); if (selectedValue.equals(ALL_OCCURRENCES)) { for (Pair<PsiElement, TextRange> pair : stringUsages) { final TextRange textRange = pair.second.shiftRight(pair.first.getTextOffset()); final RangeHighlighter rangeHighlighter = markupModel.addRangeHighlighter( EditorColors.SEARCH_RESULT_ATTRIBUTES, textRange.getStartOffset(), textRange.getEndOffset(), HighlighterLayer.SELECTION - 1, HighlighterTargetArea.EXACT_RANGE); myRangeHighlighters.add(rangeHighlighter); } } for (PsiReference reference : refs) { final TextRange textRange = reference.getAbsoluteRange(); final RangeHighlighter rangeHighlighter = markupModel.addRangeHighlighter( EditorColors.SEARCH_RESULT_ATTRIBUTES, textRange.getStartOffset(), textRange.getEndOffset(), HighlighterLayer.SELECTION - 1, HighlighterTargetArea.EXACT_RANGE); myRangeHighlighters.add(rangeHighlighter); } }) .setTitle(RefactoringBundle.message("rename.string.occurrences.found.title")) .setRenderer(SimpleListCellRenderer.create("", RefactoringBundle::message)) .setMovable(false) .setResizable(false) .setRequestFocus(true) .setItemChosenCallback((selectedValue) -> { RenameUsagesCollector.localSearchInCommentsEvent.log(ALL_OCCURRENCES.equals(selectedValue)); runRenameTemplate(ALL_OCCURRENCES.equals(selectedValue) ? stringUsages : new ArrayList<>()); }) .addListener(new JBPopupListener() { @Override public void onClosed(@NotNull LightweightWindowEvent event) { dropHighlighters(); } }) .createPopup().showInBestPositionFor(myEditor); }