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.codeInsight.template.impl.Variable
import com.intellij.ide.fileTemplates.FileTemplate import com.intellij.ide.fileTemplates.FileTemplate
import com.intellij.ide.fileTemplates.FileTemplateManager import com.intellij.ide.fileTemplates.FileTemplateManager
import com.intellij.ide.util.PsiElementListCellRenderer
import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.ApplicationManager
import com.intellij.openapi.command.CommandProcessor import com.intellij.openapi.command.CommandProcessor
import com.intellij.openapi.editor.Editor 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.checker.JetTypeChecker
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns
import org.jetbrains.jet.plugin.JetBundle 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.DescriptorToDeclarationUtil
import org.jetbrains.jet.plugin.codeInsight.ShortenReferences 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.JetNameSuggester
import org.jetbrains.jet.plugin.refactoring.JetNameValidator import org.jetbrains.jet.plugin.refactoring.JetNameValidator
import org.jetbrains.jet.plugin.references.JetSimpleNameReference import org.jetbrains.jet.plugin.references.JetSimpleNameReference
@@ -71,7 +68,6 @@ import java.util.Collections
import java.util.HashSet import java.util.HashSet
import java.util.HashMap import java.util.HashMap
import java.util.ArrayList import java.util.ArrayList
import java.awt.Component
import java.util.Properties import java.util.Properties
import org.jetbrains.jet.plugin.caches.resolve.getAnalysisResults import org.jetbrains.jet.plugin.caches.resolve.getAnalysisResults
import org.jetbrains.jet.plugin.caches.resolve.getBindingContext import org.jetbrains.jet.plugin.caches.resolve.getBindingContext
@@ -120,23 +116,6 @@ private class ClassCandidate(public val typeCandidate: TypeCandidate, file: JetF
) as JetClass ) 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. * 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 { else {
// class selection // class selection
val list = JBList(ownerTypeCandidates.map { ClassCandidate(it, currentFile, currentFileContext) }) val list = JBList(ownerTypeCandidates.map { ClassCandidate(it, currentFile, currentFileContext) })
val renderer = ClassCandidateListCellRenderer() val renderer = QuickFixUtil.ClassCandidateListCellRenderer()
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION) list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION)
list.setCellRenderer(renderer) list.setCellRenderer(renderer)
val builder = PopupChooserBuilder(list) 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"); * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with 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.google.common.collect.Sets;
import com.intellij.extapi.psi.ASTDelegatePsiElement; import com.intellij.extapi.psi.ASTDelegatePsiElement;
import com.intellij.ide.util.PsiElementListCellRenderer;
import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile; import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiWhiteSpace; 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.JetType;
import org.jetbrains.jet.lang.types.checker.JetTypeChecker; import org.jetbrains.jet.lang.types.checker.JetTypeChecker;
import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage; import org.jetbrains.jet.plugin.caches.resolve.ResolvePackage;
import org.jetbrains.jet.plugin.presentation.JetClassPresenter;
import org.jetbrains.jet.plugin.references.BuiltInsReferenceResolver; import org.jetbrains.jet.plugin.references.BuiltInsReferenceResolver;
import javax.swing.*;
import java.awt.*;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
@@ -233,4 +237,29 @@ public class QuickFixUtil {
return usedParameters; 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);
}
}
} }