summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/gui
diff options
context:
space:
mode:
authorGravatar jeff2014-07-31 22:27:26 -0400
committerGravatar jeff2014-07-31 22:27:26 -0400
commitfaae0a6514c2565a10f9a62dd18c5d79fbbe4156 (patch)
tree9369f3b920919dd4a4bb2aa449c3dc467d4a43ea /src/cuchaz/enigma/gui
parentswitched to line-by-line mergable, human-readable file format for mappings (diff)
downloadenigma-fork-faae0a6514c2565a10f9a62dd18c5d79fbbe4156.tar.gz
enigma-fork-faae0a6514c2565a10f9a62dd18c5d79fbbe4156.tar.xz
enigma-fork-faae0a6514c2565a10f9a62dd18c5d79fbbe4156.zip
fixed bug with save mappings menu
gui shows deobfuscated classes list now working on name validation/sanitization
Diffstat (limited to 'src/cuchaz/enigma/gui')
-rw-r--r--src/cuchaz/enigma/gui/ClassListCellRenderer.java (renamed from src/cuchaz/enigma/gui/ObfuscatedClassListCellRenderer.java)4
-rw-r--r--src/cuchaz/enigma/gui/Gui.java64
-rw-r--r--src/cuchaz/enigma/gui/GuiController.java18
3 files changed, 76 insertions, 10 deletions
diff --git a/src/cuchaz/enigma/gui/ObfuscatedClassListCellRenderer.java b/src/cuchaz/enigma/gui/ClassListCellRenderer.java
index 0badb3b..302f140 100644
--- a/src/cuchaz/enigma/gui/ObfuscatedClassListCellRenderer.java
+++ b/src/cuchaz/enigma/gui/ClassListCellRenderer.java
@@ -19,11 +19,11 @@ import javax.swing.ListCellRenderer;
19 19
20import cuchaz.enigma.ClassFile; 20import cuchaz.enigma.ClassFile;
21 21
22public class ObfuscatedClassListCellRenderer implements ListCellRenderer<ClassFile> 22public class ClassListCellRenderer implements ListCellRenderer<ClassFile>
23{ 23{
24 private DefaultListCellRenderer m_defaultRenderer; 24 private DefaultListCellRenderer m_defaultRenderer;
25 25
26 public ObfuscatedClassListCellRenderer( ) 26 public ClassListCellRenderer( )
27 { 27 {
28 m_defaultRenderer = new DefaultListCellRenderer(); 28 m_defaultRenderer = new DefaultListCellRenderer();
29 } 29 }
diff --git a/src/cuchaz/enigma/gui/Gui.java b/src/cuchaz/enigma/gui/Gui.java
index a86ff9b..d448dc2 100644
--- a/src/cuchaz/enigma/gui/Gui.java
+++ b/src/cuchaz/enigma/gui/Gui.java
@@ -21,6 +21,8 @@ import java.awt.event.ActionListener;
21import java.awt.event.MouseAdapter; 21import java.awt.event.MouseAdapter;
22import java.awt.event.MouseEvent; 22import java.awt.event.MouseEvent;
23import java.io.IOException; 23import java.io.IOException;
24import java.util.Collections;
25import java.util.Comparator;
24import java.util.List; 26import java.util.List;
25import java.util.Vector; 27import java.util.Vector;
26 28
@@ -58,6 +60,25 @@ import cuchaz.enigma.mapping.MethodEntry;
58 60
59public class Gui 61public class Gui
60{ 62{
63 private static Comparator<ClassFile> m_obfuscatedClassSorter;
64
65 static
66 {
67 m_obfuscatedClassSorter = new Comparator<ClassFile>( )
68 {
69 @Override
70 public int compare( ClassFile a, ClassFile b )
71 {
72 if( a.getName().length() != b.getName().length() )
73 {
74 return a.getName().length() - b.getName().length();
75 }
76
77 return a.getName().compareTo( b.getName() );
78 }
79 };
80 }
81
61 private GuiController m_controller; 82 private GuiController m_controller;
62 83
63 // controls 84 // controls
@@ -101,7 +122,7 @@ public class Gui
101 m_obfClasses = new JList<ClassFile>(); 122 m_obfClasses = new JList<ClassFile>();
102 m_obfClasses.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); 123 m_obfClasses.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
103 m_obfClasses.setLayoutOrientation( JList.VERTICAL ); 124 m_obfClasses.setLayoutOrientation( JList.VERTICAL );
104 m_obfClasses.setCellRenderer( new ObfuscatedClassListCellRenderer() ); 125 m_obfClasses.setCellRenderer( new ClassListCellRenderer() );
105 m_obfClasses.addMouseListener( new MouseAdapter() 126 m_obfClasses.addMouseListener( new MouseAdapter()
106 { 127 {
107 public void mouseClicked( MouseEvent event ) 128 public void mouseClicked( MouseEvent event )
@@ -124,8 +145,23 @@ public class Gui
124 145
125 // init deobfuscated classes list 146 // init deobfuscated classes list
126 m_deobfClasses = new JList<ClassFile>(); 147 m_deobfClasses = new JList<ClassFile>();
127 m_obfClasses.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); 148 m_deobfClasses.setSelectionMode( ListSelectionModel.SINGLE_SELECTION );
128 m_obfClasses.setLayoutOrientation( JList.VERTICAL ); 149 m_deobfClasses.setLayoutOrientation( JList.VERTICAL );
150 m_deobfClasses.setCellRenderer( new ClassListCellRenderer() );
151 m_deobfClasses.addMouseListener( new MouseAdapter()
152 {
153 public void mouseClicked( MouseEvent event )
154 {
155 if( event.getClickCount() == 2 )
156 {
157 ClassFile selected = m_deobfClasses.getSelectedValue();
158 if( selected != null )
159 {
160 m_controller.deobfuscateClass( selected );
161 }
162 }
163 }
164 } );
129 JScrollPane deobfScroller = new JScrollPane( m_deobfClasses ); 165 JScrollPane deobfScroller = new JScrollPane( m_deobfClasses );
130 JPanel deobfPanel = new JPanel(); 166 JPanel deobfPanel = new JPanel();
131 deobfPanel.setLayout( new BorderLayout() ); 167 deobfPanel.setLayout( new BorderLayout() );
@@ -248,7 +284,6 @@ public class Gui
248 try 284 try
249 { 285 {
250 m_controller.openMappings( m_mappingFileChooser.getSelectedFile() ); 286 m_controller.openMappings( m_mappingFileChooser.getSelectedFile() );
251 m_saveMappingsMenu.setEnabled( true );
252 } 287 }
253 catch( IOException ex ) 288 catch( IOException ex )
254 { 289 {
@@ -383,7 +418,9 @@ public class Gui
383 { 418 {
384 if( classes != null ) 419 if( classes != null )
385 { 420 {
386 m_obfClasses.setListData( new Vector<ClassFile>( classes ) ); 421 Vector<ClassFile> sortedClasses = new Vector<ClassFile>( classes );
422 Collections.sort( sortedClasses, m_obfuscatedClassSorter );
423 m_obfClasses.setListData( sortedClasses );
387 } 424 }
388 else 425 else
389 { 426 {
@@ -391,6 +428,23 @@ public class Gui
391 } 428 }
392 } 429 }
393 430
431 public void setDeobfClasses( List<ClassFile> classes )
432 {
433 if( classes != null )
434 {
435 m_deobfClasses.setListData( new Vector<ClassFile>( classes ) );
436 }
437 else
438 {
439 m_deobfClasses.setListData( new Vector<ClassFile>() );
440 }
441 }
442
443 public void setMappingsLoaded( boolean isLoaded )
444 {
445 m_saveMappingsMenu.setEnabled( isLoaded );
446 }
447
394 public void setSource( String source ) 448 public void setSource( String source )
395 { 449 {
396 setSource( source, null ); 450 setSource( source, null );
diff --git a/src/cuchaz/enigma/gui/GuiController.java b/src/cuchaz/enigma/gui/GuiController.java
index fb22b96..ce1c31b 100644
--- a/src/cuchaz/enigma/gui/GuiController.java
+++ b/src/cuchaz/enigma/gui/GuiController.java
@@ -14,6 +14,8 @@ import java.io.File;
14import java.io.FileReader; 14import java.io.FileReader;
15import java.io.FileWriter; 15import java.io.FileWriter;
16import java.io.IOException; 16import java.io.IOException;
17import java.util.ArrayList;
18import java.util.List;
17 19
18import cuchaz.enigma.ClassFile; 20import cuchaz.enigma.ClassFile;
19import cuchaz.enigma.Deobfuscator; 21import cuchaz.enigma.Deobfuscator;
@@ -45,7 +47,7 @@ public class GuiController
45 { 47 {
46 m_deobfuscator = new Deobfuscator( file ); 48 m_deobfuscator = new Deobfuscator( file );
47 m_gui.onOpenJar( m_deobfuscator.getJarName() ); 49 m_gui.onOpenJar( m_deobfuscator.getJarName() );
48 m_gui.setObfClasses( m_deobfuscator.getObfuscatedClasses() ); 50 refreshClasses();
49 } 51 }
50 52
51 public void closeJar( ) 53 public void closeJar( )
@@ -60,8 +62,8 @@ public class GuiController
60 FileReader in = new FileReader( file ); 62 FileReader in = new FileReader( file );
61 m_deobfuscator.setMappings( new MappingsReader().read( in ) ); 63 m_deobfuscator.setMappings( new MappingsReader().read( in ) );
62 in.close(); 64 in.close();
63 // TEMP 65 m_gui.setMappingsLoaded( true );
64 System.out.println( m_deobfuscator.getMappings() ); 66 refreshClasses();
65 refreshOpenFiles(); 67 refreshOpenFiles();
66 } 68 }
67 69
@@ -76,6 +78,7 @@ public class GuiController
76 public void closeMappings( ) 78 public void closeMappings( )
77 { 79 {
78 m_deobfuscator.setMappings( null ); 80 m_deobfuscator.setMappings( null );
81 m_gui.setMappingsLoaded( false );
79 refreshOpenFiles(); 82 refreshOpenFiles();
80 } 83 }
81 84
@@ -119,6 +122,15 @@ public class GuiController
119 refreshOpenFiles(); 122 refreshOpenFiles();
120 } 123 }
121 124
125 private void refreshClasses( )
126 {
127 List<ClassFile> obfClasses = new ArrayList<ClassFile>();
128 List<ClassFile> deobfClasses = new ArrayList<ClassFile>();
129 m_deobfuscator.getSortedClasses( obfClasses, deobfClasses );
130 m_gui.setObfClasses( obfClasses );
131 m_gui.setDeobfClasses( deobfClasses );
132 }
133
122 private void refreshOpenFiles( ) 134 private void refreshOpenFiles( )
123 { 135 {
124 if( m_currentFile != null ) 136 if( m_currentFile != null )