KtClassOrObjectTreeNode: cleanup after J2K
This commit is contained in:
@@ -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<AbstractTreeNode<*>> {
|
|
||||||
if (classOrObject != null && settings.isShowMembers) {
|
|
||||||
val result = ArrayList<AbstractTreeNode<*>>()
|
|
||||||
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
|
|
||||||
}
|
|
||||||
@@ -30,12 +30,20 @@ import org.jetbrains.kotlin.psi.KtPsiUtil
|
|||||||
class KtClassOrObjectTreeNode(project: Project?, ktClassOrObject: KtClassOrObject, viewSettings: ViewSettings)
|
class KtClassOrObjectTreeNode(project: Project?, ktClassOrObject: KtClassOrObject, viewSettings: ViewSettings)
|
||||||
: AbstractPsiBasedNode<KtClassOrObject>(project, ktClassOrObject, viewSettings) {
|
: AbstractPsiBasedNode<KtClassOrObject>(project, ktClassOrObject, viewSettings) {
|
||||||
|
|
||||||
override fun extractPsiFromValue(): PsiElement? {
|
override fun extractPsiFromValue(): PsiElement? = value
|
||||||
return value
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun getChildrenImpl(): Collection<AbstractTreeNode<*>>? {
|
override fun getChildrenImpl(): Collection<AbstractTreeNode<*>>? {
|
||||||
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<*>) {
|
private fun update(node: AbstractTreeNode<*>) {
|
||||||
@@ -48,7 +56,7 @@ class KtClassOrObjectTreeNode(project: Project?, ktClassOrObject: KtClassOrObjec
|
|||||||
override fun updateImpl(data: PresentationData) {
|
override fun updateImpl(data: PresentationData) {
|
||||||
val classOrObject = value
|
val classOrObject = value
|
||||||
if (classOrObject != null) {
|
if (classOrObject != null) {
|
||||||
data.setPresentableText(classOrObject.name)
|
data.presentableText = classOrObject.name
|
||||||
|
|
||||||
val parent = parent
|
val parent = parent
|
||||||
if (KotlinIconProvider.getMainClass(classOrObject.getContainingKtFile()) != null) {
|
if (KotlinIconProvider.getMainClass(classOrObject.getContainingKtFile()) != null) {
|
||||||
@@ -64,9 +72,7 @@ class KtClassOrObjectTreeNode(project: Project?, ktClassOrObject: KtClassOrObjec
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun isDeprecated(): Boolean {
|
override fun isDeprecated() = KtPsiUtil.isDeprecated(value)
|
||||||
return KtPsiUtil.isDeprecated(value)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun canRepresent(element: Any?): Boolean {
|
override fun canRepresent(element: Any?): Boolean {
|
||||||
if (!isValid) {
|
if (!isValid) {
|
||||||
@@ -76,7 +82,31 @@ class KtClassOrObjectTreeNode(project: Project?, ktClassOrObject: KtClassOrObjec
|
|||||||
return super.canRepresent(element) || canRepresentPsiElement(value, element, settings)
|
return super.canRepresent(element) || canRepresentPsiElement(value, element, settings)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun getWeight(): Int {
|
private fun canRepresentPsiElement(value: PsiElement?, element: Any?, settings: ViewSettings): Boolean {
|
||||||
return 20
|
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
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user