IDEA-370122 Logical Structure: support option "Always select opened element"

GitOrigin-RevId: 8f742fadbc74ebfdfe17dc13bc441c7b1ab1e5ce
This commit is contained in:
Anton Kozub
2025-06-26 18:03:16 +00:00
committed by intellij-monorepo-bot
parent 1159d74523
commit 3bbc30089e
7 changed files with 190 additions and 13 deletions
@@ -2,11 +2,16 @@
package com.intellij.lang.java.logical
import com.intellij.ide.structureView.logical.LogicalStructureElementsProvider
import com.intellij.ide.structureView.logical.model.LogicalPsiDescription
import com.intellij.psi.PsiClass
import com.intellij.psi.PsiClassOwner
import com.intellij.psi.PsiElement
import org.jetbrains.annotations.ApiStatus
import org.jetbrains.uast.UClass
import org.jetbrains.uast.toUElement
@ApiStatus.Internal
class ClassOwnerLogicalStructureElementsProvider: LogicalStructureElementsProvider<PsiClassOwner, Any> {
class ClassOwnerLogicalStructureElementsProvider: LogicalStructureElementsProvider<PsiClassOwner, Any>, LogicalPsiDescription {
override fun getElements(parent: PsiClassOwner): List<Any> {
val result = mutableListOf<Any>()
var convertedAtLeastOne = false
@@ -27,4 +32,13 @@ class ClassOwnerLogicalStructureElementsProvider: LogicalStructureElementsProvid
if (convertedAtLeastOne) return result
return emptyList()
}
override fun getSuitableElement(psiElement: PsiElement): PsiElement? {
if (psiElement is PsiClass) return psiElement
return (psiElement.toUElement() as? UClass)?.javaPsi
}
override fun isAskChildren(): Boolean {
return true
}
}