Structure view: add visibility filter for class properties

#KT-38276 Fixed
This commit is contained in:
Toshiaki Kameyama
2020-05-03 13:44:16 +09:00
committed by Yan Zhulanow
parent e2f0b76e2f
commit 9aaba8c759
2 changed files with 21 additions and 1 deletions
@@ -83,6 +83,7 @@ searching.for.implicit.usages=Searching for implicit usages...
class.initializer=<class initializer> class.initializer=<class initializer>
object.0=object{0} object.0=object{0}
show.non.public=Show non-public show.non.public=Show non-public
show.properties=Show properties
klib.metadata.short=Klib Metadata klib.metadata.short=Klib Metadata
function.arguments=arguments:\u0020 function.arguments=arguments:\u0020
@@ -15,6 +15,7 @@ import com.intellij.util.PlatformIcons
import org.jetbrains.kotlin.idea.KotlinIdeaAnalysisBundle import org.jetbrains.kotlin.idea.KotlinIdeaAnalysisBundle
import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
import org.jetbrains.kotlin.psi.psiUtil.isPropertyParameter
class KotlinStructureViewModel(ktFile: KtFile, editor: Editor?) : class KotlinStructureViewModel(ktFile: KtFile, editor: Editor?) :
StructureViewModelBase(ktFile, editor, KotlinStructureViewElement(ktFile, false)), StructureViewModelBase(ktFile, editor, KotlinStructureViewElement(ktFile, false)),
@@ -46,7 +47,7 @@ class KotlinStructureViewModel(ktFile: KtFile, editor: Editor?) :
companion object { companion object {
private val NODE_PROVIDERS = listOf(KotlinInheritedMembersNodeProvider()) private val NODE_PROVIDERS = listOf(KotlinInheritedMembersNodeProvider())
private val FILTERS = arrayOf<Filter>(PublicElementsFilter) private val FILTERS = arrayOf(PropertiesFilter, PublicElementsFilter)
} }
} }
@@ -65,3 +66,21 @@ object PublicElementsFilter : Filter {
const val ID = "KOTLIN_SHOW_NON_PUBLIC" const val ID = "KOTLIN_SHOW_NON_PUBLIC"
} }
object PropertiesFilter : Filter {
override fun isVisible(treeNode: TreeElement): Boolean {
val element = (treeNode as? KotlinStructureViewElement)?.element
val isProperty = element is KtProperty && element.isMember || element is KtParameter && element.isPropertyParameter()
return !isProperty
}
override fun getPresentation(): ActionPresentation {
return ActionPresentationData(KotlinIdeaAnalysisBundle.message("show.properties"), null, PlatformIcons.PROPERTY_ICON)
}
override fun getName() = ID
override fun isReverted() = true
const val ID = "KOTLIN_SHOW_PROPERTIES"
}