KT-1916 Highlight matching items when searching in Override/Implement dialog
#KT-1916 Fixed
This commit is contained in:
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.ClassMemberWithElement;
|
||||||
import com.intellij.codeInsight.generation.MemberChooserObject;
|
import com.intellij.codeInsight.generation.MemberChooserObject;
|
||||||
|
import com.intellij.codeInsight.generation.MemberChooserObjectBase;
|
||||||
import com.intellij.openapi.util.Iconable;
|
import com.intellij.openapi.util.Iconable;
|
||||||
import com.intellij.psi.PsiClass;
|
import com.intellij.psi.PsiClass;
|
||||||
import com.intellij.psi.PsiElement;
|
import com.intellij.psi.PsiElement;
|
||||||
import com.intellij.psi.PsiMember;
|
import com.intellij.psi.PsiMember;
|
||||||
import com.intellij.psi.util.PsiTreeUtil;
|
import com.intellij.psi.util.PsiTreeUtil;
|
||||||
import com.intellij.ui.SimpleColoredComponent;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetClass;
|
import org.jetbrains.jet.lang.psi.JetClass;
|
||||||
import org.jetbrains.jet.lang.psi.JetDeclaration;
|
import org.jetbrains.jet.lang.psi.JetDeclaration;
|
||||||
@@ -35,34 +34,35 @@ import org.jetbrains.jet.renderer.DescriptorRenderer;
|
|||||||
|
|
||||||
import javax.swing.*;
|
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 ";
|
public static final String NO_PARENT_FOR = "No parent for ";
|
||||||
@NotNull
|
@NotNull
|
||||||
private final DeclarationDescriptor myDescriptor;
|
private final DeclarationDescriptor myDescriptor;
|
||||||
@NotNull
|
@NotNull
|
||||||
private final PsiElement myPsiElement;
|
private final PsiElement myPsiElement;
|
||||||
@Nullable
|
|
||||||
private final Icon icon;
|
|
||||||
|
|
||||||
public DescriptorClassMember(@NotNull PsiElement element, @NotNull DeclarationDescriptor descriptor) {
|
public DescriptorClassMember(@NotNull PsiElement element, @NotNull DeclarationDescriptor descriptor) {
|
||||||
|
super(DescriptorRenderer.STARTS_FROM_NAME.render(descriptor), getIcon(element, descriptor));
|
||||||
myPsiElement = element;
|
myPsiElement = element;
|
||||||
myDescriptor = descriptor;
|
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;
|
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
|
// visibility and abstraction better detect by a descriptor
|
||||||
icon = JetDescriptorIconProvider.getIcon(myDescriptor, flags);
|
return JetDescriptorIconProvider.getIcon(declarationDescriptor, flags);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// it is better to show java icons for java code
|
// 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
|
@Override
|
||||||
@@ -82,17 +82,6 @@ public class DescriptorClassMember implements ClassMemberWithElement {
|
|||||||
return new DescriptorClassMember(declaration, parent);
|
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() {
|
public DeclarationDescriptor getDescriptor() {
|
||||||
return myDescriptor;
|
return myDescriptor;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user