Fixed icons for java elements
Use Iconable.getIcon() and JetDescriptorIconProvider instead of PsiIconUtil
This commit is contained in:
committed by
Nikolay Krasko
parent
dc379ad96d
commit
511e3d9cd7
@@ -19,11 +19,14 @@ 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.psi.PsiElement;
|
import com.intellij.psi.PsiElement;
|
||||||
|
import com.intellij.psi.PsiMember;
|
||||||
import com.intellij.psi.util.PsiTreeUtil;
|
import com.intellij.psi.util.PsiTreeUtil;
|
||||||
import com.intellij.ui.SimpleColoredComponent;
|
import com.intellij.ui.SimpleColoredComponent;
|
||||||
import com.intellij.util.PsiIconUtil;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||||
|
import org.jetbrains.jet.lang.psi.JetDeclaration;
|
||||||
import org.jetbrains.jet.lang.psi.JetNamedDeclaration;
|
import org.jetbrains.jet.lang.psi.JetNamedDeclaration;
|
||||||
|
import org.jetbrains.jet.plugin.JetDescriptorIconProvider;
|
||||||
import org.jetbrains.jet.resolve.DescriptorRenderer;
|
import org.jetbrains.jet.resolve.DescriptorRenderer;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
@@ -32,10 +35,15 @@ import javax.swing.*;
|
|||||||
* @author yole
|
* @author yole
|
||||||
*/
|
*/
|
||||||
public class DescriptorClassMember implements ClassMemberWithElement {
|
public class DescriptorClassMember implements ClassMemberWithElement {
|
||||||
|
|
||||||
|
public static final String NO_PARENT_FOR = "No parent for ";
|
||||||
|
|
||||||
|
@NotNull
|
||||||
private final DeclarationDescriptor myDescriptor;
|
private final DeclarationDescriptor myDescriptor;
|
||||||
|
@NotNull
|
||||||
private final PsiElement myPsiElement;
|
private final PsiElement myPsiElement;
|
||||||
|
|
||||||
public DescriptorClassMember(PsiElement element, DeclarationDescriptor descriptor) {
|
public DescriptorClassMember(@NotNull PsiElement element, @NotNull DeclarationDescriptor descriptor) {
|
||||||
myPsiElement = element;
|
myPsiElement = element;
|
||||||
myDescriptor = descriptor;
|
myDescriptor = descriptor;
|
||||||
}
|
}
|
||||||
@@ -43,14 +51,28 @@ public class DescriptorClassMember implements ClassMemberWithElement {
|
|||||||
@Override
|
@Override
|
||||||
public MemberChooserObject getParentNodeDelegate() {
|
public MemberChooserObject getParentNodeDelegate() {
|
||||||
final DeclarationDescriptor parent = myDescriptor.getContainingDeclaration();
|
final DeclarationDescriptor parent = myDescriptor.getContainingDeclaration();
|
||||||
return new DescriptorClassMember(PsiTreeUtil.getParentOfType(myPsiElement, JetNamedDeclaration.class), parent);
|
PsiElement declaration;
|
||||||
|
if (myPsiElement instanceof JetDeclaration) {
|
||||||
|
// kotlin
|
||||||
|
declaration = PsiTreeUtil.getStubOrPsiParentOfType(myPsiElement, JetNamedDeclaration.class);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// java or bytecode
|
||||||
|
declaration = ((PsiMember) myPsiElement).getContainingClass();
|
||||||
|
}
|
||||||
|
assert declaration != null : NO_PARENT_FOR + myPsiElement;
|
||||||
|
assert parent != null : NO_PARENT_FOR + myDescriptor;
|
||||||
|
return new DescriptorClassMember(declaration, parent);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void renderTreeNode(SimpleColoredComponent component, JTree tree) {
|
public void renderTreeNode(SimpleColoredComponent component, JTree tree) {
|
||||||
component.append(getText());
|
component.append(getText());
|
||||||
if (myPsiElement.isValid()) {
|
if (myPsiElement.isValid()) {
|
||||||
component.setIcon(PsiIconUtil.getProvidersIcon(myPsiElement, 0));
|
component.setIcon(myPsiElement.getIcon(0));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
component.setIcon(JetDescriptorIconProvider.getBaseIcon(myDescriptor));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,14 +92,14 @@ public class DescriptorClassMember implements ClassMemberWithElement {
|
|||||||
|
|
||||||
DescriptorClassMember that = (DescriptorClassMember) o;
|
DescriptorClassMember that = (DescriptorClassMember) o;
|
||||||
|
|
||||||
if (myDescriptor != null ? !myDescriptor.equals(that.myDescriptor) : that.myDescriptor != null) return false;
|
if (!myDescriptor.equals(that.myDescriptor)) return false;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return myDescriptor != null ? myDescriptor.hashCode() : 0;
|
return myDescriptor.hashCode();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ public abstract class OverrideImplementMethodsHandler implements LanguageCodeIns
|
|||||||
List<DescriptorClassMember> members = new ArrayList<DescriptorClassMember>();
|
List<DescriptorClassMember> members = new ArrayList<DescriptorClassMember>();
|
||||||
for (CallableMemberDescriptor memberDescriptor : missingImplementations) {
|
for (CallableMemberDescriptor memberDescriptor : missingImplementations) {
|
||||||
PsiElement psiElement = BindingContextUtils.descriptorToDeclaration(bindingContext, memberDescriptor);
|
PsiElement psiElement = BindingContextUtils.descriptorToDeclaration(bindingContext, memberDescriptor);
|
||||||
|
assert psiElement != null : "Can not find PsiElement for descriptor " + memberDescriptor;
|
||||||
members.add(new DescriptorClassMember(psiElement, memberDescriptor));
|
members.add(new DescriptorClassMember(psiElement, memberDescriptor));
|
||||||
}
|
}
|
||||||
return members;
|
return members;
|
||||||
|
|||||||
Reference in New Issue
Block a user