diff options
| author | 2014-08-09 16:42:25 -0400 | |
|---|---|---|
| committer | 2014-08-09 16:42:25 -0400 | |
| commit | b10af1dbfceb913689226c8fb75641f275eb11b4 (patch) | |
| tree | 5410b80b8adf47529dd0b9135c1840e9f1c12a39 /src | |
| parent | started working on recognition of non-class member identifiers in the source (diff) | |
| download | enigma-fork-b10af1dbfceb913689226c8fb75641f275eb11b4.tar.gz enigma-fork-b10af1dbfceb913689226c8fb75641f275eb11b4.tar.xz enigma-fork-b10af1dbfceb913689226c8fb75641f275eb11b4.zip | |
added sorting for deobfuscated classes
Diffstat (limited to 'src')
| -rw-r--r-- | src/cuchaz/enigma/gui/Gui.java | 46 |
1 files changed, 40 insertions, 6 deletions
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; | |||
| 60 | import javax.swing.tree.TreeNode; | 60 | import javax.swing.tree.TreeNode; |
| 61 | import javax.swing.tree.TreePath; | 61 | import javax.swing.tree.TreePath; |
| 62 | 62 | ||
| 63 | import com.beust.jcommander.internal.Lists; | ||
| 64 | |||
| 65 | import jsyntaxpane.DefaultSyntaxKit; | 63 | import jsyntaxpane.DefaultSyntaxKit; |
| 66 | import jsyntaxpane.SyntaxDocument; | 64 | import jsyntaxpane.SyntaxDocument; |
| 67 | import jsyntaxpane.Token; | 65 | import jsyntaxpane.Token; |
| 66 | |||
| 67 | import com.beust.jcommander.internal.Lists; | ||
| 68 | |||
| 68 | import cuchaz.enigma.ClassFile; | 69 | import cuchaz.enigma.ClassFile; |
| 69 | import cuchaz.enigma.Constants; | 70 | import cuchaz.enigma.Constants; |
| 70 | import cuchaz.enigma.mapping.ArgumentEntry; | 71 | import cuchaz.enigma.mapping.ArgumentEntry; |
| @@ -78,6 +79,7 @@ import cuchaz.enigma.mapping.MethodEntry; | |||
| 78 | public class Gui | 79 | public class Gui |
| 79 | { | 80 | { |
| 80 | private static Comparator<ClassFile> m_obfuscatedClassSorter; | 81 | private static Comparator<ClassFile> m_obfuscatedClassSorter; |
| 82 | private static Comparator<Map.Entry<ClassFile,String>> m_deobfuscatedClassSorter; | ||
| 81 | 83 | ||
| 82 | static | 84 | static |
| 83 | { | 85 | { |
| @@ -94,6 +96,36 @@ public class Gui | |||
| 94 | return a.getName().compareTo( b.getName() ); | 96 | return a.getName().compareTo( b.getName() ); |
| 95 | } | 97 | } |
| 96 | }; | 98 | }; |
| 99 | |||
| 100 | m_deobfuscatedClassSorter = new Comparator<Map.Entry<ClassFile,String>>( ) | ||
| 101 | { | ||
| 102 | @Override | ||
| 103 | public int compare( Map.Entry<ClassFile,String> a, Map.Entry<ClassFile,String> b ) | ||
| 104 | { | ||
| 105 | // I can never keep this rule straight when writing these damn things... | ||
| 106 | // a < b => -1, a == b => 0, a > b => +1 | ||
| 107 | |||
| 108 | String[] aparts = a.getValue().split( "\\." ); | ||
| 109 | String[] bparts = b.getValue().split( "\\." ); | ||
| 110 | for( int i=0; true; i++ ) | ||
| 111 | { | ||
| 112 | if( i >= aparts.length ) | ||
| 113 | { | ||
| 114 | return -1; | ||
| 115 | } | ||
| 116 | else if( i >= bparts.length ) | ||
| 117 | { | ||
| 118 | return 1; | ||
| 119 | } | ||
| 120 | |||
| 121 | int result = aparts[i].compareTo( bparts[i] ); | ||
| 122 | if( result != 0 ) | ||
| 123 | { | ||
| 124 | return result; | ||
| 125 | } | ||
| 126 | } | ||
| 127 | } | ||
| 128 | }; | ||
| 97 | } | 129 | } |
| 98 | 130 | ||
| 99 | private GuiController m_controller; | 131 | private GuiController m_controller; |
| @@ -520,11 +552,11 @@ public class Gui | |||
| 520 | m_closeMappingsMenu.setEnabled( false ); | 552 | m_closeMappingsMenu.setEnabled( false ); |
| 521 | } | 553 | } |
| 522 | 554 | ||
| 523 | public void setObfClasses( List<ClassFile> classes ) | 555 | public void setObfClasses( List<ClassFile> obfClasses ) |
| 524 | { | 556 | { |
| 525 | if( classes != null ) | 557 | if( obfClasses != null ) |
| 526 | { | 558 | { |
| 527 | Vector<ClassFile> sortedClasses = new Vector<ClassFile>( classes ); | 559 | Vector<ClassFile> sortedClasses = new Vector<ClassFile>( obfClasses ); |
| 528 | Collections.sort( sortedClasses, m_obfuscatedClassSorter ); | 560 | Collections.sort( sortedClasses, m_obfuscatedClassSorter ); |
| 529 | m_obfClasses.setListData( sortedClasses ); | 561 | m_obfClasses.setListData( sortedClasses ); |
| 530 | } | 562 | } |
| @@ -538,7 +570,9 @@ public class Gui | |||
| 538 | { | 570 | { |
| 539 | if( deobfClasses != null ) | 571 | if( deobfClasses != null ) |
| 540 | { | 572 | { |
| 541 | m_deobfClasses.setListData( new Vector<Map.Entry<ClassFile,String>>( deobfClasses.entrySet() ) ); | 573 | Vector<Map.Entry<ClassFile,String>> sortedClasses = new Vector<Map.Entry<ClassFile,String>>( deobfClasses.entrySet() ); |
| 574 | Collections.sort( sortedClasses, m_deobfuscatedClassSorter ); | ||
| 575 | m_deobfClasses.setListData( sortedClasses ); | ||
| 542 | } | 576 | } |
| 543 | else | 577 | else |
| 544 | { | 578 | { |