diff --git a/java/java-impl/src/com/intellij/ide/util/TreeJavaClassChooserDialog.java b/java/java-impl/src/com/intellij/ide/util/TreeJavaClassChooserDialog.java index f2e120e8c46a..4ad03f8e08a4 100644 --- a/java/java-impl/src/com/intellij/ide/util/TreeJavaClassChooserDialog.java +++ b/java/java-impl/src/com/intellij/ide/util/TreeJavaClassChooserDialog.java @@ -37,21 +37,30 @@ import java.util.List; */ public class TreeJavaClassChooserDialog extends AbstractTreeClassChooserDialog implements TreeClassChooser { public TreeJavaClassChooserDialog(String title, Project project) { - super(title, project); + super(title, project, PsiClass.class); } public TreeJavaClassChooserDialog(String title, Project project, @Nullable PsiClass initialClass) { - super(title, project, initialClass); + super(title, project, PsiClass.class, initialClass); } public TreeJavaClassChooserDialog(String title, Project project, GlobalSearchScope scope, final ClassFilter classFilter, @Nullable PsiClass initialClass) { - super(title, project, scope, createFilter(classFilter), initialClass); + super(title, project, scope, PsiClass.class, createFilter(classFilter), initialClass); } + public TreeJavaClassChooserDialog(String title, + Project project, + GlobalSearchScope scope, + final @Nullable ClassFilter classFilter, + PsiClass baseClass, + @Nullable PsiClass initialClass, boolean isShowMembers) { + super(title, project, scope, PsiClass.class, createFilter(classFilter), baseClass, initialClass, isShowMembers); + } + @Override @Nullable protected PsiClass getSelectedFromTreeUserObject(DefaultMutableTreeNode node) { @@ -61,15 +70,6 @@ public class TreeJavaClassChooserDialog extends AbstractTreeClassChooserDialog

createFilter(@Nullable final ClassFilter classFilter) { + private static Filter createFilter(@Nullable final ClassFilter classFilter) { if (classFilter == null) { return null; } else { - return new Filter() { + return new Filter() { @Override - public boolean isAccepted(Object element) { - return element instanceof PsiClass && classFilter.isAccepted((PsiClass)element); + public boolean isAccepted(PsiClass element) { + return classFilter.isAccepted(element); } }; } diff --git a/platform/lang-impl/src/com/intellij/ide/util/AbstractTreeClassChooserDialog.java b/platform/lang-impl/src/com/intellij/ide/util/AbstractTreeClassChooserDialog.java index cb3088fa7f9a..1bfbac3e4004 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/AbstractTreeClassChooserDialog.java +++ b/platform/lang-impl/src/com/intellij/ide/util/AbstractTreeClassChooserDialog.java @@ -76,36 +76,40 @@ public abstract class AbstractTreeClassChooserDialog private TabbedPaneWrapper myTabbedPane; private ChooseByNamePanel myGotoByNamePanel; private final GlobalSearchScope myScope; - @NotNull private final Filter myClassFilter; - private final T myBaseClass; + @NotNull private final Filter myClassFilter; + private final Class myElementClass; + @Nullable private final T myBaseClass; private T myInitialClass; private final boolean myIsShowMembers; - public AbstractTreeClassChooserDialog(String title, Project project) { - this(title, project, null); + public AbstractTreeClassChooserDialog(String title, Project project, final Class elementClass) { + this(title, project, elementClass, null); } - public AbstractTreeClassChooserDialog(String title, Project project, @Nullable T initialClass) { - this(title, project, GlobalSearchScope.projectScope(project), null, initialClass); + public AbstractTreeClassChooserDialog(String title, Project project, final Class elementClass, @Nullable T initialClass) { + this(title, project, GlobalSearchScope.projectScope(project), elementClass, null, initialClass); } public AbstractTreeClassChooserDialog(String title, Project project, GlobalSearchScope scope, - @Nullable Filter classFilter, + @NotNull Class elementClass, + @Nullable Filter classFilter, @Nullable T initialClass) { - this(title, project, scope, classFilter, null, initialClass, false); + this(title, project, scope, elementClass, classFilter, null, initialClass, false); } public AbstractTreeClassChooserDialog(String title, Project project, GlobalSearchScope scope, - @Nullable Filter classFilter, - T baseClass, + @NotNull Class elementClass, + @Nullable Filter classFilter, + @Nullable T baseClass, @Nullable T initialClass, boolean isShowMembers) { super(project, true); myScope = scope; + myElementClass = elementClass; myClassFilter = classFilter == null ? allFilter() : classFilter; myBaseClass = baseClass; myInitialClass = initialClass; @@ -120,10 +124,10 @@ public abstract class AbstractTreeClassChooserDialog handleSelectionChanged(); } - private Filter allFilter() { - return new Filter() { + private Filter allFilter() { + return new Filter() { @Override - public boolean isAccepted(Object element) { + public boolean isAccepted(T element) { return true; } }; @@ -286,7 +290,7 @@ public abstract class AbstractTreeClassChooserDialog private Set doFilter(Set elements) { Set result = new HashSet(); for (Object o : elements) { - if (getFilter().isAccepted(o)) { + if (myElementClass.isInstance(o) && getFilter().isAccepted((T)o)) { result.add(o); } } @@ -434,7 +438,7 @@ public abstract class AbstractTreeClassChooserDialog } @NotNull - protected Filter getFilter() { + protected Filter getFilter() { return myClassFilter; }