summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/gui/GuiController.java
diff options
context:
space:
mode:
authorGravatar jeff2014-08-13 00:22:12 -0400
committerGravatar jeff2014-08-13 00:22:12 -0400
commitcc74d0e62cfdcf14c5918234f69d587d264807ed (patch)
tree7a11bd6af9b7cd2f28c3dbd43a281b4036464f77 /src/cuchaz/enigma/gui/GuiController.java
parentgot simple method call graph working! (diff)
downloadenigma-fork-cc74d0e62cfdcf14c5918234f69d587d264807ed.tar.gz
enigma-fork-cc74d0e62cfdcf14c5918234f69d587d264807ed.tar.xz
enigma-fork-cc74d0e62cfdcf14c5918234f69d587d264807ed.zip
added support for field access searches
added proper detection/handling for constructors
Diffstat (limited to 'src/cuchaz/enigma/gui/GuiController.java')
-rw-r--r--src/cuchaz/enigma/gui/GuiController.java38
1 files changed, 35 insertions, 3 deletions
diff --git a/src/cuchaz/enigma/gui/GuiController.java b/src/cuchaz/enigma/gui/GuiController.java
index b54aeba..534b0cc 100644
--- a/src/cuchaz/enigma/gui/GuiController.java
+++ b/src/cuchaz/enigma/gui/GuiController.java
@@ -21,13 +21,16 @@ import com.google.common.collect.Lists;
21 21
22import cuchaz.enigma.Deobfuscator; 22import cuchaz.enigma.Deobfuscator;
23import cuchaz.enigma.analysis.ClassInheritanceTreeNode; 23import cuchaz.enigma.analysis.ClassInheritanceTreeNode;
24import cuchaz.enigma.analysis.FieldCallsTreeNode;
24import cuchaz.enigma.analysis.MethodCallsTreeNode; 25import cuchaz.enigma.analysis.MethodCallsTreeNode;
25import cuchaz.enigma.analysis.MethodInheritanceTreeNode; 26import cuchaz.enigma.analysis.MethodInheritanceTreeNode;
26import cuchaz.enigma.analysis.SourceIndex; 27import cuchaz.enigma.analysis.SourceIndex;
27import cuchaz.enigma.analysis.Token; 28import cuchaz.enigma.analysis.Token;
28import cuchaz.enigma.mapping.ClassEntry; 29import cuchaz.enigma.mapping.ClassEntry;
30import cuchaz.enigma.mapping.ConstructorEntry;
29import cuchaz.enigma.mapping.Entry; 31import cuchaz.enigma.mapping.Entry;
30import cuchaz.enigma.mapping.EntryPair; 32import cuchaz.enigma.mapping.EntryPair;
33import cuchaz.enigma.mapping.FieldEntry;
31import cuchaz.enigma.mapping.MappingsReader; 34import cuchaz.enigma.mapping.MappingsReader;
32import cuchaz.enigma.mapping.MappingsWriter; 35import cuchaz.enigma.mapping.MappingsWriter;
33import cuchaz.enigma.mapping.MethodEntry; 36import cuchaz.enigma.mapping.MethodEntry;
@@ -118,6 +121,10 @@ public class GuiController
118 } 121 }
119 122
120 Entry deobfEntry = m_index.getEntry( token ); 123 Entry deobfEntry = m_index.getEntry( token );
124 if( deobfEntry == null )
125 {
126 return null;
127 }
121 return new EntryPair<Entry>( m_deobfuscator.obfuscateEntry( deobfEntry ), deobfEntry ); 128 return new EntryPair<Entry>( m_deobfuscator.obfuscateEntry( deobfEntry ), deobfEntry );
122 } 129 }
123 130
@@ -149,16 +156,41 @@ public class GuiController
149 return MethodInheritanceTreeNode.findNode( rootNode, obfMethodEntry ); 156 return MethodInheritanceTreeNode.findNode( rootNode, obfMethodEntry );
150 } 157 }
151 158
152 public MethodCallsTreeNode getMethodCalls( MethodEntry obfMethodEntry ) 159 public FieldCallsTreeNode getFieldCalls( FieldEntry obfFieldEntry )
153 { 160 {
154 MethodCallsTreeNode rootNode = new MethodCallsTreeNode( 161 FieldCallsTreeNode rootNode = new FieldCallsTreeNode(
155 m_deobfuscator.getTranslator( TranslationDirection.Deobfuscating ), 162 m_deobfuscator.getTranslator( TranslationDirection.Deobfuscating ),
156 obfMethodEntry 163 obfFieldEntry
157 ); 164 );
158 rootNode.load( m_deobfuscator.getJarIndex(), true ); 165 rootNode.load( m_deobfuscator.getJarIndex(), true );
159 return rootNode; 166 return rootNode;
160 } 167 }
161 168
169 public MethodCallsTreeNode getMethodCalls( Entry obfEntry )
170 {
171 MethodCallsTreeNode rootNode;
172 if( obfEntry instanceof MethodEntry )
173 {
174 rootNode = new MethodCallsTreeNode(
175 m_deobfuscator.getTranslator( TranslationDirection.Deobfuscating ),
176 (MethodEntry)obfEntry
177 );
178 }
179 else if( obfEntry instanceof ConstructorEntry )
180 {
181 rootNode = new MethodCallsTreeNode(
182 m_deobfuscator.getTranslator( TranslationDirection.Deobfuscating ),
183 (ConstructorEntry)obfEntry
184 );
185 }
186 else
187 {
188 throw new IllegalArgumentException( "entry must be a MethodEntry or a ConstructorEntry!" );
189 }
190 rootNode.load( m_deobfuscator.getJarIndex(), true );
191 return rootNode;
192 }
193
162 public void rename( Entry obfEntry, String newName ) 194 public void rename( Entry obfEntry, String newName )
163 { 195 {
164 m_deobfuscator.rename( obfEntry, newName ); 196 m_deobfuscator.rename( obfEntry, newName );