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 'src/cuchaz/enigma/Controller.java')
-rw-r--r--src/cuchaz/enigma/Controller.java114
1 files changed, 0 insertions, 114 deletions
diff --git a/src/cuchaz/enigma/Controller.java b/src/cuchaz/enigma/Controller.java
deleted file mode 100644
index 3af139e..0000000
--- a/src/cuchaz/enigma/Controller.java
+++ /dev/null
@@ -1,114 +0,0 @@
1/*******************************************************************************
2 * Copyright (c) 2014 Jeff Martin.
3 * All rights reserved. This program and the accompanying materials
4 * are made available under the terms of the GNU Public License v3.0
5 * which accompanies this distribution, and is available at
6 * http://www.gnu.org/licenses/gpl.html
7 *
8 * Contributors:
9 * Jeff Martin - initial API and implementation
10 ******************************************************************************/
11package cuchaz.enigma;
12
13import javax.swing.event.CaretEvent;
14import javax.swing.event.CaretListener;
15
16import cuchaz.enigma.analysis.Analyzer;
17import 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.Entry;
23import cuchaz.enigma.mapping.EntryPair;
24
25public class Controller implements ClassSelectionListener, CaretListener, RenameListener
26{
27 private Deobfuscator m_deobfuscator;
28 private Gui m_gui;
29 private SourceIndex m_index;
30 private ClassFile m_currentFile;
31
32 public Controller( Deobfuscator deobfuscator, Gui gui )
33 {
34 m_deobfuscator = deobfuscator;
35 m_gui = gui;
36 m_index = null;
37 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 }
48
49 @Override
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 )
95 {
96 m_gui.setSource( "(deobfuscating...)" );
97
98 // run the deobfuscator in a separate thread so we don't block the GUI event queue
99 new Thread( )
100 {
101 @Override
102 public void run( )
103 {
104 // deobfuscate the bytecode
105 String source = m_deobfuscator.getSource( classFile );
106 m_gui.setSource( source );
107
108 // index the source file
109 m_index = Analyzer.analyze( classFile.getName(), source );
110 m_gui.highlightTokens( m_index.tokens() );
111 }
112 }.start();
113 }
114}