diff options
| -rw-r--r-- | src/cuchaz/enigma/gui/ClassMatchingGui.java | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/src/cuchaz/enigma/gui/ClassMatchingGui.java b/src/cuchaz/enigma/gui/ClassMatchingGui.java index 89b19c3a..416b01f4 100644 --- a/src/cuchaz/enigma/gui/ClassMatchingGui.java +++ b/src/cuchaz/enigma/gui/ClassMatchingGui.java | |||
| @@ -17,6 +17,8 @@ import java.awt.FlowLayout; | |||
| 17 | import java.awt.event.ActionEvent; | 17 | import java.awt.event.ActionEvent; |
| 18 | import java.awt.event.ActionListener; | 18 | import java.awt.event.ActionListener; |
| 19 | import java.util.Collection; | 19 | import java.util.Collection; |
| 20 | import java.util.Collections; | ||
| 21 | import java.util.Comparator; | ||
| 20 | import java.util.List; | 22 | import java.util.List; |
| 21 | import java.util.Map; | 23 | import java.util.Map; |
| 22 | 24 | ||
| @@ -108,6 +110,7 @@ public class ClassMatchingGui { | |||
| 108 | private JButton m_matchButton; | 110 | private JButton m_matchButton; |
| 109 | private Map<SourceType,JRadioButton> m_sourceTypeButtons; | 111 | private Map<SourceType,JRadioButton> m_sourceTypeButtons; |
| 110 | private JCheckBox m_advanceCheck; | 112 | private JCheckBox m_advanceCheck; |
| 113 | private JCheckBox m_top10Matches; | ||
| 111 | 114 | ||
| 112 | private ClassMatches m_classMatches; | 115 | private ClassMatches m_classMatches; |
| 113 | private Deobfuscator m_sourceDeobfuscator; | 116 | private Deobfuscator m_sourceDeobfuscator; |
| @@ -170,6 +173,15 @@ public class ClassMatchingGui { | |||
| 170 | pane.add(destPanel, BorderLayout.WEST); | 173 | pane.add(destPanel, BorderLayout.WEST); |
| 171 | destPanel.add(new JLabel("Destination Classes")); | 174 | destPanel.add(new JLabel("Destination Classes")); |
| 172 | 175 | ||
| 176 | m_top10Matches = new JCheckBox("Show only top 10 matches"); | ||
| 177 | destPanel.add(m_top10Matches); | ||
| 178 | m_top10Matches.addActionListener(new ActionListener() { | ||
| 179 | @Override | ||
| 180 | public void actionPerformed(ActionEvent event) { | ||
| 181 | toggleTop10Matches(); | ||
| 182 | } | ||
| 183 | }); | ||
| 184 | |||
| 173 | m_destClasses = new ClassSelector(ClassSelector.DeobfuscatedClassEntryComparator); | 185 | m_destClasses = new ClassSelector(ClassSelector.DeobfuscatedClassEntryComparator); |
| 174 | m_destClasses.setListener(new ClassSelectionListener() { | 186 | m_destClasses.setListener(new ClassSelectionListener() { |
| 175 | @Override | 187 | @Override |
| @@ -397,6 +409,19 @@ public class ClassMatchingGui { | |||
| 397 | /(sourceIdentity.getMaxMatchScore() + destIdentity.getMaxMatchScore()); | 409 | /(sourceIdentity.getMaxMatchScore() + destIdentity.getMaxMatchScore()); |
| 398 | scoredDestClasses.add(new ScoredClassEntry(unmatchedDestClass, score)); | 410 | scoredDestClasses.add(new ScoredClassEntry(unmatchedDestClass, score)); |
| 399 | } | 411 | } |
| 412 | |||
| 413 | if (m_top10Matches.isSelected() && scoredDestClasses.size() > 10) { | ||
| 414 | Collections.sort(scoredDestClasses, new Comparator<ClassEntry>() { | ||
| 415 | @Override | ||
| 416 | public int compare(ClassEntry a, ClassEntry b) { | ||
| 417 | ScoredClassEntry sa = (ScoredClassEntry)a; | ||
| 418 | ScoredClassEntry sb = (ScoredClassEntry)b; | ||
| 419 | return -Float.compare(sa.getScore(), sb.getScore()); | ||
| 420 | } | ||
| 421 | }); | ||
| 422 | scoredDestClasses = scoredDestClasses.subList(0, 10); | ||
| 423 | } | ||
| 424 | |||
| 400 | return scoredDestClasses; | 425 | return scoredDestClasses; |
| 401 | 426 | ||
| 402 | } catch (ClassNotFoundException ex) { | 427 | } catch (ClassNotFoundException ex) { |
| @@ -586,4 +611,12 @@ public class ClassMatchingGui { | |||
| 586 | setDestClass(destClass); | 611 | setDestClass(destClass); |
| 587 | m_destClasses.setSelectionClass(destClass); | 612 | m_destClasses.setSelectionClass(destClass); |
| 588 | } | 613 | } |
| 614 | |||
| 615 | private void toggleTop10Matches() { | ||
| 616 | if (m_sourceClass != null) { | ||
| 617 | m_destClasses.clearSelection(); | ||
| 618 | m_destClasses.setClasses(deobfuscateClasses(getLikelyMatches(m_sourceClass), m_destDeobfuscator)); | ||
| 619 | m_destClasses.expandAll(); | ||
| 620 | } | ||
| 621 | } | ||
| 589 | } | 622 | } |