summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/Controller.java
diff options
context:
space:
mode:
authorGravatar jeff2014-07-29 23:12:30 -0400
committerGravatar jeff2014-07-29 23:12:30 -0400
commit85b3ea9beb5934012280dc0efa475f334dd9a93a (patch)
treeabd878ee7f8c2929431b49475783e0bb2a02e281 /src/cuchaz/enigma/Controller.java
parentadded start of menu bar (diff)
downloadenigma-fork-85b3ea9beb5934012280dc0efa475f334dd9a93a.tar.gz
enigma-fork-85b3ea9beb5934012280dc0efa475f334dd9a93a.tar.xz
enigma-fork-85b3ea9beb5934012280dc0efa475f334dd9a93a.zip
added gui/cli loading of jars/mappings
gui can save mappings too
Diffstat (limited to '')
-rw-r--r--src/cuchaz/enigma/gui/GuiController.java (renamed from src/cuchaz/enigma/Controller.java)105
1 files changed, 69 insertions, 36 deletions
diff --git a/src/cuchaz/enigma/Controller.java b/src/cuchaz/enigma/gui/GuiController.java
index 3af139e..5df2d43 100644
--- a/src/cuchaz/enigma/Controller.java
+++ b/src/cuchaz/enigma/gui/GuiController.java
@@ -8,70 +8,95 @@
8 * Contributors: 8 * Contributors:
9 * Jeff Martin - initial API and implementation 9 * Jeff Martin - initial API and implementation
10 ******************************************************************************/ 10 ******************************************************************************/
11package cuchaz.enigma; 11package cuchaz.enigma.gui;
12 12
13import javax.swing.event.CaretEvent; 13import java.io.File;
14import javax.swing.event.CaretListener; 14import java.io.FileInputStream;
15import java.io.FileOutputStream;
16import java.io.IOException;
15 17
18import cuchaz.enigma.ClassFile;
19import cuchaz.enigma.Deobfuscator;
16import cuchaz.enigma.analysis.Analyzer; 20import cuchaz.enigma.analysis.Analyzer;
17import cuchaz.enigma.analysis.SourceIndex; 21import cuchaz.enigma.analysis.SourceIndex;
18import cuchaz.enigma.gui.ClassSelectionListener;
19import cuchaz.enigma.gui.Gui;
20import cuchaz.enigma.gui.RenameListener;
21import cuchaz.enigma.mapping.ClassEntry; 22import cuchaz.enigma.mapping.ClassEntry;
22import cuchaz.enigma.mapping.Entry; 23import cuchaz.enigma.mapping.Entry;
23import cuchaz.enigma.mapping.EntryPair; 24import cuchaz.enigma.mapping.EntryPair;
25import cuchaz.enigma.mapping.TranslationMappings;
24 26
25public class Controller implements ClassSelectionListener, CaretListener, RenameListener 27public class GuiController
26{ 28{
27 private Deobfuscator m_deobfuscator; 29 private Deobfuscator m_deobfuscator;
28 private Gui m_gui; 30 private Gui m_gui;
29 private SourceIndex m_index; 31 private SourceIndex m_index;
30 private ClassFile m_currentFile; 32 private ClassFile m_currentFile;
31 33
32 public Controller( Deobfuscator deobfuscator, Gui gui ) 34 public GuiController( Gui gui )
33 { 35 {
34 m_deobfuscator = deobfuscator;
35 m_gui = gui; 36 m_gui = gui;
37 m_deobfuscator = null;
36 m_index = null; 38 m_index = null;
37 m_currentFile = null; 39 m_currentFile = null;
38
39 // update GUI
40 gui.setTitle( deobfuscator.getJarName() );
41 gui.setObfClasses( deobfuscator.getObfuscatedClasses() );
42
43 // handle events
44 gui.setClassSelectionListener( this );
45 gui.setCaretListener( this );
46 gui.setRenameListener( this );
47 } 40 }
48 41
49 @Override 42 public void openJar( File file )
50 public void classSelected( ClassFile classFile ) 43 throws IOException
44 {
45 m_deobfuscator = new Deobfuscator( file );
46 m_gui.onOpenJar( m_deobfuscator.getJarName() );
47 m_gui.setObfClasses( m_deobfuscator.getObfuscatedClasses() );
48 }
49
50 public void closeJar( )
51 {
52 m_deobfuscator = null;
53 m_gui.onCloseJar();
54 }
55
56 public void openMappings( File file )
57 throws IOException
58 {
59 FileInputStream in = new FileInputStream( file );
60 m_deobfuscator.setMappings( TranslationMappings.newFromStream( in ) );
61 in.close();
62 refreshOpenFiles();
63 }
64
65 public void saveMappings( File file )
66 throws IOException
67 {
68 FileOutputStream out = new FileOutputStream( file );
69 m_deobfuscator.getMappings().write( out );
70 out.close();
71 }
72
73 public void closeMappings( )
74 {
75 m_deobfuscator.setMappings( null );
76 refreshOpenFiles();
77 }
78
79 public void deobfuscateClass( ClassFile classFile )
51 { 80 {
52 m_currentFile = classFile; 81 m_currentFile = classFile;
53 deobfuscate( m_currentFile ); 82 deobfuscate( m_currentFile );
54 } 83 }
55 84
56 @Override 85 public EntryPair getEntryPair( int pos )
57 public void caretUpdate( CaretEvent event )
58 { 86 {
59 if( m_index != null ) 87 if( m_index == null )
60 { 88 {
61 int pos = event.getDot(); 89 return null;
62 Entry deobfEntry = m_index.getEntry( pos );
63 if( deobfEntry != null )
64 {
65 m_gui.showEntryPair( new EntryPair( m_deobfuscator.obfuscate( deobfEntry ), deobfEntry ) );
66 }
67 else
68 {
69 m_gui.clearEntryPair();
70 }
71 } 90 }
91
92 Entry deobfEntry = m_index.getEntry( pos );
93 if( deobfEntry == null )
94 {
95 return null;
96 }
97 return new EntryPair( m_deobfuscator.obfuscate( deobfEntry ), deobfEntry );
72 } 98 }
73 99
74 @Override
75 public void rename( Entry obfsEntry, String newName ) 100 public void rename( Entry obfsEntry, String newName )
76 { 101 {
77 m_deobfuscator.rename( obfsEntry, newName ); 102 m_deobfuscator.rename( obfsEntry, newName );
@@ -88,9 +113,17 @@ public class Controller implements ClassSelectionListener, CaretListener, Rename
88 } 113 }
89 } 114 }
90 115
91 deobfuscate( m_currentFile ); 116 refreshOpenFiles();
92 } 117 }
93 118
119 private void refreshOpenFiles( )
120 {
121 if( m_currentFile != null )
122 {
123 deobfuscate( m_currentFile );
124 }
125 }
126
94 private void deobfuscate( final ClassFile classFile ) 127 private void deobfuscate( final ClassFile classFile )
95 { 128 {
96 m_gui.setSource( "(deobfuscating...)" ); 129 m_gui.setSource( "(deobfuscating...)" );
@@ -107,7 +140,7 @@ public class Controller implements ClassSelectionListener, CaretListener, Rename
107 140
108 // index the source file 141 // index the source file
109 m_index = Analyzer.analyze( classFile.getName(), source ); 142 m_index = Analyzer.analyze( classFile.getName(), source );
110 m_gui.highlightTokens( m_index.tokens() ); 143 m_gui.setHighlightedTokens( m_index.tokens() );
111 } 144 }
112 }.start(); 145 }.start();
113 } 146 }