summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/Controller.java
diff options
context:
space:
mode:
authorGravatar jeff2014-07-27 22:33:21 -0400
committerGravatar jeff2014-07-27 22:33:21 -0400
commitd7321b5b0d38c575e54c770f7aa18dacbacab3c8 (patch)
treeef4b3e0f83b1fe89125c2674fec023871e70c0d8 /src/cuchaz/enigma/Controller.java
parentmade gui responsive to caret position and show identifier info (diff)
downloadenigma-fork-d7321b5b0d38c575e54c770f7aa18dacbacab3c8.tar.gz
enigma-fork-d7321b5b0d38c575e54c770f7aa18dacbacab3c8.tar.xz
enigma-fork-d7321b5b0d38c575e54c770f7aa18dacbacab3c8.zip
added identifier renaming capability
copied some code over from M3L to handle the heavy bytecode magic. It's ok... M3L will eventually depend on Enigma. Completely restructured the mappings though. This way is better. =)
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}