diff --git a/idea/idea-analysis/resources/messages/KotlinIdeaAnalysisBundle.properties b/idea/idea-analysis/resources/messages/KotlinIdeaAnalysisBundle.properties index e565b70f818..429c4a02beb 100644 --- a/idea/idea-analysis/resources/messages/KotlinIdeaAnalysisBundle.properties +++ b/idea/idea-analysis/resources/messages/KotlinIdeaAnalysisBundle.properties @@ -83,6 +83,7 @@ searching.for.implicit.usages=Searching for implicit usages... class.initializer= object.0=object{0} show.non.public=Show non-public +show.properties=Show properties klib.metadata.short=Klib Metadata function.arguments=arguments:\u0020 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 1d441606391..337c7d5ec4a 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 @@ -15,6 +15,7 @@ import com.intellij.util.PlatformIcons import org.jetbrains.kotlin.idea.KotlinIdeaAnalysisBundle import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject +import org.jetbrains.kotlin.psi.psiUtil.isPropertyParameter class KotlinStructureViewModel(ktFile: KtFile, editor: Editor?) : StructureViewModelBase(ktFile, editor, KotlinStructureViewElement(ktFile, false)), @@ -46,7 +47,7 @@ class KotlinStructureViewModel(ktFile: KtFile, editor: Editor?) : companion object { private val NODE_PROVIDERS = listOf(KotlinInheritedMembersNodeProvider()) - private val FILTERS = arrayOf(PublicElementsFilter) + private val FILTERS = arrayOf(PropertiesFilter, PublicElementsFilter) } } @@ -65,3 +66,21 @@ object PublicElementsFilter : Filter { 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" +} \ No newline at end of file