Java 类com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReferenceUtil 实例源码

项目:intellij-ce-playground    文件:IconsReferencesContributor.java   
@Override
public boolean execute(@NotNull ReferencesSearch.SearchParameters queryParameters, @NotNull final Processor<PsiReference> consumer) {
  final PsiElement file = queryParameters.getElementToSearch();
  if (file instanceof PsiBinaryFile) {
    final Module module = ApplicationManager.getApplication().runReadAction(new Computable<Module>() {
      @Override
      public Module compute() {
        return ModuleUtilCore.findModuleForPsiElement(file);
      }
    });

    final VirtualFile image = ((PsiBinaryFile)file).getVirtualFile();
    if (isImage(image) && isIconsModule(module)) {
      final Project project = file.getProject();
      final FindModel model = new FindModel();
      final String path = getPathToImage(image, module);
      if (path == null) return true;
      model.setStringToFind(path);
      model.setCaseSensitive(true);
      model.setFindAll(true);
      model.setWholeWordsOnly(true);
      FindInProjectUtil.findUsages(model, project, new Processor<UsageInfo>() {
        @Override
        public boolean process(final UsageInfo usage) {
          ApplicationManager.getApplication().runReadAction(new Runnable() {
            public void run() {
              final PsiElement element = usage.getElement();

              final ProperTextRange textRange = usage.getRangeInElement();
              if (element != null && textRange != null) {
                final PsiElement start = element.findElementAt(textRange.getStartOffset());
                final PsiElement end = element.findElementAt(textRange.getEndOffset());
                if (start != null && end != null) {
                  PsiElement value = PsiTreeUtil.findCommonParent(start, end);
                  if (value instanceof PsiJavaToken) {
                    value = value.getParent();
                  }
                  if (value != null) {
                    final PsiFileReference reference = FileReferenceUtil.findFileReference(value);
                    if (reference != null) {
                      consumer.process(reference);
                    }
                  }
                }
              }
            }
          });
          return true;
        }
      }, new FindUsagesProcessPresentation(new UsageViewPresentation()));
    }
  }
  return true;
}
项目:tools-idea    文件:IconsReferencesContributor.java   
@Override
public boolean execute(@NotNull ReferencesSearch.SearchParameters queryParameters, @NotNull final Processor<PsiReference> consumer) {
  final PsiElement file = queryParameters.getElementToSearch();
  if (file instanceof PsiBinaryFile) {
    final Module module = ApplicationManager.getApplication().runReadAction(new Computable<Module>() {
      @Override
      public Module compute() {
        return ModuleUtilCore.findModuleForPsiElement(file);
      }
    });

    final VirtualFile image = ((PsiBinaryFile)file).getVirtualFile();
    if (isImage(image) && isIconsModule(module)) {
      final Project project = file.getProject();
      final FindModel model = new FindModel();
      final String path = getPathToImage(image, module);
      if (path == null) return true;
      model.setStringToFind(path);
      model.setCaseSensitive(true);
      model.setFindAll(true);
      model.setWholeWordsOnly(true);
      FindInProjectUtil.findUsages(model, FindInProjectUtil.getPsiDirectory(model, project), project, false, new Processor<UsageInfo>() {
        @Override
        public boolean process(final UsageInfo usage) {
          ApplicationManager.getApplication().runReadAction(new Runnable() {
            public void run() {
              final PsiElement element = usage.getElement();

              final ProperTextRange textRange = usage.getRangeInElement();
              if (element != null && textRange != null) {
                final PsiElement start = element.findElementAt(textRange.getStartOffset());
                final PsiElement end = element.findElementAt(textRange.getEndOffset());
                if (start != null && end != null) {
                  PsiElement value = PsiTreeUtil.findCommonParent(start, end);
                  if (value instanceof PsiJavaToken) {
                    value = value.getParent();
                  }
                  if (value != null) {
                    final PsiFileReference reference = FileReferenceUtil.findFileReference(value);
                    if (reference != null) {
                      consumer.process(reference);
                    }
                  }
                }
              }
            }
          });
          return true;
        }
      }, new FindUsagesProcessPresentation());
    }
  }
  return true;
}