From c79386594d9905aa331008b425871067839fce38 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Thu, 14 Dec 2017 17:59:31 +0300 Subject: [PATCH] Don't show useless fold icon in structure view (KT-17254, KT-21200) #KT-21200 In Progress #KT-17254 Fixed --- .../structureView/KotlinStructureViewModel.kt | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/structureView/KotlinStructureViewModel.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/structureView/KotlinStructureViewModel.kt index c6450116577..2602ed41107 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/structureView/KotlinStructureViewModel.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/structureView/KotlinStructureViewModel.kt @@ -16,15 +16,20 @@ package org.jetbrains.kotlin.idea.structureView +import com.intellij.ide.structureView.StructureViewModel import com.intellij.ide.structureView.StructureViewModelBase +import com.intellij.ide.structureView.StructureViewTreeElement import com.intellij.ide.util.treeView.smartTree.* import com.intellij.openapi.editor.Editor import com.intellij.util.PlatformIcons +import org.jetbrains.kotlin.psi.KtClassOrObject import org.jetbrains.kotlin.psi.KtDeclaration +import org.jetbrains.kotlin.psi.KtEnumEntry import org.jetbrains.kotlin.psi.KtFile -class KotlinStructureViewModel(ktFile: KtFile, editor: Editor?) : StructureViewModelBase(ktFile, editor, KotlinStructureViewElement(ktFile, false)) { - +class KotlinStructureViewModel(ktFile: KtFile, editor: Editor?) : + StructureViewModelBase(ktFile, editor, KotlinStructureViewElement(ktFile, false)), + StructureViewModel.ElementInfoProvider { init { withSuitableClasses(KtDeclaration::class.java) withSorters(Sorter.ALPHA_SORTER) @@ -34,6 +39,16 @@ class KotlinStructureViewModel(ktFile: KtFile, editor: Editor?) : StructureViewM override fun getFilters() = FILTERS + override fun isAlwaysShowsPlus(element: StructureViewTreeElement): Boolean { + val value = element.value + return (value is KtClassOrObject && value !is KtEnumEntry) || value is KtFile + } + + override fun isAlwaysLeaf(element: StructureViewTreeElement): Boolean { + // Local declarations can in any other declaration + return false + } + companion object { private val NODE_PROVIDERS = listOf(KotlinInheritedMembersNodeProvider()) private val FILTERS = arrayOf(PublicElementsFilter)