diff --git a/platform/lang-impl/src/com/intellij/ide/commander/AbstractListBuilder.java b/platform/lang-impl/src/com/intellij/ide/commander/AbstractListBuilder.java index e4161b8db38a..38290e5798fe 100644 --- a/platform/lang-impl/src/com/intellij/ide/commander/AbstractListBuilder.java +++ b/platform/lang-impl/src/com/intellij/ide/commander/AbstractListBuilder.java @@ -77,7 +77,7 @@ public abstract class AbstractListBuilder { final Object rootElement = myTreeStructure.getRootElement(); final Object[] rootChildren = myTreeStructure.getChildElements(rootElement); - if (!showRoot && rootChildren.length == 1) { + if (!showRoot && rootChildren.length == 1 && shouldEnterSingleTopLevelElement(rootChildren[0])) { myShownRoot = (AbstractTreeNode)rootChildren[0]; } else { @@ -85,6 +85,8 @@ public abstract class AbstractListBuilder { } } + protected abstract boolean shouldEnterSingleTopLevelElement(Object rootChild); + public final void setParentTitle(final JLabel parentTitle) { myParentTitle = parentTitle; } diff --git a/platform/lang-impl/src/com/intellij/ide/commander/ProjectListBuilder.java b/platform/lang-impl/src/com/intellij/ide/commander/ProjectListBuilder.java index bd7c9682fd48..cc59262ca1ad 100644 --- a/platform/lang-impl/src/com/intellij/ide/commander/ProjectListBuilder.java +++ b/platform/lang-impl/src/com/intellij/ide/commander/ProjectListBuilder.java @@ -74,6 +74,11 @@ public class ProjectListBuilder extends AbstractListBuilder { } } + @Override + protected boolean shouldEnterSingleTopLevelElement(Object rootChild) { + return true; + } + protected boolean nodeIsAcceptableForElement(AbstractTreeNode node, Object element) { return Comparing.equal(node.getValue(), element); } diff --git a/platform/lang-impl/src/com/intellij/ide/util/FileStructureDialog.java b/platform/lang-impl/src/com/intellij/ide/util/FileStructureDialog.java index 0da48b8769cf..00819c5c31ca 100644 --- a/platform/lang-impl/src/com/intellij/ide/util/FileStructureDialog.java +++ b/platform/lang-impl/src/com/intellij/ide/util/FileStructureDialog.java @@ -183,6 +183,11 @@ public class FileStructureDialog extends DialogWrapper { PsiFile psiFile = getPsiFile(myProject); boolean showRoot = isShowRoot(psiFile); ProjectListBuilder projectListBuilder = new ProjectListBuilder(myProject, myCommanderPanel, myTreeStructure, null, showRoot) { + @Override + protected boolean shouldEnterSingleTopLevelElement(Object rootChild) { + return myBaseTreeModel.shouldEnterElement(((StructureViewTreeElement)((AbstractTreeNode)rootChild).getValue()).getValue()); + } + protected boolean nodeIsAcceptableForElement(AbstractTreeNode node, Object element) { return Comparing.equal(((StructureViewTreeElement)node.getValue()).getValue(), element); }