diff options
| author | 2014-07-27 22:33:21 -0400 | |
|---|---|---|
| committer | 2014-07-27 22:33:21 -0400 | |
| commit | d7321b5b0d38c575e54c770f7aa18dacbacab3c8 (patch) | |
| tree | ef4b3e0f83b1fe89125c2674fec023871e70c0d8 /src/cuchaz/enigma/Controller.java | |
| parent | made gui responsive to caret position and show identifier info (diff) | |
| download | enigma-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 '')
| -rw-r--r-- | src/cuchaz/enigma/Controller.java | 67 |
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; | |||
| 18 | import cuchaz.enigma.gui.ClassSelectionListener; | 18 | import cuchaz.enigma.gui.ClassSelectionListener; |
| 19 | import cuchaz.enigma.gui.Gui; | 19 | import cuchaz.enigma.gui.Gui; |
| 20 | import cuchaz.enigma.gui.RenameListener; | 20 | import cuchaz.enigma.gui.RenameListener; |
| 21 | import cuchaz.enigma.mapping.ClassEntry; | ||
| 21 | import cuchaz.enigma.mapping.Entry; | 22 | import cuchaz.enigma.mapping.Entry; |
| 23 | import cuchaz.enigma.mapping.EntryPair; | ||
| 22 | 24 | ||
| 23 | public class Controller implements ClassSelectionListener, CaretListener, RenameListener | 25 | public 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 | } |