summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/Controller.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/cuchaz/enigma/Controller.java')
-rw-r--r--src/cuchaz/enigma/Controller.java67
1 files changed, 49 insertions, 18 deletions
diff --git a/src/cuchaz/enigma/Controller.java b/src/cuchaz/enigma/Controller.java
index debc5e3..3af139e 100644
--- a/src/cuchaz/enigma/Controller.java
+++ b/src/cuchaz/enigma/Controller.java
@@ -18,19 +18,23 @@ import cuchaz.enigma.analysis.SourceIndex;
18import cuchaz.enigma.gui.ClassSelectionListener; 18import cuchaz.enigma.gui.ClassSelectionListener;
19import cuchaz.enigma.gui.Gui; 19import cuchaz.enigma.gui.Gui;
20import cuchaz.enigma.gui.RenameListener; 20import cuchaz.enigma.gui.RenameListener;
21import cuchaz.enigma.mapping.ClassEntry;
21import cuchaz.enigma.mapping.Entry; 22import cuchaz.enigma.mapping.Entry;
23import cuchaz.enigma.mapping.EntryPair;
22 24
23public class Controller implements ClassSelectionListener, CaretListener, RenameListener 25public class Controller implements ClassSelectionListener, CaretListener, RenameListener
24{ 26{
25 private Deobfuscator m_deobfuscator; 27 private Deobfuscator m_deobfuscator;
26 private Gui m_gui; 28 private Gui m_gui;
27 private SourceIndex m_index; 29 private SourceIndex m_index;
30 private ClassFile m_currentFile;
28 31
29 public Controller( Deobfuscator deobfuscator, Gui gui ) 32 public Controller( Deobfuscator deobfuscator, Gui gui )
30 { 33 {
31 m_deobfuscator = deobfuscator; 34 m_deobfuscator = deobfuscator;
32 m_gui = gui; 35 m_gui = gui;
33 m_index = null; 36 m_index = null;
37 m_currentFile = null;
34 38
35 // update GUI 39 // update GUI
36 gui.setTitle( deobfuscator.getJarName() ); 40 gui.setTitle( deobfuscator.getJarName() );
@@ -43,7 +47,51 @@ public class Controller implements ClassSelectionListener, CaretListener, Rename
43 } 47 }
44 48
45 @Override 49 @Override
46 public void classSelected( final ClassFile classFile ) 50 public void classSelected( ClassFile classFile )
51 {
52 m_currentFile = classFile;
53 deobfuscate( m_currentFile );
54 }
55
56 @Override
57 public void caretUpdate( CaretEvent event )
58 {
59 if( m_index != null )
60 {
61 int pos = event.getDot();
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 }
72 }
73
74 @Override
75 public void rename( Entry obfsEntry, String newName )
76 {
77 m_deobfuscator.rename( obfsEntry, newName );
78
79 // did we rename the current file?
80 if( obfsEntry instanceof ClassEntry )
81 {
82 ClassEntry classEntry = (ClassEntry)obfsEntry;
83
84 // update the current file
85 if( classEntry.getName().equals( m_currentFile.getName() ) )
86 {
87 m_currentFile = new ClassFile( newName );
88 }
89 }
90
91 deobfuscate( m_currentFile );
92 }
93
94 private void deobfuscate( final ClassFile classFile )
47 { 95 {
48 m_gui.setSource( "(deobfuscating...)" ); 96 m_gui.setSource( "(deobfuscating...)" );
49 97
@@ -63,21 +111,4 @@ public class Controller implements ClassSelectionListener, CaretListener, Rename
63 } 111 }
64 }.start(); 112 }.start();
65 } 113 }
66
67 @Override
68 public void caretUpdate( CaretEvent event )
69 {
70 if( m_index != null )
71 {
72 int pos = event.getDot();
73 m_gui.showEntry( m_index.getEntry( pos ) );
74 }
75 }
76
77 @Override
78 public void rename( Entry entry, String newName )
79 {
80 // TEMP
81 System.out.println( "Rename " + entry + " to " + newName );
82 }
83} 114}