IDEA-365690 Logical Structure: clean and document API

GitOrigin-RevId: 8aa5059b709f539873792b126a867a3e0c030ee1
This commit is contained in:
Anton Kozub
2025-02-17 13:38:06 +01:00
committed by intellij-monorepo-bot
parent f673d46b5f
commit a3b3c3a9a1
12 changed files with 59 additions and 97 deletions

View File

@@ -1,9 +1,7 @@
// 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
import org.jetbrains.annotations.ApiStatus
@@ -15,7 +13,7 @@ class ClassOwnerLogicalStructureElementsProvider: LogicalStructureElementsProvid
for (psiClass in parent.classes) {
if (!psiClass.isValid) continue
val convertedModels = LogicalStructureElementsProvider.getProviders(psiClass)
.filterIsInstance<ConvertElementsProvider<PsiClass, Any>>()
.filterIsInstance<PsiClassLogicalElementProvider<Any>>()
.map { it.convert(psiClass) }
.filterNotNull()
if (convertedModels.count() > 0) {

View File

@@ -1,7 +1,16 @@
// 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
abstract class PsiClassLogicalElementProvider<T> : ConvertElementsProvider<PsiClass, T>()
abstract class PsiClassLogicalElementProvider<T> : LogicalStructureElementsProvider<PsiClass, T> {
abstract fun convert(p: PsiClass): T?
override fun getElements(parent: PsiClass): List<T> {
val t = convert(parent)
return if (t != null) listOf(t) else emptyList()
}
}