From 1cf79d949521ae6e15bc4d12ec04ada6545ab1fe Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Wed, 24 Aug 2016 20:47:30 +0200 Subject: [PATCH] KtClassOrObjectTreeNode: cleanup after J2K --- .../idea/projectView/KotlinProjectViewUtil.kt | 72 ------------------- .../projectView/KtClassOrObjectTreeNode.kt | 50 ++++++++++--- 2 files changed, 40 insertions(+), 82 deletions(-) delete mode 100644 idea/src/org/jetbrains/kotlin/idea/projectView/KotlinProjectViewUtil.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/projectView/KotlinProjectViewUtil.kt b/idea/src/org/jetbrains/kotlin/idea/projectView/KotlinProjectViewUtil.kt deleted file mode 100644 index 9e08b977baf..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/projectView/KotlinProjectViewUtil.kt +++ /dev/null @@ -1,72 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.idea.projectView - -import com.intellij.ide.projectView.ViewSettings -import com.intellij.ide.util.treeView.AbstractTreeNode -import com.intellij.openapi.project.Project -import com.intellij.psi.PsiElement -import org.jetbrains.kotlin.psi.KtClassOrObject -import java.util.* - -fun getClassOrObjectChildren( - classOrObject: KtClassOrObject?, project: Project?, - settings: ViewSettings): Collection> { - if (classOrObject != null && settings.isShowMembers) { - val result = ArrayList>() - val declarations = classOrObject.declarations - for (declaration in declarations) { - if (declaration is KtClassOrObject) { - result.add(KtClassOrObjectTreeNode(project, declaration, settings)) - } - else { - result.add(KtDeclarationTreeNode(project, declaration, settings)) - } - } - - return result - } - else { - return emptyList() - } -} - -fun canRepresentPsiElement(value: PsiElement?, element: Any?, settings: ViewSettings): Boolean { - if (value == null || !value.isValid) { - return false - } - - val file = value.containingFile - if (file != null && (file === element || file.virtualFile === element)) { - return true - } - - if (value === element) { - return true - } - - if (!settings.isShowMembers) { - if (element is PsiElement && element.containingFile != null) { - val elementFile = element.containingFile - if (elementFile != null && file != null) { - return elementFile == file - } - } - } - - return false -} diff --git a/idea/src/org/jetbrains/kotlin/idea/projectView/KtClassOrObjectTreeNode.kt b/idea/src/org/jetbrains/kotlin/idea/projectView/KtClassOrObjectTreeNode.kt index 3f2bbe1587e..1b0a131beba 100644 --- a/idea/src/org/jetbrains/kotlin/idea/projectView/KtClassOrObjectTreeNode.kt +++ b/idea/src/org/jetbrains/kotlin/idea/projectView/KtClassOrObjectTreeNode.kt @@ -30,12 +30,20 @@ import org.jetbrains.kotlin.psi.KtPsiUtil class KtClassOrObjectTreeNode(project: Project?, ktClassOrObject: KtClassOrObject, viewSettings: ViewSettings) : AbstractPsiBasedNode(project, ktClassOrObject, viewSettings) { - override fun extractPsiFromValue(): PsiElement? { - return value - } + override fun extractPsiFromValue(): PsiElement? = value override fun getChildrenImpl(): Collection>? { - return getClassOrObjectChildren(value, project, settings) + if (value != null && settings.isShowMembers) { + return value.declarations.map { declaration -> + if (declaration is KtClassOrObject) + KtClassOrObjectTreeNode(project, declaration, settings) + else + KtDeclarationTreeNode(project, declaration, settings) + } + } + else { + return emptyList() + } } private fun update(node: AbstractTreeNode<*>) { @@ -48,7 +56,7 @@ class KtClassOrObjectTreeNode(project: Project?, ktClassOrObject: KtClassOrObjec override fun updateImpl(data: PresentationData) { val classOrObject = value if (classOrObject != null) { - data.setPresentableText(classOrObject.name) + data.presentableText = classOrObject.name val parent = parent if (KotlinIconProvider.getMainClass(classOrObject.getContainingKtFile()) != null) { @@ -64,9 +72,7 @@ class KtClassOrObjectTreeNode(project: Project?, ktClassOrObject: KtClassOrObjec } } - override fun isDeprecated(): Boolean { - return KtPsiUtil.isDeprecated(value) - } + override fun isDeprecated() = KtPsiUtil.isDeprecated(value) override fun canRepresent(element: Any?): Boolean { if (!isValid) { @@ -76,7 +82,31 @@ class KtClassOrObjectTreeNode(project: Project?, ktClassOrObject: KtClassOrObjec return super.canRepresent(element) || canRepresentPsiElement(value, element, settings) } - override fun getWeight(): Int { - return 20 + private fun canRepresentPsiElement(value: PsiElement?, element: Any?, settings: ViewSettings): Boolean { + if (value == null || !value.isValid) { + return false + } + + val file = value.containingFile + if (file != null && (file === element || file.virtualFile === element)) { + return true + } + + if (value === element) { + return true + } + + if (!settings.isShowMembers) { + if (element is PsiElement && element.containingFile != null) { + val elementFile = element.containingFile + if (elementFile != null && file != null) { + return elementFile == file + } + } + } + + return false } + + override fun getWeight() = 20 }