From 47f6af8e4250d702b4c7a5ffc1b5c0ac5e230f65 Mon Sep 17 00:00:00 2001 From: Vladimir Rudev Date: Sun, 13 Jan 2013 19:09:10 +0400 Subject: [PATCH] KT-1916 Highlight matching items when searching in Override/Implement dialog #KT-1916 Fixed --- .../codeInsight/DescriptorClassMember.java | 37 +++++++------------ 1 file changed, 13 insertions(+), 24 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/DescriptorClassMember.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/DescriptorClassMember.java index 18147dd7857..1b84c8d3aba 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/DescriptorClassMember.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/DescriptorClassMember.java @@ -18,14 +18,13 @@ package org.jetbrains.jet.plugin.codeInsight; import com.intellij.codeInsight.generation.ClassMemberWithElement; import com.intellij.codeInsight.generation.MemberChooserObject; +import com.intellij.codeInsight.generation.MemberChooserObjectBase; import com.intellij.openapi.util.Iconable; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiMember; import com.intellij.psi.util.PsiTreeUtil; -import com.intellij.ui.SimpleColoredComponent; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.psi.JetClass; import org.jetbrains.jet.lang.psi.JetDeclaration; @@ -35,34 +34,35 @@ import org.jetbrains.jet.renderer.DescriptorRenderer; import javax.swing.*; -public class DescriptorClassMember implements ClassMemberWithElement { +public class DescriptorClassMember extends MemberChooserObjectBase implements ClassMemberWithElement { public static final String NO_PARENT_FOR = "No parent for "; @NotNull private final DeclarationDescriptor myDescriptor; @NotNull private final PsiElement myPsiElement; - @Nullable - private final Icon icon; public DescriptorClassMember(@NotNull PsiElement element, @NotNull DeclarationDescriptor descriptor) { + super(DescriptorRenderer.STARTS_FROM_NAME.render(descriptor), getIcon(element, descriptor)); myPsiElement = element; myDescriptor = descriptor; - if (myPsiElement.isValid()) { - boolean isClass = myPsiElement instanceof PsiClass || myPsiElement instanceof JetClass; + } + + private static Icon getIcon(PsiElement element, DeclarationDescriptor declarationDescriptor) { + if (element.isValid()) { + boolean isClass = element instanceof PsiClass || element instanceof JetClass; int flags = isClass ? 0 : Iconable.ICON_FLAG_VISIBILITY; - if (myPsiElement instanceof JetDeclaration) { // kotlin declaration + if (element instanceof JetDeclaration) { // kotlin declaration // visibility and abstraction better detect by a descriptor - icon = JetDescriptorIconProvider.getIcon(myDescriptor, flags); + return JetDescriptorIconProvider.getIcon(declarationDescriptor, flags); } else { // it is better to show java icons for java code - icon = myPsiElement.getIcon(flags); + return element.getIcon(flags); } } - else { - icon = JetDescriptorIconProvider.getIcon(myDescriptor, 0); - } + + return JetDescriptorIconProvider.getIcon(declarationDescriptor, 0); } @Override @@ -82,17 +82,6 @@ public class DescriptorClassMember implements ClassMemberWithElement { return new DescriptorClassMember(declaration, parent); } - @Override - public void renderTreeNode(SimpleColoredComponent component, JTree tree) { - component.append(getText()); - component.setIcon(icon); - } - - @Override - public String getText() { - return DescriptorRenderer.STARTS_FROM_NAME.render(myDescriptor); - } - public DeclarationDescriptor getDescriptor() { return myDescriptor; }