KT-1916 Highlight matching items when searching in Override/Implement dialog

#KT-1916 Fixed
This commit is contained in:
Vladimir Rudev
2013-01-13 19:09:10 +04:00
committed by Nikolay Krasko
parent 95e05d7d97
commit 47f6af8e42
@@ -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;
}