summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/gui/MatchingGui.java
diff options
context:
space:
mode:
authorGravatar jeff2015-03-08 20:48:30 -0400
committerGravatar jeff2015-03-08 20:48:30 -0400
commit4ceb8d490058e48df666bf7227ce020e60928be5 (patch)
treebdfb432cd1d61dc4914b8591468193dcd7e7421c /src/cuchaz/enigma/gui/MatchingGui.java
parentlots of small tweaks and improvements (diff)
downloadenigma-fork-4ceb8d490058e48df666bf7227ce020e60928be5.tar.gz
enigma-fork-4ceb8d490058e48df666bf7227ce020e60928be5.tar.xz
enigma-fork-4ceb8d490058e48df666bf7227ce020e60928be5.zip
more tweaks, improvements, and bug fixes
Diffstat (limited to 'src/cuchaz/enigma/gui/MatchingGui.java')
-rw-r--r--src/cuchaz/enigma/gui/MatchingGui.java79
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;
6import java.awt.FlowLayout; 6import java.awt.FlowLayout;
7import java.awt.event.ActionEvent; 7import java.awt.event.ActionEvent;
8import java.awt.event.ActionListener; 8import java.awt.event.ActionListener;
9import java.util.ArrayList;
10import java.util.Arrays; 9import java.util.Arrays;
11import java.util.Collection; 10import java.util.Collection;
12import java.util.Collections;
13import java.util.List; 11import java.util.List;
14import java.util.Map; 12import java.util.Map;
15 13
@@ -29,9 +27,7 @@ import javax.swing.WindowConstants;
29 27
30import com.beust.jcommander.internal.Lists; 28import com.beust.jcommander.internal.Lists;
31import com.beust.jcommander.internal.Maps; 29import com.beust.jcommander.internal.Maps;
32import com.google.common.collect.ArrayListMultimap;
33import com.google.common.collect.BiMap; 30import com.google.common.collect.BiMap;
34import com.google.common.collect.Multimap;
35import com.strobel.decompiler.languages.java.ast.CompilationUnit; 31import com.strobel.decompiler.languages.java.ast.CompilationUnit;
36 32
37import cuchaz.enigma.Constants; 33import 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}