Don't show useless fold icon in structure view (KT-17254, KT-21200)

#KT-21200 In Progress
 #KT-17254 Fixed
This commit is contained in:
Nikolay Krasko
2017-12-14 17:59:31 +03:00
parent 1688f6fdbd
commit c79386594d
@@ -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<Filter>(PublicElementsFilter)