KT-17916: Import popup does not indicate deprecated classes
This commit is contained in:
@@ -21,11 +21,11 @@ import com.intellij.codeInsight.daemon.impl.ShowAutoImportPass
|
|||||||
import com.intellij.codeInsight.daemon.impl.actions.AddImportAction
|
import com.intellij.codeInsight.daemon.impl.actions.AddImportAction
|
||||||
import com.intellij.codeInsight.hint.HintManager
|
import com.intellij.codeInsight.hint.HintManager
|
||||||
import com.intellij.codeInsight.hint.QuestionAction
|
import com.intellij.codeInsight.hint.QuestionAction
|
||||||
|
import com.intellij.ide.util.DefaultPsiElementCellRenderer
|
||||||
import com.intellij.openapi.application.ApplicationManager
|
import com.intellij.openapi.application.ApplicationManager
|
||||||
import com.intellij.openapi.editor.Editor
|
import com.intellij.openapi.editor.Editor
|
||||||
import com.intellij.openapi.module.ModuleUtilCore
|
import com.intellij.openapi.module.ModuleUtilCore
|
||||||
import com.intellij.openapi.project.Project
|
import com.intellij.openapi.project.Project
|
||||||
import com.intellij.openapi.ui.popup.JBPopupFactory
|
|
||||||
import com.intellij.openapi.ui.popup.PopupStep
|
import com.intellij.openapi.ui.popup.PopupStep
|
||||||
import com.intellij.openapi.ui.popup.util.BaseListPopupStep
|
import com.intellij.openapi.ui.popup.util.BaseListPopupStep
|
||||||
import com.intellij.psi.PsiDocumentManager
|
import com.intellij.psi.PsiDocumentManager
|
||||||
@@ -33,6 +33,8 @@ import com.intellij.psi.PsiElement
|
|||||||
import com.intellij.psi.statistics.StatisticsManager
|
import com.intellij.psi.statistics.StatisticsManager
|
||||||
import com.intellij.psi.util.ProximityLocation
|
import com.intellij.psi.util.ProximityLocation
|
||||||
import com.intellij.psi.util.proximity.PsiProximityComparator
|
import com.intellij.psi.util.proximity.PsiProximityComparator
|
||||||
|
import com.intellij.ui.popup.list.ListPopupImpl
|
||||||
|
import com.intellij.ui.popup.list.PopupListElementRenderer
|
||||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||||
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
import org.jetbrains.kotlin.descriptors.ClassDescriptor
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
@@ -53,6 +55,9 @@ import org.jetbrains.kotlin.name.parentOrNull
|
|||||||
import org.jetbrains.kotlin.psi.KtElement
|
import org.jetbrains.kotlin.psi.KtElement
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
|
import org.jetbrains.kotlin.psi.KtSimpleNameExpression
|
||||||
|
import java.awt.BorderLayout
|
||||||
|
import javax.swing.JPanel
|
||||||
|
import javax.swing.ListCellRenderer
|
||||||
|
|
||||||
internal fun createSingleImportAction(
|
internal fun createSingleImportAction(
|
||||||
project: Project,
|
project: Project,
|
||||||
@@ -155,7 +160,28 @@ class KotlinAddImportAction internal constructor(
|
|||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
JBPopupFactory.getInstance().createListPopup(getVariantSelectionPopup()).showInBestPositionFor(editor)
|
object : ListPopupImpl(getVariantSelectionPopup()) {
|
||||||
|
override fun getListElementRenderer(): ListCellRenderer<AutoImportVariant> {
|
||||||
|
val baseRenderer = super.getListElementRenderer() as PopupListElementRenderer
|
||||||
|
val psiRenderer = DefaultPsiElementCellRenderer()
|
||||||
|
return ListCellRenderer { list, value, index, isSelected, cellHasFocus ->
|
||||||
|
JPanel(BorderLayout()).apply {
|
||||||
|
baseRenderer.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus)
|
||||||
|
add(baseRenderer.nextStepLabel, BorderLayout.EAST)
|
||||||
|
add(
|
||||||
|
psiRenderer.getListCellRendererComponent(
|
||||||
|
list,
|
||||||
|
value.declarationToImport(project),
|
||||||
|
index,
|
||||||
|
isSelected,
|
||||||
|
cellHasFocus
|
||||||
|
)
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}.showInBestPositionFor(editor)
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user