private void findUsagesInEditor(
      @NotNull UsageInfoToUsageConverter.TargetElementsDescriptor descriptor,
      @NotNull FindUsagesHandler handler,
      @NotNull PsiFile scopeFile,
      @NotNull FileSearchScope direction,
      @NotNull final FindUsagesOptions findUsagesOptions,
      @NotNull FileEditor fileEditor) {
    initLastSearchElement(findUsagesOptions, descriptor);

    clearStatusBar();

    final FileEditorLocation currentLocation = fileEditor.getCurrentLocation();

    final UsageSearcher usageSearcher =
        createUsageSearcher(descriptor, handler, findUsagesOptions, scopeFile);
    AtomicBoolean usagesWereFound = new AtomicBoolean();

    Usage fUsage =
        findSiblingUsage(usageSearcher, direction, currentLocation, usagesWereFound, fileEditor);

    if (fUsage != null) {
      fUsage.navigate(true);
      fUsage.selectInEditor();
    } else if (!usagesWereFound.get()) {
      String message =
          getNoUsagesFoundMessage(descriptor.getPrimaryElements()[0])
              + " in "
              + scopeFile.getName();
      showHintOrStatusBarMessage(message, fileEditor);
    } else {
      fileEditor.putUserData(KEY_START_USAGE_AGAIN, VALUE_START_USAGE_AGAIN);
      showHintOrStatusBarMessage(
          getSearchAgainMessage(descriptor.getPrimaryElements()[0], direction), fileEditor);
    }
  }
 private void findUsages(
     @NotNull final UsageInfoToUsageConverter.TargetElementsDescriptor descriptor,
     @NotNull final FindUsagesHandler handler,
     final boolean toSkipUsagePanelWhenOneUsage,
     final boolean toOpenInNewTab,
     @NotNull final FindUsagesOptions findUsagesOptions) {
   List<? extends PsiElement> elements = descriptor.getAllElements();
   if (elements.isEmpty()) {
     throw new AssertionError(handler + " " + findUsagesOptions);
   }
   final UsageTarget[] targets = convertToUsageTargets(elements);
   myAnotherManager.searchAndShowUsages(
       targets,
       new Factory<UsageSearcher>() {
         @Override
         public UsageSearcher create() {
           return createUsageSearcher(descriptor, handler, findUsagesOptions, null);
         }
       },
       !toSkipUsagePanelWhenOneUsage,
       true,
       createPresentation(elements.get(0), findUsagesOptions, toOpenInNewTab),
       null);
   addToHistory(elements, findUsagesOptions);
 }
 private void initLastSearchElement(
     final FindUsagesOptions findUsagesOptions,
     UsageInfoToUsageConverter.TargetElementsDescriptor descriptor) {
   myLastSearchInFileData = createSearchData(descriptor.getAllElements(), findUsagesOptions);
 }