Fixed icons for java and compiled classes broken before
This commit is contained in:
+6
-4
@@ -17,27 +17,29 @@
|
||||
package org.jetbrains.kotlin.idea.completion
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger
|
||||
import com.intellij.openapi.util.Iconable
|
||||
import com.intellij.psi.PsiDocCommentOwner
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
import org.jetbrains.kotlin.idea.caches.resolve.ResolutionFacade
|
||||
import org.jetbrains.kotlin.idea.core.completion.DeclarationLookupObject
|
||||
import javax.swing.Icon
|
||||
|
||||
/**
|
||||
* Stores information about resolved descriptor and position of that descriptor.
|
||||
* Position will be used for sorting
|
||||
*/
|
||||
public class DeclarationLookupObjectImpl(
|
||||
public override val descriptor: DeclarationDescriptor?,
|
||||
public override val psiElement: PsiElement?,
|
||||
public abstract class DeclarationLookupObjectImpl(
|
||||
public final override val descriptor: DeclarationDescriptor?,
|
||||
public final override val psiElement: PsiElement?,
|
||||
private val resolutionFacade: ResolutionFacade
|
||||
): DeclarationLookupObject {
|
||||
init {
|
||||
assert(descriptor != null || psiElement != null)
|
||||
}
|
||||
|
||||
override fun toString() = super.toString() + " " + (descriptor ?: psiElement)
|
||||
override fun toString() = super<DeclarationLookupObject>.toString() + " " + (descriptor ?: psiElement)
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return if (descriptor != null) descriptor.getOriginal().hashCode() else psiElement!!.hashCode()
|
||||
|
||||
+19
-12
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
|
||||
import org.jetbrains.kotlin.resolve.DescriptorUtils
|
||||
import org.jetbrains.kotlin.types.JetType
|
||||
import org.jetbrains.kotlin.types.TypeUtils
|
||||
import javax.swing.Icon
|
||||
|
||||
public class LookupElementFactory(
|
||||
private val resolutionFacade: ResolutionFacade,
|
||||
@@ -98,7 +99,9 @@ public class LookupElementFactory(
|
||||
}
|
||||
|
||||
public fun createLookupElementForJavaClass(psiClass: PsiClass): LookupElement {
|
||||
val lookupObject = DeclarationLookupObjectImpl(null, psiClass, resolutionFacade)
|
||||
val lookupObject = object : DeclarationLookupObjectImpl(null, psiClass, resolutionFacade) {
|
||||
override fun getIcon(flags: Int) = psiClass.getIcon(flags)
|
||||
}
|
||||
var element = LookupElementBuilder.create(lookupObject, psiClass.getName())
|
||||
.withInsertHandler(KotlinClassInsertHandler)
|
||||
|
||||
@@ -115,13 +118,7 @@ public class LookupElementFactory(
|
||||
element = element.setStrikeout(true)
|
||||
}
|
||||
|
||||
// add icon in renderElement only to pass presentation.isReal()
|
||||
return object : LookupElementDecorator<LookupElement>(element) {
|
||||
override fun renderElement(presentation: LookupElementPresentation) {
|
||||
super.renderElement(presentation)
|
||||
presentation.setIcon(DefaultLookupItemRenderer.getRawIcon(element, presentation.isReal()))
|
||||
}
|
||||
}
|
||||
return element.withIconFromLookupObject()
|
||||
}
|
||||
|
||||
private fun createLookupElement(
|
||||
@@ -149,11 +146,11 @@ public class LookupElementFactory(
|
||||
iconDeclaration = declaration
|
||||
}
|
||||
val name = nameAndIconDescriptor.getName().asString()
|
||||
val icon = JetDescriptorIconProvider.getIcon(nameAndIconDescriptor, iconDeclaration, Iconable.ICON_FLAG_VISIBILITY)
|
||||
|
||||
val lookupObject = DeclarationLookupObjectImpl(descriptor, declaration, resolutionFacade)
|
||||
val lookupObject = object : DeclarationLookupObjectImpl(descriptor, declaration, resolutionFacade) {
|
||||
override fun getIcon(flags: Int) = JetDescriptorIconProvider.getIcon(nameAndIconDescriptor, iconDeclaration, flags)
|
||||
}
|
||||
var element = LookupElementBuilder.create(lookupObject, name)
|
||||
.withIcon(icon)
|
||||
|
||||
when (descriptor) {
|
||||
is FunctionDescriptor -> {
|
||||
@@ -213,7 +210,17 @@ public class LookupElementFactory(
|
||||
element.putUserData(KotlinCompletionCharFilter.ACCEPT_OPENING_BRACE, Unit)
|
||||
}
|
||||
|
||||
return element
|
||||
return element.withIconFromLookupObject()
|
||||
}
|
||||
|
||||
private fun LookupElement.withIconFromLookupObject(): LookupElement {
|
||||
// add icon in renderElement only to pass presentation.isReal()
|
||||
return object : LookupElementDecorator<LookupElement>(this) {
|
||||
override fun renderElement(presentation: LookupElementPresentation) {
|
||||
super.renderElement(presentation)
|
||||
presentation.setIcon(DefaultLookupItemRenderer.getRawIcon(this@withIconFromLookupObject, presentation.isReal()))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun callableWeight(descriptor: DeclarationDescriptor): CallableWeight? {
|
||||
|
||||
+2
-1
@@ -16,10 +16,11 @@
|
||||
|
||||
package org.jetbrains.kotlin.idea.core.completion
|
||||
|
||||
import com.intellij.openapi.util.Iconable
|
||||
import com.intellij.psi.PsiElement
|
||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||
|
||||
public interface DeclarationLookupObject {
|
||||
public interface DeclarationLookupObject : Iconable {
|
||||
public val psiElement: PsiElement?
|
||||
public val descriptor: DeclarationDescriptor?
|
||||
public val isDeprecated: Boolean
|
||||
|
||||
Reference in New Issue
Block a user