PsiElement current = element;
while (current != null) {
- if (current instanceof PsiFileSystemItem) {
- break;
- }
- if (isTopLevelClass(current, baseRootFile)) {
- break;
- }
+
+ if (isSelectable(current)) break;
+ if (isTopLevelClass(current, baseRootFile)) break;
+
current = current.getParent();
}
current = classes[0];
}
}
- return current instanceof PsiClass ? current : baseRootFile;
+
+ return current != null ? current : baseRootFile;
+ }
+
+ private boolean isSelectable(PsiElement element) {
+ if (element instanceof PsiFileSystemItem) return true;
+
+ if (element instanceof PsiField || element instanceof PsiClass || element instanceof PsiMethod) {
+ return !(element.getParent() instanceof PsiAnonymousClass) && !(element instanceof PsiAnonymousClass);
+ }
+
+ return false;
}
@Nullable
if (!(element instanceof PsiClass)) {
return false;
}
+
+ if (element instanceof PsiAnonymousClass) {
+ return false;
+ }
+
final PsiFile parentFile = parentFileOf((PsiClass)element);
// do not select JspClass
return parentFile != null && parentFile.getLanguage() == baseRootFile.getLanguage();
return super.canRepresent(element) || canRepresent(getValue(), element);
}
- private static boolean canRepresent(final PsiClass psiClass, final Object element) {
+ private boolean canRepresent(final PsiClass psiClass, final Object element) {
final PsiFile parentFile = parentFileOf(psiClass);
if (parentFile != null && (parentFile == element || parentFile.getVirtualFile() == element)) return true;
- if (element instanceof PsiElement) {
- PsiFile elementFile = ((PsiElement)element).getContainingFile();
- if (elementFile != null && parentFile != null) {
- return elementFile.equals(parentFile);
+
+ if (!getSettings().isShowMembers()) {
+ if (element instanceof PsiElement) {
+ PsiFile elementFile = ((PsiElement)element).getContainingFile();
+ if (elementFile != null && parentFile != null) {
+ return elementFile.equals(parentFile);
+ }
}
}