summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/gui/GuiController.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuchaz/enigma/gui/GuiController.java')
-rw-r--r--src/cuchaz/enigma/gui/GuiController.java37
1 files changed, 11 insertions, 26 deletions
diff --git a/src/cuchaz/enigma/gui/GuiController.java b/src/cuchaz/enigma/gui/GuiController.java
index 834afec..6a7a7da 100644
--- a/src/cuchaz/enigma/gui/GuiController.java
+++ b/src/cuchaz/enigma/gui/GuiController.java
@@ -15,12 +15,9 @@ import java.io.FileReader;
15import java.io.FileWriter; 15import java.io.FileWriter;
16import java.io.IOException; 16import java.io.IOException;
17import java.util.List; 17import java.util.List;
18import java.util.Map;
19 18
20import com.google.common.collect.Lists; 19import com.google.common.collect.Lists;
21import com.google.common.collect.Maps;
22 20
23import cuchaz.enigma.ClassFile;
24import cuchaz.enigma.Deobfuscator; 21import cuchaz.enigma.Deobfuscator;
25import cuchaz.enigma.analysis.SourceIndex; 22import cuchaz.enigma.analysis.SourceIndex;
26import cuchaz.enigma.analysis.Token; 23import cuchaz.enigma.analysis.Token;
@@ -37,7 +34,7 @@ public class GuiController
37 private Deobfuscator m_deobfuscator; 34 private Deobfuscator m_deobfuscator;
38 private Gui m_gui; 35 private Gui m_gui;
39 private SourceIndex m_index; 36 private SourceIndex m_index;
40 private ClassFile m_currentFile; 37 private ClassEntry m_currentClass;
41 private boolean m_isDirty; 38 private boolean m_isDirty;
42 39
43 public GuiController( Gui gui ) 40 public GuiController( Gui gui )
@@ -45,7 +42,7 @@ public class GuiController
45 m_gui = gui; 42 m_gui = gui;
46 m_deobfuscator = null; 43 m_deobfuscator = null;
47 m_index = null; 44 m_index = null;
48 m_currentFile = null; 45 m_currentClass = null;
49 m_isDirty = false; 46 m_isDirty = false;
50 } 47 }
51 48
@@ -97,12 +94,6 @@ public class GuiController
97 refreshCurrentClass(); 94 refreshCurrentClass();
98 } 95 }
99 96
100 public void deobfuscateClass( ClassFile classFile )
101 {
102 m_currentFile = classFile;
103 deobfuscate( m_currentFile );
104 }
105
106 public Token getToken( int pos ) 97 public Token getToken( int pos )
107 { 98 {
108 if( m_index == null ) 99 if( m_index == null )
@@ -168,10 +159,10 @@ public class GuiController
168 public void openEntry( Entry obfEntry ) 159 public void openEntry( Entry obfEntry )
169 { 160 {
170 Entry deobfEntry = m_deobfuscator.deobfuscateEntry( obfEntry ); 161 Entry deobfEntry = m_deobfuscator.deobfuscateEntry( obfEntry );
171 if( !m_currentFile.getName().equals( obfEntry.getClassName() ) ) 162 if( m_currentClass == null || !m_currentClass.equals( deobfEntry.getClassEntry() ) )
172 { 163 {
173 m_currentFile = new ClassFile( obfEntry.getClassName() ); 164 m_currentClass = new ClassEntry( obfEntry.getClassEntry() );
174 deobfuscate( m_currentFile, deobfEntry ); 165 deobfuscate( m_currentClass, deobfEntry );
175 } 166 }
176 else 167 else
177 { 168 {
@@ -181,8 +172,8 @@ public class GuiController
181 172
182 private void refreshClasses( ) 173 private void refreshClasses( )
183 { 174 {
184 List<ClassFile> obfClasses = Lists.newArrayList(); 175 List<String> obfClasses = Lists.newArrayList();
185 Map<ClassFile,String> deobfClasses = Maps.newHashMap(); 176 List<String> deobfClasses = Lists.newArrayList();
186 m_deobfuscator.getSeparatedClasses( obfClasses, deobfClasses ); 177 m_deobfuscator.getSeparatedClasses( obfClasses, deobfClasses );
187 m_gui.setObfClasses( obfClasses ); 178 m_gui.setObfClasses( obfClasses );
188 m_gui.setDeobfClasses( deobfClasses ); 179 m_gui.setDeobfClasses( deobfClasses );
@@ -195,20 +186,14 @@ public class GuiController
195 186
196 private void refreshCurrentClass( Entry entryToShow ) 187 private void refreshCurrentClass( Entry entryToShow )
197 { 188 {
198 if( m_currentFile != null ) 189 if( m_currentClass != null )
199 { 190 {
200 deobfuscate( m_currentFile, entryToShow ); 191 deobfuscate( m_currentClass, entryToShow );
201 } 192 }
202 } 193 }
203
204 private void deobfuscate( final ClassFile classFile )
205 {
206 deobfuscate( classFile, null );
207 }
208 194
209 private void deobfuscate( final ClassFile classFile, final Entry entryToShow ) 195 private void deobfuscate( final ClassEntry classEntry, final Entry entryToShow )
210 { 196 {
211 m_currentFile = classFile;
212 m_gui.setSource( "(deobfuscating...)" ); 197 m_gui.setSource( "(deobfuscating...)" );
213 198
214 // run the deobfuscator in a separate thread so we don't block the GUI event queue 199 // run the deobfuscator in a separate thread so we don't block the GUI event queue
@@ -218,7 +203,7 @@ public class GuiController
218 public void run( ) 203 public void run( )
219 { 204 {
220 // decompile,deobfuscate the bytecode 205 // decompile,deobfuscate the bytecode
221 m_index = m_deobfuscator.getSource( classFile ); 206 m_index = m_deobfuscator.getSource( classEntry.getClassName() );
222 m_gui.setSource( m_index.getSource() ); 207 m_gui.setSource( m_index.getSource() );
223 if( entryToShow != null ) 208 if( entryToShow != null )
224 { 209 {