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:
+17
-2
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user