IDEA-354490 Fixes

GitOrigin-RevId: 9df9d602e6108746d291f5a2d3d04e3f52d20347
This commit is contained in:
Anton Kozub
2024-09-04 15:23:23 +00:00
committed by intellij-monorepo-bot
parent 245479dba8
commit 882595690b
6 changed files with 67 additions and 50 deletions
@@ -1,13 +1,30 @@
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.lang.java.logical
import com.intellij.ide.structureView.logical.ConvertElementsProvider
import com.intellij.ide.structureView.logical.LogicalStructureElementsProvider
import com.intellij.psi.PsiClass
import com.intellij.psi.PsiClassOwner
class ClassOwnerLogicalStructureElementsProvider: LogicalStructureElementsProvider<PsiClassOwner, PsiClass> {
override fun getElements(parent: PsiClassOwner): List<PsiClass> {
return parent.classes.toList()
class ClassOwnerLogicalStructureElementsProvider: LogicalStructureElementsProvider<PsiClassOwner, Any> {
override fun getElements(parent: PsiClassOwner): List<Any> {
val result = mutableListOf<Any>()
var convertedAtLeastOne = false
for (psiClass in parent.classes) {
val convertedModels = LogicalStructureElementsProvider.getProviders(psiClass)
.filterIsInstance<ConvertElementsProvider<PsiClass, Any>>()
.map { it.convert(psiClass) }
.filterNotNull()
if (convertedModels.count() > 0) {
convertedModels.forEach { result.add(it) }
convertedAtLeastOne = true
}
else {
result.add(psiClass)
}
}
if (convertedAtLeastOne) return result
return emptyList()
}
override fun forLogicalModelClass(): Class<PsiClassOwner> = PsiClassOwner::class.java
}