From b10af1dbfceb913689226c8fb75641f275eb11b4 Mon Sep 17 00:00:00 2001 From: jeff Date: Sat, 9 Aug 2014 16:42:25 -0400 Subject: added sorting for deobfuscated classes --- src/cuchaz/enigma/gui/Gui.java | 46 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/cuchaz/enigma/gui/Gui.java b/src/cuchaz/enigma/gui/Gui.java index 57c6ef7..61e66e0 100644 --- a/src/cuchaz/enigma/gui/Gui.java +++ b/src/cuchaz/enigma/gui/Gui.java @@ -60,11 +60,12 @@ import javax.swing.tree.DefaultTreeModel; import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; -import com.beust.jcommander.internal.Lists; - import jsyntaxpane.DefaultSyntaxKit; import jsyntaxpane.SyntaxDocument; import jsyntaxpane.Token; + +import com.beust.jcommander.internal.Lists; + import cuchaz.enigma.ClassFile; import cuchaz.enigma.Constants; import cuchaz.enigma.mapping.ArgumentEntry; @@ -78,6 +79,7 @@ import cuchaz.enigma.mapping.MethodEntry; public class Gui { private static Comparator m_obfuscatedClassSorter; + private static Comparator> m_deobfuscatedClassSorter; static { @@ -94,6 +96,36 @@ public class Gui return a.getName().compareTo( b.getName() ); } }; + + m_deobfuscatedClassSorter = new Comparator>( ) + { + @Override + public int compare( Map.Entry a, Map.Entry b ) + { + // I can never keep this rule straight when writing these damn things... + // a < b => -1, a == b => 0, a > b => +1 + + String[] aparts = a.getValue().split( "\\." ); + String[] bparts = b.getValue().split( "\\." ); + for( int i=0; true; i++ ) + { + if( i >= aparts.length ) + { + return -1; + } + else if( i >= bparts.length ) + { + return 1; + } + + int result = aparts[i].compareTo( bparts[i] ); + if( result != 0 ) + { + return result; + } + } + } + }; } private GuiController m_controller; @@ -520,11 +552,11 @@ public class Gui m_closeMappingsMenu.setEnabled( false ); } - public void setObfClasses( List classes ) + public void setObfClasses( List obfClasses ) { - if( classes != null ) + if( obfClasses != null ) { - Vector sortedClasses = new Vector( classes ); + Vector sortedClasses = new Vector( obfClasses ); Collections.sort( sortedClasses, m_obfuscatedClassSorter ); m_obfClasses.setListData( sortedClasses ); } @@ -538,7 +570,9 @@ public class Gui { if( deobfClasses != null ) { - m_deobfClasses.setListData( new Vector>( deobfClasses.entrySet() ) ); + Vector> sortedClasses = new Vector>( deobfClasses.entrySet() ); + Collections.sort( sortedClasses, m_deobfuscatedClassSorter ); + m_deobfClasses.setListData( sortedClasses ); } else { -- cgit v1.2.3