private static PsiDirectory[] suggestMostAppropriateDirectories(PsiPackage psiPackage) { final Project project = psiPackage.getProject(); PsiDirectory[] directories = null; final Editor editor = FileEditorManager.getInstance(project).getSelectedTextEditor(); if (editor != null) { final Document document = editor.getDocument(); final PsiFile psiFile = PsiDocumentManager.getInstance(project).getPsiFile(document); if (psiFile != null) { final Module module = ModuleUtil.findModuleForPsiElement(psiFile); if (module != null) { directories = psiPackage.getDirectories(GlobalSearchScope.moduleWithDependenciesScope(module)); } else { directories = psiPackage.getDirectories( GlobalSearchScope.notScope(GlobalSearchScope.projectScope(project))); } } } if (directories == null || directories.length == 0) { directories = psiPackage.getDirectories(); } return directories; }
public static PsiDirectory[] getIntentionDescriptionsDirs(Module module) { final PsiPackage aPackage = JavaPsiFacade.getInstance(module.getProject()).findPackage(INSPECTION_DESCRIPTIONS); if (aPackage != null) { return aPackage.getDirectories(GlobalSearchScope.moduleWithDependenciesScope(module)); } else { return PsiDirectory.EMPTY_ARRAY; } }
@NotNull public Collection<PsiElement> findClassesForTest(@NotNull PsiElement element) { PsiClass klass = findSourceElement(element); if (klass == null) return Collections.emptySet(); GlobalSearchScope scope; Module module = getModule(element); if (module != null) { scope = GlobalSearchScope.moduleWithDependenciesScope(module); } else { scope = GlobalSearchScope.projectScope(element.getProject()); } PsiShortNamesCache cache = JavaPsiFacade.getInstance(element.getProject()).getShortNamesCache(); List<Pair<PsiClass, Integer>> classesWithWeights = new ArrayList<Pair<PsiClass, Integer>>(); for (Pair<String, Integer> eachNameWithWeight : collectPossibleClassNamesWithWeights(klass.getName())) { for (PsiClass eachClass : cache.getClassesByName(eachNameWithWeight.first, scope)) { if (isTestSubjectClass(eachClass)) { classesWithWeights.add(new Pair<PsiClass, Integer>(eachClass, eachNameWithWeight.second)); } } } Collections.sort( classesWithWeights, new Comparator<Pair<PsiClass, Integer>>() { public int compare(Pair<PsiClass, Integer> o1, Pair<PsiClass, Integer> o2) { int result = o2.second.compareTo(o1.second); if (result == 0) { result = o1.first.getName().compareTo(o2.first.getName()); } return result; } }); List<PsiElement> result = new ArrayList<PsiElement>(); for (Pair<PsiClass, Integer> each : classesWithWeights) { result.add(each.first); } return result; }