summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/analysis/FieldReferenceTreeNode.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuchaz/enigma/analysis/FieldReferenceTreeNode.java')
-rw-r--r--src/cuchaz/enigma/analysis/FieldReferenceTreeNode.java92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/cuchaz/enigma/analysis/FieldReferenceTreeNode.java b/src/cuchaz/enigma/analysis/FieldReferenceTreeNode.java
new file mode 100644
index 0000000..dd552d6
--- /dev/null
+++ b/src/cuchaz/enigma/analysis/FieldReferenceTreeNode.java
@@ -0,0 +1,92 @@
1/*******************************************************************************
2 * Copyright (c) 2014 Jeff Martin.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the GNU Public License v3.0
5 * which accompanies this distribution, and is available at
6 * http://www.gnu.org/licenses/gpl.html
7 *
8 * Contributors:
9 * Jeff Martin - initial API and implementation
10 ******************************************************************************/
11package cuchaz.enigma.analysis;
12
13import javax.swing.tree.DefaultMutableTreeNode;
14
15import cuchaz.enigma.mapping.BehaviorEntry;
16import cuchaz.enigma.mapping.FieldEntry;
17import cuchaz.enigma.mapping.Translator;
18
19public class FieldReferenceTreeNode extends DefaultMutableTreeNode implements ReferenceTreeNode<FieldEntry>
20{
21 private static final long serialVersionUID = -7934108091928699835L;
22
23 private Translator m_deobfuscatingTranslator;
24 private FieldEntry m_entry;
25 private EntryReference<FieldEntry> m_reference;
26
27 public FieldReferenceTreeNode( Translator deobfuscatingTranslator, FieldEntry entry )
28 {
29 m_deobfuscatingTranslator = deobfuscatingTranslator;
30 m_entry = entry;
31 m_reference = null;
32 }
33
34 private FieldReferenceTreeNode( Translator deobfuscatingTranslator, EntryReference<FieldEntry> reference )
35 {
36 m_deobfuscatingTranslator = deobfuscatingTranslator;
37 m_entry = reference.entry;
38 m_reference = reference;
39 }
40
41 @Override
42 public FieldEntry getEntry( )
43 {
44 return m_entry;
45 }
46
47 @Override
48 public EntryReference<FieldEntry> getReference( )
49 {
50 return m_reference;
51 }
52
53 @Override
54 public String toString( )
55 {
56 if( m_reference != null )
57 {
58 return m_deobfuscatingTranslator.translateEntry( m_reference.caller ).toString();
59 }
60 return m_deobfuscatingTranslator.translateEntry( m_entry ).toString();
61 }
62
63 public void load( JarIndex index, boolean recurse )
64 {
65 // get all the child nodes
66 if( m_reference == null )
67 {
68 for( EntryReference<FieldEntry> reference : index.getFieldReferences( m_entry ) )
69 {
70 add( new FieldReferenceTreeNode( m_deobfuscatingTranslator, reference ) );
71 }
72 }
73 else
74 {
75 for( EntryReference<BehaviorEntry> reference : index.getBehaviorReferences( m_reference.caller ) )
76 {
77 add( new BehaviorReferenceTreeNode( m_deobfuscatingTranslator, reference ) );
78 }
79 }
80
81 if( recurse && children != null )
82 {
83 for( Object node : children )
84 {
85 if( node instanceof BehaviorReferenceTreeNode )
86 {
87 ((BehaviorReferenceTreeNode)node).load( index, true );
88 }
89 }
90 }
91 }
92}