From faae0a6514c2565a10f9a62dd18c5d79fbbe4156 Mon Sep 17 00:00:00 2001 From: jeff Date: Thu, 31 Jul 2014 22:27:26 -0400 Subject: fixed bug with save mappings menu gui shows deobfuscated classes list now working on name validation/sanitization --- src/cuchaz/enigma/gui/Gui.java | 64 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 59 insertions(+), 5 deletions(-) (limited to 'src/cuchaz/enigma/gui/Gui.java') 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; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.io.IOException; +import java.util.Collections; +import java.util.Comparator; import java.util.List; import java.util.Vector; @@ -58,6 +60,25 @@ import cuchaz.enigma.mapping.MethodEntry; public class Gui { + private static Comparator m_obfuscatedClassSorter; + + static + { + m_obfuscatedClassSorter = new Comparator( ) + { + @Override + public int compare( ClassFile a, ClassFile b ) + { + if( a.getName().length() != b.getName().length() ) + { + return a.getName().length() - b.getName().length(); + } + + return a.getName().compareTo( b.getName() ); + } + }; + } + private GuiController m_controller; // controls @@ -101,7 +122,7 @@ public class Gui m_obfClasses = new JList(); m_obfClasses.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); m_obfClasses.setLayoutOrientation( JList.VERTICAL ); - m_obfClasses.setCellRenderer( new ObfuscatedClassListCellRenderer() ); + m_obfClasses.setCellRenderer( new ClassListCellRenderer() ); m_obfClasses.addMouseListener( new MouseAdapter() { public void mouseClicked( MouseEvent event ) @@ -124,8 +145,23 @@ public class Gui // init deobfuscated classes list m_deobfClasses = new JList(); - m_obfClasses.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); - m_obfClasses.setLayoutOrientation( JList.VERTICAL ); + m_deobfClasses.setSelectionMode( ListSelectionModel.SINGLE_SELECTION ); + m_deobfClasses.setLayoutOrientation( JList.VERTICAL ); + m_deobfClasses.setCellRenderer( new ClassListCellRenderer() ); + m_deobfClasses.addMouseListener( new MouseAdapter() + { + public void mouseClicked( MouseEvent event ) + { + if( event.getClickCount() == 2 ) + { + ClassFile selected = m_deobfClasses.getSelectedValue(); + if( selected != null ) + { + m_controller.deobfuscateClass( selected ); + } + } + } + } ); JScrollPane deobfScroller = new JScrollPane( m_deobfClasses ); JPanel deobfPanel = new JPanel(); deobfPanel.setLayout( new BorderLayout() ); @@ -248,7 +284,6 @@ public class Gui try { m_controller.openMappings( m_mappingFileChooser.getSelectedFile() ); - m_saveMappingsMenu.setEnabled( true ); } catch( IOException ex ) { @@ -383,7 +418,9 @@ public class Gui { if( classes != null ) { - m_obfClasses.setListData( new Vector( classes ) ); + Vector sortedClasses = new Vector( classes ); + Collections.sort( sortedClasses, m_obfuscatedClassSorter ); + m_obfClasses.setListData( sortedClasses ); } else { @@ -391,6 +428,23 @@ public class Gui } } + public void setDeobfClasses( List classes ) + { + if( classes != null ) + { + m_deobfClasses.setListData( new Vector( classes ) ); + } + else + { + m_deobfClasses.setListData( new Vector() ); + } + } + + public void setMappingsLoaded( boolean isLoaded ) + { + m_saveMappingsMenu.setEnabled( isLoaded ); + } + public void setSource( String source ) { setSource( source, null ); -- cgit v1.2.3