diff options
Diffstat (limited to 'src/cuchaz/enigma/Controller.java')
| -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 | } |