summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/analysis/ClassReferenceTreeNode.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cuchaz/enigma/analysis/ClassReferenceTreeNode.java')
-rw-r--r--src/main/java/cuchaz/enigma/analysis/ClassReferenceTreeNode.java94
1 files changed, 0 insertions, 94 deletions
diff --git a/src/main/java/cuchaz/enigma/analysis/ClassReferenceTreeNode.java b/src/main/java/cuchaz/enigma/analysis/ClassReferenceTreeNode.java
deleted file mode 100644
index 90d8a6c..0000000
--- a/src/main/java/cuchaz/enigma/analysis/ClassReferenceTreeNode.java
+++ /dev/null
@@ -1,94 +0,0 @@
1/*******************************************************************************
2 * Copyright (c) 2015 Jeff Martin.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the GNU Lesser General Public
5 * License v3.0 which accompanies this distribution, and is available at
6 * http://www.gnu.org/licenses/lgpl.html
7 * <p>
8 * Contributors:
9 * Jeff Martin - initial API and implementation
10 ******************************************************************************/
11
12package cuchaz.enigma.analysis;
13
14import com.google.common.collect.Sets;
15import cuchaz.enigma.analysis.index.JarIndex;
16import cuchaz.enigma.analysis.index.ReferenceIndex;
17import cuchaz.enigma.translation.Translator;
18import cuchaz.enigma.translation.representation.entry.ClassEntry;
19import cuchaz.enigma.translation.representation.entry.Entry;
20import cuchaz.enigma.translation.representation.entry.MethodDefEntry;
21
22import javax.swing.tree.DefaultMutableTreeNode;
23import javax.swing.tree.TreeNode;
24import java.util.Set;
25
26public class ClassReferenceTreeNode extends DefaultMutableTreeNode
27 implements ReferenceTreeNode<ClassEntry, MethodDefEntry> {
28
29 private Translator deobfuscatingTranslator;
30 private ClassEntry entry;
31 private EntryReference<ClassEntry, MethodDefEntry> reference;
32
33 public ClassReferenceTreeNode(Translator deobfuscatingTranslator, ClassEntry entry) {
34 this.deobfuscatingTranslator = deobfuscatingTranslator;
35 this.entry = entry;
36 this.reference = null;
37 }
38
39 public ClassReferenceTreeNode(Translator deobfuscatingTranslator, EntryReference<ClassEntry, MethodDefEntry> reference) {
40 this.deobfuscatingTranslator = deobfuscatingTranslator;
41 this.entry = reference.entry;
42 this.reference = reference;
43 }
44
45 @Override
46 public ClassEntry getEntry() {
47 return this.entry;
48 }
49
50 @Override
51 public EntryReference<ClassEntry, MethodDefEntry> getReference() {
52 return this.reference;
53 }
54
55 @Override
56 public String toString() {
57 if (this.reference != null) {
58 return String.format("%s", this.deobfuscatingTranslator.translate(this.reference.context));
59 }
60 return this.deobfuscatingTranslator.translate(this.entry).getFullName();
61 }
62
63 public void load(JarIndex index, boolean recurse) {
64 ReferenceIndex referenceIndex = index.getReferenceIndex();
65
66 // get all the child nodes
67 for (EntryReference<ClassEntry, MethodDefEntry> reference : referenceIndex.getReferencesToClass(this.entry)) {
68 add(new ClassReferenceTreeNode(this.deobfuscatingTranslator, reference));
69 }
70
71 if (recurse && this.children != null) {
72 for (Object child : this.children) {
73 if (child instanceof ClassReferenceTreeNode) {
74 ClassReferenceTreeNode node = (ClassReferenceTreeNode) child;
75
76 // don't recurse into ancestor
77 Set<Entry<?>> ancestors = Sets.newHashSet();
78 TreeNode n = node;
79 while (n.getParent() != null) {
80 n = n.getParent();
81 if (n instanceof ClassReferenceTreeNode) {
82 ancestors.add(((ClassReferenceTreeNode) n).getEntry());
83 }
84 }
85 if (ancestors.contains(node.getEntry())) {
86 continue;
87 }
88
89 node.load(index, true);
90 }
91 }
92 }
93 }
94}