summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java')
-rw-r--r--src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java107
1 files changed, 54 insertions, 53 deletions
diff --git a/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java b/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java
index 70cd059..34d2eff 100644
--- a/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java
+++ b/src/main/java/cuchaz/enigma/analysis/FieldReferenceTreeNode.java
@@ -8,72 +8,73 @@
8 * Contributors: 8 * Contributors:
9 * Jeff Martin - initial API and implementation 9 * Jeff Martin - initial API and implementation
10 ******************************************************************************/ 10 ******************************************************************************/
11package cuchaz.enigma.analysis;
12 11
13import javax.swing.tree.DefaultMutableTreeNode; 12package cuchaz.enigma.analysis;
14 13
15import cuchaz.enigma.mapping.BehaviorEntry; 14import cuchaz.enigma.mapping.BehaviorEntry;
16import cuchaz.enigma.mapping.FieldEntry; 15import cuchaz.enigma.mapping.FieldEntry;
17import cuchaz.enigma.mapping.Translator; 16import cuchaz.enigma.mapping.Translator;
18 17
18import javax.swing.tree.DefaultMutableTreeNode;
19
19public class FieldReferenceTreeNode extends DefaultMutableTreeNode implements ReferenceTreeNode<FieldEntry, BehaviorEntry> { 20public class FieldReferenceTreeNode extends DefaultMutableTreeNode implements ReferenceTreeNode<FieldEntry, BehaviorEntry> {
20 21
21 private Translator deobfuscatingTranslator; 22 private Translator deobfuscatingTranslator;
22 private FieldEntry entry; 23 private FieldEntry entry;
23 private EntryReference<FieldEntry, BehaviorEntry> reference; 24 private EntryReference<FieldEntry, BehaviorEntry> reference;
24 private Access access; 25 private Access access;
25 26
26 public FieldReferenceTreeNode(Translator deobfuscatingTranslator, FieldEntry entry) { 27 public FieldReferenceTreeNode(Translator deobfuscatingTranslator, FieldEntry entry) {
27 this.deobfuscatingTranslator = deobfuscatingTranslator; 28 this.deobfuscatingTranslator = deobfuscatingTranslator;
28 this.entry = entry; 29 this.entry = entry;
29 this.reference = null; 30 this.reference = null;
30 } 31 }
31 32
32 private FieldReferenceTreeNode(Translator deobfuscatingTranslator, EntryReference<FieldEntry, BehaviorEntry> reference, Access access) { 33 private FieldReferenceTreeNode(Translator deobfuscatingTranslator, EntryReference<FieldEntry, BehaviorEntry> reference, Access access) {
33 this.deobfuscatingTranslator = deobfuscatingTranslator; 34 this.deobfuscatingTranslator = deobfuscatingTranslator;
34 this.entry = reference.entry; 35 this.entry = reference.entry;
35 this.reference = reference; 36 this.reference = reference;
36 this.access = access; 37 this.access = access;
37 } 38 }
38 39
39 @Override 40 @Override
40 public FieldEntry getEntry() { 41 public FieldEntry getEntry() {
41 return this.entry; 42 return this.entry;
42 } 43 }
43 44
44 @Override 45 @Override
45 public EntryReference<FieldEntry, BehaviorEntry> getReference() { 46 public EntryReference<FieldEntry, BehaviorEntry> getReference() {
46 return this.reference; 47 return this.reference;
47 } 48 }
48 49
49 @Override 50 @Override
50 public String toString() { 51 public String toString() {
51 if (this.reference != null) { 52 if (this.reference != null) {
52 return String.format("%s (%s)", this.deobfuscatingTranslator.translateEntry(this.reference.context), this.access); 53 return String.format("%s (%s)", this.deobfuscatingTranslator.translateEntry(this.reference.context), this.access);
53 } 54 }
54 return this.deobfuscatingTranslator.translateEntry(this.entry).toString(); 55 return this.deobfuscatingTranslator.translateEntry(this.entry).toString();
55 } 56 }
56 57
57 public void load(JarIndex index, boolean recurse) { 58 public void load(JarIndex index, boolean recurse) {
58 // get all the child nodes 59 // get all the child nodes
59 if (this.reference == null) { 60 if (this.reference == null) {
60 for (EntryReference<FieldEntry, BehaviorEntry> reference : index.getFieldReferences(this.entry)) { 61 for (EntryReference<FieldEntry, BehaviorEntry> reference : index.getFieldReferences(this.entry)) {
61 add(new FieldReferenceTreeNode(this.deobfuscatingTranslator, reference, index.getAccess(this.entry))); 62 add(new FieldReferenceTreeNode(this.deobfuscatingTranslator, reference, index.getAccess(this.entry)));
62 } 63 }
63 } else { 64 } else {
64 for (EntryReference<BehaviorEntry, BehaviorEntry> reference : index.getBehaviorReferences(this.reference.context)) { 65 for (EntryReference<BehaviorEntry, BehaviorEntry> reference : index.getBehaviorReferences(this.reference.context)) {
65 add(new BehaviorReferenceTreeNode(this.deobfuscatingTranslator, reference, index.getAccess(this.reference.context))); 66 add(new BehaviorReferenceTreeNode(this.deobfuscatingTranslator, reference, index.getAccess(this.reference.context)));
66 } 67 }
67 } 68 }
68 69
69 if (recurse && children != null) { 70 if (recurse && children != null) {
70 for (Object node : children) { 71 for (Object node : children) {
71 if (node instanceof BehaviorReferenceTreeNode) { 72 if (node instanceof BehaviorReferenceTreeNode) {
72 ((BehaviorReferenceTreeNode) node).load(index, true); 73 ((BehaviorReferenceTreeNode) node).load(index, true);
73 } else if (node instanceof FieldReferenceTreeNode) { 74 } else if (node instanceof FieldReferenceTreeNode) {
74 ((FieldReferenceTreeNode) node).load(index, true); 75 ((FieldReferenceTreeNode) node).load(index, true);
75 } 76 }
76 } 77 }
77 } 78 }
78 } 79 }
79} 80}