private void doShowDialogAndStartFind( @NotNull PsiElement psiElement, PsiFile scopeFile, FileEditor editor, boolean showDialog, boolean useMaximalScope) { FindUsagesHandler handler = getNewFindUsagesHandler(psiElement, false); if (handler == null) return; boolean singleFile = scopeFile != null; AbstractFindUsagesDialog dialog = handler.getFindUsagesDialog(singleFile, shouldOpenInNewTab(), mustOpenInNewTab()); if (showDialog) { dialog.show(); if (!dialog.isOK()) return; } else { dialog.close(DialogWrapper.OK_EXIT_CODE); } setOpenInNewTab(dialog.isShowInSeparateWindow()); FindUsagesOptions findUsagesOptions = dialog.calcFindUsagesOptions(); if (!showDialog && useMaximalScope) { findUsagesOptions.searchScope = getMaximalScope(handler); } clearFindingNextUsageInFile(); LOG.assertTrue(handler.getPsiElement().isValid()); PsiElement[] primaryElements = handler.getPrimaryElements(); checkNotNull(primaryElements, handler, "getPrimaryElements()"); PsiElement[] secondaryElements = handler.getSecondaryElements(); checkNotNull(secondaryElements, handler, "getSecondaryElements()"); UsageInfoToUsageConverter.TargetElementsDescriptor descriptor = new UsageInfoToUsageConverter.TargetElementsDescriptor(primaryElements, secondaryElements); if (singleFile) { findUsagesOptions = findUsagesOptions.clone(); editor.putUserData(KEY_START_USAGE_AGAIN, null); findUsagesInEditor( descriptor, handler, scopeFile, FileSearchScope.FROM_START, findUsagesOptions, editor); } else { findUsages( descriptor, handler, dialog.isSkipResultsWhenOneUsage(), dialog.isShowInSeparateWindow(), findUsagesOptions); } }
@NotNull public UsageViewPresentation createPresentation( @NotNull FindUsagesHandler handler, @NotNull FindUsagesOptions findUsagesOptions) { PsiElement element = handler.getPsiElement(); LOG.assertTrue(element.isValid()); return createPresentation(element, findUsagesOptions, myToOpenInNewTab); }
@NotNull public static GlobalSearchScope getMaximalScope(@NotNull FindUsagesHandler handler) { PsiElement element = handler.getPsiElement(); Project project = element.getProject(); PsiFile file = element.getContainingFile(); if (file != null && ProjectFileIndex.SERVICE .getInstance(project) .isInContent(file.getViewProvider().getVirtualFile())) { return GlobalSearchScope.projectScope(project); } return GlobalSearchScope.allScope(project); }