From 9482706b81bbc957bfb51fcd767cba6c2abeb6e6 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Mon, 28 Apr 2014 18:32:45 +0400 Subject: [PATCH] Fix compilation on JDK 1.6 and stay compatible with JDK 1.7 Move ClassCandidateListCellRenderer back to Java because JList. JList has one type parameter in 1.7 and no parameters in 1.6. Kotlin unlike Java can't support both cases without modifications in code. --- .../quickfix/CreateFunctionFromUsageFix.kt | 23 +------------- .../jet/plugin/quickfix/QuickFixUtil.java | 31 ++++++++++++++++++- 2 files changed, 31 insertions(+), 23 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/CreateFunctionFromUsageFix.kt b/idea/src/org/jetbrains/jet/plugin/quickfix/CreateFunctionFromUsageFix.kt index a2c63d32e13..8a2b4526729 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/CreateFunctionFromUsageFix.kt +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/CreateFunctionFromUsageFix.kt @@ -25,7 +25,6 @@ import com.intellij.codeInsight.template.impl.TemplateImpl import com.intellij.codeInsight.template.impl.Variable import com.intellij.ide.fileTemplates.FileTemplate import com.intellij.ide.fileTemplates.FileTemplateManager -import com.intellij.ide.util.PsiElementListCellRenderer import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.command.CommandProcessor import com.intellij.openapi.editor.Editor @@ -56,10 +55,8 @@ import org.jetbrains.jet.lang.types.* import org.jetbrains.jet.lang.types.checker.JetTypeChecker import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns import org.jetbrains.jet.plugin.JetBundle -import org.jetbrains.jet.plugin.caches.resolve import org.jetbrains.jet.plugin.codeInsight.DescriptorToDeclarationUtil import org.jetbrains.jet.plugin.codeInsight.ShortenReferences -import org.jetbrains.jet.plugin.presentation.JetClassPresenter import org.jetbrains.jet.plugin.refactoring.JetNameSuggester import org.jetbrains.jet.plugin.refactoring.JetNameValidator import org.jetbrains.jet.plugin.references.JetSimpleNameReference @@ -71,7 +68,6 @@ import java.util.Collections import java.util.HashSet import java.util.HashMap import java.util.ArrayList -import java.awt.Component import java.util.Properties import org.jetbrains.jet.plugin.caches.resolve.getAnalysisResults import org.jetbrains.jet.plugin.caches.resolve.getBindingContext @@ -120,23 +116,6 @@ private class ClassCandidate(public val typeCandidate: TypeCandidate, file: JetF ) as JetClass } -/** - * Renders a ClassCandidate. - */ -private class ClassCandidateListCellRenderer : PsiElementListCellRenderer() { - private val presenter: JetClassPresenter = JetClassPresenter(); - - override fun getElementText(element: JetClass?) = presenter.getPresentation(element!!)?.getPresentableText() - - override fun getContainerText(element: JetClass?, name: String?) = presenter.getPresentation(element!!)?.getLocationString() - - override fun getIconFlags() = 0 - - override fun getListCellRendererComponent(list: JList, value: Any?, index: Int, isSelected: Boolean, cellHasFocus: Boolean): Component? { - return super.getListCellRendererComponent(list, (value as ClassCandidate).jetClass, index, isSelected, cellHasFocus) - } -} - /** * Represents a concrete type or a set of types yet to be inferred from an expression. */ @@ -570,7 +549,7 @@ public class CreateFunctionFromUsageFix internal ( else { // class selection val list = JBList(ownerTypeCandidates.map { ClassCandidate(it, currentFile, currentFileContext) }) - val renderer = ClassCandidateListCellRenderer() + val renderer = QuickFixUtil.ClassCandidateListCellRenderer() list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) list.setCellRenderer(renderer) val builder = PopupChooserBuilder(list) diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixUtil.java b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixUtil.java index e4856bcd64d..e6143cafcad 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixUtil.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2010-2013 JetBrains s.r.o. + * Copyright 2010-2014 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. @@ -18,6 +18,7 @@ package org.jetbrains.jet.plugin.quickfix; import com.google.common.collect.Sets; import com.intellij.extapi.psi.ASTDelegatePsiElement; +import com.intellij.ide.util.PsiElementListCellRenderer; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiWhiteSpace; @@ -37,8 +38,11 @@ import org.jetbrains.jet.lang.types.DeferredType; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.checker.JetTypeChecker; import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage; +import org.jetbrains.jet.plugin.presentation.JetClassPresenter; import org.jetbrains.jet.plugin.references.BuiltInsReferenceResolver; +import javax.swing.*; +import java.awt.*; import java.util.List; import java.util.Set; @@ -233,4 +237,29 @@ public class QuickFixUtil { return usedParameters; } + + static class ClassCandidateListCellRenderer extends PsiElementListCellRenderer { + private final JetClassPresenter presenter = new JetClassPresenter(); + + @Override + public String getElementText(JetClass element) { + return presenter.getPresentation(element).getPresentableText(); + } + + @Nullable + @Override + protected String getContainerText(JetClass element, String name) { + return presenter.getPresentation(element).getLocationString(); + } + + @Override + protected int getIconFlags() { + return 0; + } + + @Override + public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { + return super.getListCellRendererComponent(list, ((ClassCandidate) value).getJetClass(), index, isSelected, cellHasFocus); + } + } }