diff --git a/idea/src/org/jetbrains/kotlin/idea/KotlinGotoTargetRenderProvider.kt b/idea/src/org/jetbrains/kotlin/idea/KotlinGotoTargetRenderProvider.kt index 1db283890bc..8c9a155ad11 100644 --- a/idea/src/org/jetbrains/kotlin/idea/KotlinGotoTargetRenderProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/KotlinGotoTargetRenderProvider.kt @@ -22,6 +22,9 @@ import com.intellij.ide.util.PsiElementListCellRenderer import com.intellij.psi.PsiElement import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.idea.presentation.KtLightClassListCellRenderer +import org.jetbrains.kotlin.idea.presentation.DeclarationByModuleRenderer +import org.jetbrains.kotlin.idea.util.isEffectivelyActual +import org.jetbrains.kotlin.psi.KtDeclaration class KotlinGotoTargetRenderProvider : GotoTargetRendererProvider { override fun getRenderer(element: PsiElement, gotoData: GotoTargetHandler.GotoData): PsiElementListCellRenderer<*>? { @@ -30,6 +33,13 @@ class KotlinGotoTargetRenderProvider : GotoTargetRendererProvider { // Need to override default Java render KtLightClassListCellRenderer() } + is KtDeclaration -> { + if (element.isEffectivelyActual()) { + DeclarationByModuleRenderer() + } else { + null + } + } else -> { null } diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/KotlinLineMarkerProvider.kt b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/KotlinLineMarkerProvider.kt index 99c91d10718..c7344030ba6 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/KotlinLineMarkerProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/KotlinLineMarkerProvider.kt @@ -12,7 +12,6 @@ import com.intellij.codeInsight.daemon.impl.MarkerType import com.intellij.codeInsight.daemon.impl.PsiElementListNavigator import com.intellij.codeInsight.navigation.ListBackgroundUpdaterTask import com.intellij.icons.AllIcons -import com.intellij.ide.util.PsiClassOrFunctionalExpressionListCellRenderer import com.intellij.openapi.actionSystem.IdeActions import com.intellij.openapi.editor.colors.CodeInsightColors import com.intellij.openapi.editor.colors.EditorColorsManager @@ -41,6 +40,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.findModuleDescriptor import org.jetbrains.kotlin.idea.core.isInheritable import org.jetbrains.kotlin.idea.core.isOverridable import org.jetbrains.kotlin.idea.core.toDescriptor +import org.jetbrains.kotlin.idea.presentation.DeclarationByModuleRenderer import org.jetbrains.kotlin.idea.search.declarationsSearch.toPossiblyFakeLightMethods import org.jetbrains.kotlin.idea.util.* import org.jetbrains.kotlin.lexer.KtTokens @@ -151,20 +151,14 @@ interface TestableLineMarkerNavigator { fun getTargetsPopupDescriptor(element: PsiElement?): NavigationPopupDescriptor? } -private class SubclassRenderer : PsiClassOrFunctionalExpressionListCellRenderer() { - override fun getComparingObject(element: NavigatablePsiElement?): Comparable { - val baseText = super.getComparingObject(element) - val moduleName = element?.module?.name ?: return baseText - return "$baseText [$moduleName]" - } -} - private val SUBCLASSED_CLASS = MarkerType( "SUBCLASSED_CLASS", { getPsiClass(it)?.let { MarkerType.getSubclassedClassTooltip(it) } }, object : LineMarkerNavigator() { override fun browse(e: MouseEvent?, element: PsiElement?) { - getPsiClass(element)?.let { MarkerType.navigateToSubclassedClass(e, it, SubclassRenderer()) } + getPsiClass(element)?.let { + MarkerType.navigateToSubclassedClass(e, it, DeclarationByModuleRenderer()) + } } }) diff --git a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/KotlinLineMarkerProvider.kt.172 b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/KotlinLineMarkerProvider.kt.172 index e04f51edc84..d8c38bbb60b 100644 --- a/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/KotlinLineMarkerProvider.kt.172 +++ b/idea/src/org/jetbrains/kotlin/idea/highlighter/markers/KotlinLineMarkerProvider.kt.172 @@ -40,6 +40,7 @@ import org.jetbrains.kotlin.idea.caches.resolve.findModuleDescriptor import org.jetbrains.kotlin.idea.core.isInheritable import org.jetbrains.kotlin.idea.core.isOverridable import org.jetbrains.kotlin.idea.core.toDescriptor +import org.jetbrains.kotlin.idea.presentation.DeclarationByModuleRenderer import org.jetbrains.kotlin.idea.search.declarationsSearch.toPossiblyFakeLightMethods import org.jetbrains.kotlin.idea.util.* import org.jetbrains.kotlin.lexer.KtTokens @@ -155,7 +156,7 @@ private val SUBCLASSED_CLASS = MarkerType( { getPsiClass(it)?.let { MarkerType.getSubclassedClassTooltip(it) } }, object : LineMarkerNavigator() { override fun browse(e: MouseEvent?, element: PsiElement?) { - getPsiClass(element)?.let { MarkerType.navigateToSubclassedClass(e, it) } + getPsiClass(element)?.let { MarkerType.navigateToSubclassedClass(e, it, DeclarationByModuleRenderer()) } } }) diff --git a/idea/src/org/jetbrains/kotlin/idea/presentation/DeclarationByModuleRenderer.kt b/idea/src/org/jetbrains/kotlin/idea/presentation/DeclarationByModuleRenderer.kt new file mode 100644 index 00000000000..b18f3d0a259 --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/presentation/DeclarationByModuleRenderer.kt @@ -0,0 +1,16 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.presentation + +import com.intellij.psi.NavigatablePsiElement +import com.intellij.psi.presentation.java.SymbolPresentationUtil + +class DeclarationByModuleRenderer : KtModuleSpecificListCellRenderer() { + override fun getContainerText(element: NavigatablePsiElement?, name: String?) = "" + + override fun getElementText(element: NavigatablePsiElement): String = + SymbolPresentationUtil.getSymbolPresentableText(element) +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/presentation/KtLightClassListCellRenderer.kt b/idea/src/org/jetbrains/kotlin/idea/presentation/KtLightClassListCellRenderer.kt index 40893b05ea9..4198dd188f1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/presentation/KtLightClassListCellRenderer.kt +++ b/idea/src/org/jetbrains/kotlin/idea/presentation/KtLightClassListCellRenderer.kt @@ -16,18 +16,15 @@ package org.jetbrains.kotlin.idea.presentation -import com.intellij.ide.util.PsiElementListCellRenderer import com.intellij.psi.presentation.java.ClassPresentationUtil import org.jetbrains.kotlin.asJava.classes.KtLightClass import org.jetbrains.kotlin.name.FqName -class KtLightClassListCellRenderer : PsiElementListCellRenderer() { +class KtLightClassListCellRenderer : KtModuleSpecificListCellRenderer() { override fun getElementText(element: KtLightClass) = ClassPresentationUtil.getNameForClass(element, false) // TODO: correct text for local, anonymous, enum entries ... etc override fun getContainerText(element: KtLightClass, name: String) = element.qualifiedName?.let { qName -> "(" + FqName(qName).parent().asString() + ")" } ?: "" - - override fun getIconFlags() = 0 } diff --git a/idea/src/org/jetbrains/kotlin/idea/presentation/KtModuleSpecificListCellRenderer.kt b/idea/src/org/jetbrains/kotlin/idea/presentation/KtModuleSpecificListCellRenderer.kt new file mode 100644 index 00000000000..6219c4339af --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/presentation/KtModuleSpecificListCellRenderer.kt @@ -0,0 +1,20 @@ +/* + * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license + * that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.presentation + +import com.intellij.ide.util.PsiElementListCellRenderer +import com.intellij.psi.NavigatablePsiElement +import org.jetbrains.kotlin.idea.util.module + +abstract class KtModuleSpecificListCellRenderer : PsiElementListCellRenderer() { + override fun getIconFlags() = 0 + + override fun getComparingObject(element: T?): Comparable { + val baseText = super.getComparingObject(element) + val moduleName = element?.module?.name ?: return baseText + return "$baseText [$moduleName]" + } +} \ No newline at end of file