From d7b7ab467a27ec38d61a501ece8ab4d7e97e3dfb Mon Sep 17 00:00:00 2001 From: Anton Kozub Date: Mon, 17 Nov 2025 12:17:54 +0100 Subject: [PATCH] IDEA-382195 Expand all for Spring bean doesn't expand nodes GitOrigin-RevId: b86925e4bb46162d9e0ab3253ace379890a440f6 --- .../newStructureView/StructureViewExpander.kt | 4 ++-- platform/structure-view-impl/api-dump-experimental.txt | 1 + .../structureView/logical/model/ExtendedLogicalObject.kt | 7 ++++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/ide/structureView/newStructureView/StructureViewExpander.kt b/platform/lang-impl/src/com/intellij/ide/structureView/newStructureView/StructureViewExpander.kt index f9d40d16523e..1f6053211616 100644 --- a/platform/lang-impl/src/com/intellij/ide/structureView/newStructureView/StructureViewExpander.kt +++ b/platform/lang-impl/src/com/intellij/ide/structureView/newStructureView/StructureViewExpander.kt @@ -35,11 +35,11 @@ internal class StructureViewExpander(val project: Project): TreeExpander { override fun expandAll() { val tree = getActualTree() ?: return val rootFile = (StructureViewComponent.unwrapValue(tree.model.root) as? PsiElement)?.containingFile?.virtualFile - TreeUtil.promiseExpand(tree, Int.Companion.MAX_VALUE) { path -> + TreeUtil.promiseExpand(tree, Int.MAX_VALUE) { path -> val structureElement = StructureViewComponent.unwrapWrapper(path.lastPathComponent) if (structureElement is LogicalStructureViewTreeElement<*>) { val logicalModel = structureElement.getLogicalAssembledModel().model - if (logicalModel is ExtendedLogicalObject) return@promiseExpand false + if (logicalModel is ExtendedLogicalObject && logicalModel.isTargetToExternalElement()) return@promiseExpand false } val pathObject = StructureViewComponent.unwrapValue(path.lastPathComponent) when (pathObject) { diff --git a/platform/structure-view-impl/api-dump-experimental.txt b/platform/structure-view-impl/api-dump-experimental.txt index 24dce7bb5c8f..70ff6c6faae4 100644 --- a/platform/structure-view-impl/api-dump-experimental.txt +++ b/platform/structure-view-impl/api-dump-experimental.txt @@ -12,6 +12,7 @@ - f:getTreeElement(java.lang.Object):com.intellij.ide.structureView.StructureViewTreeElement *:com.intellij.ide.structureView.logical.model.ExtendedLogicalObject - canRepresentPsiElement(com.intellij.psi.PsiElement):Z +- isTargetToExternalElement():Z - isTheSameParent(java.lang.Object):Z *:com.intellij.ide.structureView.logical.model.LogicalContainer - a:getElements():java.util.List diff --git a/platform/structure-view-impl/src/com/intellij/ide/structureView/logical/model/ExtendedLogicalObject.kt b/platform/structure-view-impl/src/com/intellij/ide/structureView/logical/model/ExtendedLogicalObject.kt index 13447cdc62c5..e59327d4fcac 100644 --- a/platform/structure-view-impl/src/com/intellij/ide/structureView/logical/model/ExtendedLogicalObject.kt +++ b/platform/structure-view-impl/src/com/intellij/ide/structureView/logical/model/ExtendedLogicalObject.kt @@ -5,7 +5,7 @@ import com.intellij.psi.PsiElement import org.jetbrains.annotations.ApiStatus /** - * Logical elements have not implement this class, but they can if they want to add some specific logic + * Logical elements don't have to implement this class, but they can if they want to add some specific logic */ @ApiStatus.Experimental interface ExtendedLogicalObject { @@ -22,4 +22,9 @@ interface ExtendedLogicalObject { */ fun canRepresentPsiElement(psiElement: PsiElement): Boolean = false + /** + * If the element is referencing to element from another file + */ + fun isTargetToExternalElement(): Boolean = false + } \ No newline at end of file