Use KotlinCallHierarchyNodeDescriptor for Kotlin declarations only
This commit is contained in:
+5
-37
@@ -12,10 +12,8 @@ import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Iconable;
|
||||
import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.pom.Navigatable;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.presentation.java.ClassPresentationUtil;
|
||||
import com.intellij.psi.util.PsiFormatUtil;
|
||||
import com.intellij.psi.util.PsiFormatUtilBase;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.ui.LayeredIcon;
|
||||
import com.intellij.util.Function;
|
||||
@@ -32,12 +30,9 @@ import org.jetbrains.jet.renderer.DescriptorRenderer;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class KotlinCallHierarchyNodeDescriptor extends HierarchyNodeDescriptor implements Navigatable {
|
||||
private int usageCount = 1;
|
||||
private final List<PsiReference> references = new ArrayList<PsiReference>();
|
||||
private final CallHierarchyNodeDescriptor javaDelegate;
|
||||
|
||||
public KotlinCallHierarchyNodeDescriptor(@NotNull Project project,
|
||||
@@ -57,14 +52,6 @@ public class KotlinCallHierarchyNodeDescriptor extends HierarchyNodeDescriptor i
|
||||
usageCount++;
|
||||
}
|
||||
|
||||
public void addReference(PsiReference reference) {
|
||||
references.add(reference);
|
||||
}
|
||||
|
||||
public boolean hasReference(PsiReference reference) {
|
||||
return references.contains(reference);
|
||||
}
|
||||
|
||||
public final PsiElement getTargetElement(){
|
||||
return myElement;
|
||||
}
|
||||
@@ -132,9 +119,10 @@ public class KotlinCallHierarchyNodeDescriptor extends HierarchyNodeDescriptor i
|
||||
);
|
||||
}
|
||||
|
||||
if (packageName != null && packageName.length() > 0) {
|
||||
myHighlightedText.getEnding().addText(" (" + packageName + ")", HierarchyNodeDescriptor.getPackageNameAttributes());
|
||||
if (packageName == null) {
|
||||
packageName = "";
|
||||
}
|
||||
myHighlightedText.getEnding().addText(" (" + packageName + ")", HierarchyNodeDescriptor.getPackageNameAttributes());
|
||||
|
||||
myName = myHighlightedText.getText();
|
||||
|
||||
@@ -196,32 +184,12 @@ public class KotlinCallHierarchyNodeDescriptor extends HierarchyNodeDescriptor i
|
||||
containerDescriptor = containerDescriptor.getContainingDeclaration();
|
||||
}
|
||||
}
|
||||
else if (element instanceof PsiMember) {
|
||||
PsiMember member = (PsiMember) element;
|
||||
|
||||
if (member instanceof PsiMethod) {
|
||||
elementText = renderPsiMethod((PsiMethod) member);
|
||||
} else if (member instanceof PsiClass) {
|
||||
elementText = ClassPresentationUtil.getNameForClass((PsiClass) member, false);
|
||||
} else return null;
|
||||
|
||||
PsiClass containingClass = member.getContainingClass();
|
||||
if (containingClass != null) {
|
||||
containerText = ClassPresentationUtil.getNameForClass(containingClass, false);
|
||||
}
|
||||
}
|
||||
else return null;
|
||||
|
||||
if (elementText == null) return null;
|
||||
return containerText != null ? containerText + "." + elementText : elementText;
|
||||
}
|
||||
|
||||
private static String renderPsiMethod(PsiMethod member) {
|
||||
return PsiFormatUtil.formatMethod(
|
||||
member, PsiSubstitutor.EMPTY, PsiFormatUtilBase.SHOW_NAME | PsiFormatUtilBase.SHOW_PARAMETERS, PsiFormatUtilBase.SHOW_TYPE
|
||||
);
|
||||
}
|
||||
|
||||
private static String renderNamedFunction(FunctionDescriptor descriptor) {
|
||||
String name = descriptor.getName().asString();
|
||||
String paramTypes = StringUtil.join(
|
||||
|
||||
+6
-14
@@ -89,8 +89,8 @@ public class KotlinCallerMethodsTreeStructure extends KotlinCallTreeStructure {
|
||||
|
||||
private Object[] processCallers(PsiElement element, HierarchyNodeDescriptor descriptor) {
|
||||
SearchScope searchScope = getSearchScope(scopeType, basePsiClass);
|
||||
Map<PsiElement, KotlinCallHierarchyNodeDescriptor> methodToDescriptorMap =
|
||||
new HashMap<PsiElement, KotlinCallHierarchyNodeDescriptor>();
|
||||
Map<PsiElement, HierarchyNodeDescriptor> methodToDescriptorMap =
|
||||
new HashMap<PsiElement, HierarchyNodeDescriptor>();
|
||||
|
||||
Object[] javaCallers = null;
|
||||
if (element instanceof PsiMethod && javaTreeStructure != null) {
|
||||
@@ -118,7 +118,7 @@ public class KotlinCallerMethodsTreeStructure extends KotlinCallTreeStructure {
|
||||
private void processPsiMethodCallers(
|
||||
@Nullable PsiMethod lightMethod,
|
||||
HierarchyNodeDescriptor descriptor,
|
||||
Map<PsiElement, KotlinCallHierarchyNodeDescriptor> methodToDescriptorMap,
|
||||
Map<PsiElement, HierarchyNodeDescriptor> methodToDescriptorMap,
|
||||
SearchScope searchScope,
|
||||
boolean kotlinOnly
|
||||
) {
|
||||
@@ -130,7 +130,7 @@ public class KotlinCallerMethodsTreeStructure extends KotlinCallTreeStructure {
|
||||
private void processJetClassOrObjectCallers(
|
||||
final JetClassOrObject classOrObject,
|
||||
HierarchyNodeDescriptor descriptor,
|
||||
Map<PsiElement, KotlinCallHierarchyNodeDescriptor> methodToDescriptorMap,
|
||||
Map<PsiElement, HierarchyNodeDescriptor> methodToDescriptorMap,
|
||||
SearchScope searchScope
|
||||
) {
|
||||
Processor<PsiReference> processor = new FilteringProcessor<PsiReference>(
|
||||
@@ -147,7 +147,7 @@ public class KotlinCallerMethodsTreeStructure extends KotlinCallTreeStructure {
|
||||
|
||||
private Processor<PsiReference> defaultQueryProcessor(
|
||||
final HierarchyNodeDescriptor descriptor,
|
||||
final Map<PsiElement, KotlinCallHierarchyNodeDescriptor> methodToDescriptorMap,
|
||||
final Map<PsiElement, HierarchyNodeDescriptor> methodToDescriptorMap,
|
||||
final boolean kotlinOnly
|
||||
) {
|
||||
return new ReadActionProcessor<PsiReference>() {
|
||||
@@ -188,15 +188,7 @@ public class KotlinCallerMethodsTreeStructure extends KotlinCallTreeStructure {
|
||||
}
|
||||
|
||||
if (element != null) {
|
||||
KotlinCallHierarchyNodeDescriptor d = methodToDescriptorMap.get(element);
|
||||
if (d == null) {
|
||||
d = new KotlinCallHierarchyNodeDescriptor(myProject, descriptor, element, false, true);
|
||||
methodToDescriptorMap.put(element, d);
|
||||
}
|
||||
else if (!d.hasReference(ref)) {
|
||||
d.incrementUsageCount();
|
||||
}
|
||||
d.addReference(ref);
|
||||
addNodeDescriptorForElement(element, methodToDescriptorMap, descriptor);
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
<node text="KClient.KClient()" base="true">
|
||||
<node text="KClient.KClient() ()" base="true">
|
||||
<node text="KA.KA()(2 usages) ()"/>
|
||||
<node text="KA.foo(String) ()"/>
|
||||
<node text="JA.JA()(2 usages) ()"/>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<node text="KClient.bar()" base="true">
|
||||
<node text="KClient.bar() ()" base="true">
|
||||
<node text="KA.KA()(2 usages) ()"/>
|
||||
<node text="KA.foo(String)(2 usages) ()"/>
|
||||
<node text="JA.JA()(4 usages) ()"/>
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
<node text="KClient" base="true">
|
||||
<node text="KClientBase"/>
|
||||
<node text="KA(4 usages)"/>
|
||||
<node text="KA.foo(String)(2 usages)"/>
|
||||
<node text="KA.name(2 usages)"/>
|
||||
<node text="JA.JA()(4 usages)"/>
|
||||
<node text="JA.foo(String)(2 usages)">
|
||||
<node text="KClient ()" base="true">
|
||||
<node text="KA.name(2 usages) ()"/>
|
||||
<node text="KClientBase ()"/>
|
||||
<node text="packageVal ()"/>
|
||||
<node text="KA.foo(String)(2 usages) ()"/>
|
||||
<node text="JA.JA()(4 usages) ()"/>
|
||||
<node text="JA.foo(String)(2 usages) ()">
|
||||
<node text="PrintStream.println(String) (java.io)"/>
|
||||
</node>
|
||||
<node text="KClient.localFun(String)">
|
||||
<node text="packageFun(String)"/>
|
||||
<node text="KA(4 usages) ()"/>
|
||||
<node text="KClient.localFun(String) ()">
|
||||
<node text="packageFun(String) ()"/>
|
||||
</node>
|
||||
<node text="packageVal"/>
|
||||
<node text="packageFun(String)(2 usages)"/>
|
||||
<node text="packageFun(String)(2 usages) ()"/>
|
||||
</node>
|
||||
|
||||
+8
-8
@@ -1,10 +1,10 @@
|
||||
<node text="KClient" base="true">
|
||||
<node text="packageFun(String)(2 usages)"/>
|
||||
<node text="KA(2 usages)"/>
|
||||
<node text="KA.name"/>
|
||||
<node text="KA.foo(String)"/>
|
||||
<node text="JA.JA()(2 usages)"/>
|
||||
<node text="JA.foo(String)">
|
||||
<node text="KClient ()" base="true">
|
||||
<node text="KA.name ()"/>
|
||||
<node text="JA.JA()(2 usages) ()"/>
|
||||
<node text="JA.foo(String) ()">
|
||||
<node text="PrintStream.println(String) (java.io)"/>
|
||||
</node>
|
||||
</node>
|
||||
<node text="packageFun(String)(2 usages) ()"/>
|
||||
<node text="KA.foo(String) ()"/>
|
||||
<node text="KA(2 usages) ()"/>
|
||||
</node>
|
||||
|
||||
+8
-8
@@ -1,10 +1,10 @@
|
||||
<node text="MyEnum.FIRST" base="true">
|
||||
<node text="packageFun(String)(2 usages)"/>
|
||||
<node text="KA(2 usages)"/>
|
||||
<node text="KA.name"/>
|
||||
<node text="KA.foo(String)"/>
|
||||
<node text="JA.JA()(2 usages)"/>
|
||||
<node text="JA.foo(String)">
|
||||
<node text="MyEnum.FIRST ()" base="true">
|
||||
<node text="KA.name ()"/>
|
||||
<node text="JA.foo(String) ()">
|
||||
<node text="PrintStream.println(String) (java.io)"/>
|
||||
</node>
|
||||
</node>
|
||||
<node text="KA(2 usages) ()"/>
|
||||
<node text="KA.foo(String) ()"/>
|
||||
<node text="packageFun(String)(2 usages) ()"/>
|
||||
<node text="JA.JA()(2 usages) ()"/>
|
||||
</node>
|
||||
|
||||
+11
-11
@@ -1,14 +1,14 @@
|
||||
<node text="KClient.bar()" base="true">
|
||||
<node text="bar.localFun(String)(2 usages)">
|
||||
<node text="packageFun(String)"/>
|
||||
</node>
|
||||
<node text="KA(4 usages)"/>
|
||||
<node text="KA.foo(String)(2 usages)"/>
|
||||
<node text="KA.name(2 usages)"/>
|
||||
<node text="JA.JA()(4 usages)"/>
|
||||
<node text="JA.foo(String)(2 usages)">
|
||||
<node text="KClient.bar() ()" base="true">
|
||||
<node text="KA.foo(String)(2 usages) ()"/>
|
||||
<node text="packageFun(String) ()"/>
|
||||
<node text="packageVal ()"/>
|
||||
<node text="JA.foo(String)(2 usages) ()">
|
||||
<node text="PrintStream.println(String) (java.io)"/>
|
||||
</node>
|
||||
<node text="packageVal"/>
|
||||
<node text="packageFun(String)"/>
|
||||
<node text="JA.JA()(4 usages) ()"/>
|
||||
<node text="bar.localFun(String)(2 usages) ()">
|
||||
<node text="packageFun(String) ()"/>
|
||||
</node>
|
||||
<node text="KA.name(2 usages) ()"/>
|
||||
<node text="KA(4 usages) ()"/>
|
||||
</node>
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
<node text="KClient" base="true">
|
||||
<node text="KClientBase"/>
|
||||
<node text="KA(4 usages)"/>
|
||||
<node text="KA.foo(String)(2 usages)"/>
|
||||
<node text="KA.name(2 usages)"/>
|
||||
<node text="JA.JA()(4 usages)"/>
|
||||
<node text="JA.foo(String)(2 usages)">
|
||||
<node text="KClient ()" base="true">
|
||||
<node text="JA.foo(String)(2 usages) ()">
|
||||
<node text="PrintStream.println(String) (java.io)"/>
|
||||
</node>
|
||||
<node text="KClient.localFun(String)">
|
||||
<node text="packageFun(String)"/>
|
||||
<node text="KA.name(2 usages) ()"/>
|
||||
<node text="packageFun(String)(2 usages) ()"/>
|
||||
<node text="packageVal ()"/>
|
||||
<node text="KA(4 usages) ()"/>
|
||||
<node text="KClientBase ()"/>
|
||||
<node text="KClient.localFun(String) ()">
|
||||
<node text="packageFun(String) ()"/>
|
||||
</node>
|
||||
<node text="packageVal"/>
|
||||
<node text="packageFun(String)(2 usages)"/>
|
||||
<node text="JA.JA()(4 usages) ()"/>
|
||||
<node text="KA.foo(String)(2 usages) ()"/>
|
||||
</node>
|
||||
|
||||
+10
-10
@@ -1,14 +1,14 @@
|
||||
<node text="KClient.bar" base="true">
|
||||
<node text="KClient.localFun(String)(2 usages)">
|
||||
<node text="packageFun(String)"/>
|
||||
<node text="KClient.bar ()" base="true">
|
||||
<node text="KClient.localFun(String)(2 usages) ()">
|
||||
<node text="packageFun(String) ()"/>
|
||||
</node>
|
||||
<node text="KA(4 usages)"/>
|
||||
<node text="KA.foo(String)(2 usages)"/>
|
||||
<node text="KA.name(2 usages)"/>
|
||||
<node text="JA.JA()(4 usages)"/>
|
||||
<node text="JA.foo(String)(2 usages)">
|
||||
<node text="KA.name(2 usages) ()"/>
|
||||
<node text="KA.foo(String)(2 usages) ()"/>
|
||||
<node text="KA(4 usages) ()"/>
|
||||
<node text="packageFun(String) ()"/>
|
||||
<node text="packageVal ()"/>
|
||||
<node text="JA.JA()(4 usages) ()"/>
|
||||
<node text="JA.foo(String)(2 usages) ()">
|
||||
<node text="PrintStream.println(String) (java.io)"/>
|
||||
</node>
|
||||
<node text="packageVal"/>
|
||||
<node text="packageFun(String)"/>
|
||||
</node>
|
||||
|
||||
+4
-4
@@ -1,7 +1,7 @@
|
||||
<node text="KA.KA()" base="true">
|
||||
<node text="KA.KA() ()" base="true">
|
||||
<node text="KClient ()"/>
|
||||
<node text="KClient.bar() ()"/>
|
||||
<node text="KClient.getBar() ()"/>
|
||||
<node text="KClient ()"/>
|
||||
<node text="JA.newKA()"/>
|
||||
<node text="JA"/>
|
||||
<node text="JA.newKA() ()"/>
|
||||
<node text="JA ()"/>
|
||||
</node>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<node text="KA.foo(String)" base="true">
|
||||
<node text="KClient(2 usages) ()"/>
|
||||
<node text="KClient.getBar() ()"/>
|
||||
<node text="KA.foo(String) ()" base="true">
|
||||
<node text="KClient.bar() ()"/>
|
||||
<node text="JA.foo()"/>
|
||||
<node text="JA"/>
|
||||
<node text="KClient.getBar() ()"/>
|
||||
<node text="KClient(2 usages) ()"/>
|
||||
<node text="JA.foo() ()"/>
|
||||
<node text="JA ()"/>
|
||||
</node>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
<node text="KA" base="true">
|
||||
<node text="KClientObj"/>
|
||||
<node text="bar.localFun()"/>
|
||||
<node text="packageFun(String)"/>
|
||||
<node text="KClient"/>
|
||||
<node text="KClient.bar()"/>
|
||||
<node text="main0.kt"/>
|
||||
<node text="JA.newKA()"/>
|
||||
<node text="JA"/>
|
||||
<node text="KClient.bar"/>
|
||||
<node text="KClient"/>
|
||||
<node text="KA ()" base="true">
|
||||
<node text="JA ()"/>
|
||||
<node text="packageFun(String) ()"/>
|
||||
<node text="KClient.bar ()"/>
|
||||
<node text="bar.localFun() ()"/>
|
||||
<node text="main0.kt ()"/>
|
||||
<node text="KClientObj ()"/>
|
||||
<node text="JA.newKA() ()"/>
|
||||
<node text="KClient ()"/>
|
||||
<node text="KClient ()"/>
|
||||
<node text="KClient.bar() ()"/>
|
||||
</node>
|
||||
|
||||
+11
-11
@@ -1,12 +1,12 @@
|
||||
<node text="KA.foo(String)" base="true">
|
||||
<node text="KClient"/>
|
||||
<node text="bar.localFun()"/>
|
||||
<node text="packageFun(String)"/>
|
||||
<node text="KClientObj"/>
|
||||
<node text="KClient.bar"/>
|
||||
<node text="main0.kt"/>
|
||||
<node text="JA.foo()"/>
|
||||
<node text="JA"/>
|
||||
<node text="KClient"/>
|
||||
<node text="KClient.bar()"/>
|
||||
<node text="KA.foo(String) ()" base="true">
|
||||
<node text="KClientObj ()"/>
|
||||
<node text="JA.foo() ()"/>
|
||||
<node text="packageFun(String) ()"/>
|
||||
<node text="KClient ()"/>
|
||||
<node text="KClient ()"/>
|
||||
<node text="bar.localFun() ()"/>
|
||||
<node text="KClient.bar() ()"/>
|
||||
<node text="KClient.bar ()"/>
|
||||
<node text="main0.kt ()"/>
|
||||
<node text="JA ()"/>
|
||||
</node>
|
||||
|
||||
+11
-11
@@ -1,12 +1,12 @@
|
||||
<node text="KA.name" base="true">
|
||||
<node text="packageFun(String)(2 usages)"/>
|
||||
<node text="KClient.bar()(2 usages)"/>
|
||||
<node text="KClient.bar(4 usages)"/>
|
||||
<node text="bar.localFun()(2 usages)"/>
|
||||
<node text="JA.getName()"/>
|
||||
<node text="JA"/>
|
||||
<node text="KClient(2 usages)"/>
|
||||
<node text="KClient(2 usages)"/>
|
||||
<node text="KClientObj(4 usages)"/>
|
||||
<node text="main0.kt(2 usages)"/>
|
||||
<node text="KA.name ()" base="true">
|
||||
<node text="KClient(2 usages) ()"/>
|
||||
<node text="main0.kt(2 usages) ()"/>
|
||||
<node text="KClient(2 usages) ()"/>
|
||||
<node text="packageFun(String)(2 usages) ()"/>
|
||||
<node text="KClientObj(4 usages) ()"/>
|
||||
<node text="bar.localFun()(2 usages) ()"/>
|
||||
<node text="KClient.bar(4 usages) ()"/>
|
||||
<node text="JA.getName() ()"/>
|
||||
<node text="KClient.bar()(2 usages) ()"/>
|
||||
<node text="JA ()"/>
|
||||
</node>
|
||||
|
||||
Reference in New Issue
Block a user