diff options
Diffstat (limited to 'src/cuchaz/enigma/gui/MatchingGui.java')
| -rw-r--r-- | src/cuchaz/enigma/gui/MatchingGui.java | 79 |
1 files changed, 45 insertions, 34 deletions
diff --git a/src/cuchaz/enigma/gui/MatchingGui.java b/src/cuchaz/enigma/gui/MatchingGui.java index 1e618d0..85842c1 100644 --- a/src/cuchaz/enigma/gui/MatchingGui.java +++ b/src/cuchaz/enigma/gui/MatchingGui.java | |||
| @@ -6,10 +6,8 @@ import java.awt.Dimension; | |||
| 6 | import java.awt.FlowLayout; | 6 | import java.awt.FlowLayout; |
| 7 | import java.awt.event.ActionEvent; | 7 | import java.awt.event.ActionEvent; |
| 8 | import java.awt.event.ActionListener; | 8 | import java.awt.event.ActionListener; |
| 9 | import java.util.ArrayList; | ||
| 10 | import java.util.Arrays; | 9 | import java.util.Arrays; |
| 11 | import java.util.Collection; | 10 | import java.util.Collection; |
| 12 | import java.util.Collections; | ||
| 13 | import java.util.List; | 11 | import java.util.List; |
| 14 | import java.util.Map; | 12 | import java.util.Map; |
| 15 | 13 | ||
| @@ -29,9 +27,7 @@ import javax.swing.WindowConstants; | |||
| 29 | 27 | ||
| 30 | import com.beust.jcommander.internal.Lists; | 28 | import com.beust.jcommander.internal.Lists; |
| 31 | import com.beust.jcommander.internal.Maps; | 29 | import com.beust.jcommander.internal.Maps; |
| 32 | import com.google.common.collect.ArrayListMultimap; | ||
| 33 | import com.google.common.collect.BiMap; | 30 | import com.google.common.collect.BiMap; |
| 34 | import com.google.common.collect.Multimap; | ||
| 35 | import com.strobel.decompiler.languages.java.ast.CompilationUnit; | 31 | import com.strobel.decompiler.languages.java.ast.CompilationUnit; |
| 36 | 32 | ||
| 37 | import cuchaz.enigma.Constants; | 33 | import cuchaz.enigma.Constants; |
| @@ -272,7 +268,7 @@ public class MatchingGui { | |||
| 272 | m_sourceDeobfuscator.getMappings(), | 268 | m_sourceDeobfuscator.getMappings(), |
| 273 | m_sourceDeobfuscator, | 269 | m_sourceDeobfuscator, |
| 274 | m_destDeobfuscator | 270 | m_destDeobfuscator |
| 275 | )); | 271 | ), false); |
| 276 | } | 272 | } |
| 277 | 273 | ||
| 278 | protected void setSourceType(SourceType val) { | 274 | protected void setSourceType(SourceType val) { |
| @@ -307,7 +303,18 @@ public class MatchingGui { | |||
| 307 | } | 303 | } |
| 308 | 304 | ||
| 309 | protected void setSourceClass(ClassEntry classEntry) { | 305 | protected void setSourceClass(ClassEntry classEntry) { |
| 310 | setSourceClass(classEntry, null); | 306 | |
| 307 | Runnable onGetDestClasses = null; | ||
| 308 | if (m_advanceCheck.isSelected()) { | ||
| 309 | onGetDestClasses = new Runnable() { | ||
| 310 | @Override | ||
| 311 | public void run() { | ||
| 312 | pickBestDestClass(); | ||
| 313 | } | ||
| 314 | }; | ||
| 315 | } | ||
| 316 | |||
| 317 | setSourceClass(classEntry, onGetDestClasses); | ||
| 311 | } | 318 | } |
| 312 | 319 | ||
| 313 | protected void setSourceClass(ClassEntry classEntry, final Runnable onGetDestClasses) { | 320 | protected void setSourceClass(ClassEntry classEntry, final Runnable onGetDestClasses) { |
| @@ -596,36 +603,40 @@ public class MatchingGui { | |||
| 596 | setSourceClass(sourceClass, new Runnable() { | 603 | setSourceClass(sourceClass, new Runnable() { |
| 597 | @Override | 604 | @Override |
| 598 | public void run() { | 605 | public void run() { |
| 599 | 606 | pickBestDestClass(); | |
| 600 | // then, pick the best dest class | ||
| 601 | ClassEntry firstClass = null; | ||
| 602 | ScoredClassEntry bestDestClass = null; | ||
| 603 | for (ClassSelectorPackageNode packageNode : m_destClasses.packageNodes()) { | ||
| 604 | for (ClassSelectorClassNode classNode : m_destClasses.classNodes(packageNode)) { | ||
| 605 | if (firstClass == null) { | ||
| 606 | firstClass = classNode.getClassEntry(); | ||
| 607 | } | ||
| 608 | if (classNode.getClassEntry() instanceof ScoredClassEntry) { | ||
| 609 | ScoredClassEntry scoredClass = (ScoredClassEntry)classNode.getClassEntry(); | ||
| 610 | if (bestDestClass == null || bestDestClass.getScore() < scoredClass.getScore()) { | ||
| 611 | bestDestClass = scoredClass; | ||
| 612 | } | ||
| 613 | } | ||
| 614 | } | ||
| 615 | } | ||
| 616 | |||
| 617 | // pick the entry to show | ||
| 618 | ClassEntry destClass = null; | ||
| 619 | if (bestDestClass != null) { | ||
| 620 | destClass = bestDestClass; | ||
| 621 | } else if (firstClass != null) { | ||
| 622 | destClass = firstClass; | ||
| 623 | } | ||
| 624 | |||
| 625 | setDestClass(destClass); | ||
| 626 | m_destClasses.setSelectionClass(destClass); | ||
| 627 | } | 607 | } |
| 628 | }); | 608 | }); |
| 629 | m_sourceClasses.setSelectionClass(sourceClass); | 609 | m_sourceClasses.setSelectionClass(sourceClass); |
| 630 | } | 610 | } |
| 611 | |||
| 612 | private void pickBestDestClass() { | ||
| 613 | |||
| 614 | // then, pick the best dest class | ||
| 615 | ClassEntry firstClass = null; | ||
| 616 | ScoredClassEntry bestDestClass = null; | ||
| 617 | for (ClassSelectorPackageNode packageNode : m_destClasses.packageNodes()) { | ||
| 618 | for (ClassSelectorClassNode classNode : m_destClasses.classNodes(packageNode)) { | ||
| 619 | if (firstClass == null) { | ||
| 620 | firstClass = classNode.getClassEntry(); | ||
| 621 | } | ||
| 622 | if (classNode.getClassEntry() instanceof ScoredClassEntry) { | ||
| 623 | ScoredClassEntry scoredClass = (ScoredClassEntry)classNode.getClassEntry(); | ||
| 624 | if (bestDestClass == null || bestDestClass.getScore() < scoredClass.getScore()) { | ||
| 625 | bestDestClass = scoredClass; | ||
| 626 | } | ||
| 627 | } | ||
| 628 | } | ||
| 629 | } | ||
| 630 | |||
| 631 | // pick the entry to show | ||
| 632 | ClassEntry destClass = null; | ||
| 633 | if (bestDestClass != null) { | ||
| 634 | destClass = bestDestClass; | ||
| 635 | } else if (firstClass != null) { | ||
| 636 | destClass = firstClass; | ||
| 637 | } | ||
| 638 | |||
| 639 | setDestClass(destClass); | ||
| 640 | m_destClasses.setSelectionClass(destClass); | ||
| 641 | } | ||
| 631 | } | 642 | } |