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.
This commit is contained in:
Nikolay Krasko
2014-04-28 18:32:45 +04:00
parent 1415ac1c04
commit 9482706b81
2 changed files with 31 additions and 23 deletions
@@ -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 <code>ClassCandidate</code>.
*/
private class ClassCandidateListCellRenderer : PsiElementListCellRenderer<JetClass>() {
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<out Any?>, 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)
@@ -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<JetClass> {
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);
}
}
}