summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/analysis/MethodInheritanceTreeNode.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cuchaz/enigma/analysis/MethodInheritanceTreeNode.java')
-rw-r--r--src/main/java/cuchaz/enigma/analysis/MethodInheritanceTreeNode.java27
1 files changed, 15 insertions, 12 deletions
diff --git a/src/main/java/cuchaz/enigma/analysis/MethodInheritanceTreeNode.java b/src/main/java/cuchaz/enigma/analysis/MethodInheritanceTreeNode.java
index 862bb92..e77b5cc 100644
--- a/src/main/java/cuchaz/enigma/analysis/MethodInheritanceTreeNode.java
+++ b/src/main/java/cuchaz/enigma/analysis/MethodInheritanceTreeNode.java
@@ -24,12 +24,12 @@ public class MethodInheritanceTreeNode extends DefaultMutableTreeNode {
24 24
25 private final Translator translator; 25 private final Translator translator;
26 private MethodEntry entry; 26 private MethodEntry entry;
27 private boolean isImplemented; 27 private boolean implemented;
28 28
29 public MethodInheritanceTreeNode(Translator translator, MethodEntry entry, boolean isImplemented) { 29 public MethodInheritanceTreeNode(Translator translator, MethodEntry entry, boolean implemented) {
30 this.translator = translator; 30 this.translator = translator;
31 this.entry = entry; 31 this.entry = entry;
32 this.isImplemented = isImplemented; 32 this.implemented = implemented;
33 } 33 }
34 34
35 public static MethodInheritanceTreeNode findNode(MethodInheritanceTreeNode node, MethodEntry entry) { 35 public static MethodInheritanceTreeNode findNode(MethodInheritanceTreeNode node, MethodEntry entry) {
@@ -53,11 +53,7 @@ public class MethodInheritanceTreeNode extends DefaultMutableTreeNode {
53 } 53 }
54 54
55 public boolean isImplemented() { 55 public boolean isImplemented() {
56 return this.isImplemented; 56 return this.implemented;
57 }
58
59 public boolean shouldExpand() {
60 return this.isImplemented || !this.isLeaf();
61 } 57 }
62 58
63 @Override 59 @Override
@@ -65,7 +61,7 @@ public class MethodInheritanceTreeNode extends DefaultMutableTreeNode {
65 MethodEntry translatedEntry = translator.translate(entry); 61 MethodEntry translatedEntry = translator.translate(entry);
66 String className = translatedEntry.getContainingClass().getFullName(); 62 String className = translatedEntry.getContainingClass().getFullName();
67 63
68 if (!this.isImplemented) { 64 if (!this.implemented) {
69 return className; 65 return className;
70 } else { 66 } else {
71 String methodName = translatedEntry.getName(); 67 String methodName = translatedEntry.getName();
@@ -73,20 +69,27 @@ public class MethodInheritanceTreeNode extends DefaultMutableTreeNode {
73 } 69 }
74 } 70 }
75 71
76 public void load(JarIndex index) { 72 /**
73 * Returns true if there is sub-node worthy to display.
74 */
75 public boolean load(JarIndex index) {
77 // get all the child nodes 76 // get all the child nodes
78 EntryIndex entryIndex = index.getEntryIndex(); 77 EntryIndex entryIndex = index.getEntryIndex();
79 InheritanceIndex inheritanceIndex = index.getInheritanceIndex(); 78 InheritanceIndex inheritanceIndex = index.getInheritanceIndex();
80 79
80 boolean ret = false;
81 for (ClassEntry inheritorEntry : inheritanceIndex.getChildren(this.entry.getParent())) { 81 for (ClassEntry inheritorEntry : inheritanceIndex.getChildren(this.entry.getParent())) {
82 MethodEntry methodEntry = new MethodEntry(inheritorEntry, this.entry.getName(), this.entry.getDesc()); 82 MethodEntry methodEntry = new MethodEntry(inheritorEntry, this.entry.getName(), this.entry.getDesc());
83 83
84 MethodInheritanceTreeNode node = new MethodInheritanceTreeNode(translator, methodEntry, entryIndex.hasMethod(methodEntry)); 84 MethodInheritanceTreeNode node = new MethodInheritanceTreeNode(translator, methodEntry, entryIndex.hasMethod(methodEntry));
85 node.load(index); 85 boolean childOverride = node.load(index);
86 86
87 if (node.shouldExpand()) { 87 if (childOverride || node.implemented) {
88 this.add(node); 88 this.add(node);
89 ret = true;
89 } 90 }
90 } 91 }
92
93 return ret;
91 } 94 }
92} 95}