@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; }
@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; }