summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java
diff options
context:
space:
mode:
authorGravatar jeff2014-08-11 00:02:00 -0400
committerGravatar jeff2014-08-11 00:02:00 -0400
commitbba7c6a19c15bc82946176c79a4eba3612b25f17 (patch)
treef0b55befaa6e7e532e9728dfa6b1c9cb36660594 /src/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java
parentadded backwards navigation (diff)
downloadenigma-fork-bba7c6a19c15bc82946176c79a4eba3612b25f17.tar.gz
enigma-fork-bba7c6a19c15bc82946176c79a4eba3612b25f17.tar.xz
enigma-fork-bba7c6a19c15bc82946176c79a4eba3612b25f17.zip
added method inheritance browsing
also finally fixed method renamer to rename all method implementations in the inheritance hierarchy.
Diffstat (limited to 'src/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java')
-rw-r--r--src/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java99
1 files changed, 99 insertions, 0 deletions
diff --git a/src/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java b/src/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java
new file mode 100644
index 0000000..2ed141f
--- /dev/null
+++ b/src/cuchaz/enigma/analysis/ClassInheritanceTreeNode.java
@@ -0,0 +1,99 @@
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 java.util.List;
14
15import javax.swing.tree.DefaultMutableTreeNode;
16
17import com.google.common.collect.Lists;
18
19import cuchaz.enigma.mapping.ClassEntry;
20import cuchaz.enigma.mapping.Translator;
21
22public class ClassInheritanceTreeNode extends DefaultMutableTreeNode
23{
24 private static final long serialVersionUID = 4432367405826178490L;
25
26 private Translator m_deobfuscatingTranslator;
27 private String m_obfClassName;
28
29 public ClassInheritanceTreeNode( Translator deobfuscatingTranslator, String obfClassName )
30 {
31 m_deobfuscatingTranslator = deobfuscatingTranslator;
32 m_obfClassName = obfClassName;
33 }
34
35 public String getObfClassName( )
36 {
37 return m_obfClassName;
38 }
39
40 public String getDeobfClassName( )
41 {
42 return m_deobfuscatingTranslator.translateClass( m_obfClassName );
43 }
44
45 @Override
46 public String toString( )
47 {
48 String deobfClassName = getDeobfClassName();
49 if( deobfClassName != null )
50 {
51 return deobfClassName;
52 }
53 return m_obfClassName;
54 }
55
56 public void load( Ancestries ancestries, boolean recurse )
57 {
58 // get all the child nodes
59 List<ClassInheritanceTreeNode> nodes = Lists.newArrayList();
60 for( String subclassName : ancestries.getSubclasses( m_obfClassName ) )
61 {
62 nodes.add( new ClassInheritanceTreeNode( m_deobfuscatingTranslator, subclassName ) );
63 }
64
65 // add them to this node
66 for( ClassInheritanceTreeNode node : nodes )
67 {
68 this.add( node );
69 }
70
71 if( recurse )
72 {
73 for( ClassInheritanceTreeNode node : nodes )
74 {
75 node.load( ancestries, true );
76 }
77 }
78 }
79
80 public static ClassInheritanceTreeNode findNode( ClassInheritanceTreeNode node, ClassEntry entry )
81 {
82 // is this the node?
83 if( node.getObfClassName().equals( entry.getName() ) )
84 {
85 return node;
86 }
87
88 // recurse
89 for( int i=0; i<node.getChildCount(); i++ )
90 {
91 ClassInheritanceTreeNode foundNode = findNode( (ClassInheritanceTreeNode)node.getChildAt( i ), entry );
92 if( foundNode != null )
93 {
94 return foundNode;
95 }
96 }
97 return null;
98 }
99}