summaryrefslogtreecommitdiff
path: root/src/main/java/cuchaz/enigma/gui/GuiController.java
diff options
context:
space:
mode:
authorGravatar Runemoro2019-11-08 17:36:33 -0500
committerGravatar modmuss502019-11-08 22:36:33 +0000
commit0e67256a2a66b2d0a0c6b3491ab2db63884bd55f (patch)
tree1d489fca6212d0df928cc0c8036099ab450baea5 /src/main/java/cuchaz/enigma/gui/GuiController.java
parentFix inner class renaming (#176) (diff)
downloadenigma-fork-0e67256a2a66b2d0a0c6b3491ab2db63884bd55f.tar.gz
enigma-fork-0e67256a2a66b2d0a0c6b3491ab2db63884bd55f.tar.xz
enigma-fork-0e67256a2a66b2d0a0c6b3491ab2db63884bd55f.zip
Add stats generation (#177)
* Add stats generation * Parameters and inner classes too * Fixes
Diffstat (limited to 'src/main/java/cuchaz/enigma/gui/GuiController.java')
-rw-r--r--src/main/java/cuchaz/enigma/gui/GuiController.java29
1 files changed, 27 insertions, 2 deletions
diff --git a/src/main/java/cuchaz/enigma/gui/GuiController.java b/src/main/java/cuchaz/enigma/gui/GuiController.java
index 54b5c92..69f12e2 100644
--- a/src/main/java/cuchaz/enigma/gui/GuiController.java
+++ b/src/main/java/cuchaz/enigma/gui/GuiController.java
@@ -20,6 +20,8 @@ import cuchaz.enigma.api.service.ObfuscationTestService;
20import cuchaz.enigma.bytecode.translators.SourceFixVisitor; 20import cuchaz.enigma.bytecode.translators.SourceFixVisitor;
21import cuchaz.enigma.config.Config; 21import cuchaz.enigma.config.Config;
22import cuchaz.enigma.gui.dialog.ProgressDialog; 22import cuchaz.enigma.gui.dialog.ProgressDialog;
23import cuchaz.enigma.gui.stats.StatsGenerator;
24import cuchaz.enigma.gui.stats.StatsMember;
23import cuchaz.enigma.gui.util.History; 25import cuchaz.enigma.gui.util.History;
24import cuchaz.enigma.throwables.MappingParseException; 26import cuchaz.enigma.throwables.MappingParseException;
25import cuchaz.enigma.translation.Translator; 27import cuchaz.enigma.translation.Translator;
@@ -31,17 +33,19 @@ import cuchaz.enigma.translation.representation.entry.Entry;
31import cuchaz.enigma.translation.representation.entry.FieldEntry; 33import cuchaz.enigma.translation.representation.entry.FieldEntry;
32import cuchaz.enigma.translation.representation.entry.MethodEntry; 34import cuchaz.enigma.translation.representation.entry.MethodEntry;
33import cuchaz.enigma.utils.ReadableToken; 35import cuchaz.enigma.utils.ReadableToken;
36import cuchaz.enigma.utils.Utils;
34import org.objectweb.asm.Opcodes; 37import org.objectweb.asm.Opcodes;
35 38
36import javax.annotation.Nullable; 39import javax.annotation.Nullable;
37import javax.swing.*; 40import javax.swing.*;
41import java.awt.*;
38import java.awt.event.ItemEvent; 42import java.awt.event.ItemEvent;
39import java.io.PrintWriter; 43import java.io.*;
40import java.io.StringWriter;
41import java.nio.file.Path; 44import java.nio.file.Path;
42import java.util.Collection; 45import java.util.Collection;
43import java.util.List; 46import java.util.List;
44import java.util.Optional; 47import java.util.Optional;
48import java.util.Set;
45import java.util.concurrent.CompletableFuture; 49import java.util.concurrent.CompletableFuture;
46import java.util.concurrent.ExecutorService; 50import java.util.concurrent.ExecutorService;
47import java.util.concurrent.Executors; 51import java.util.concurrent.Executors;
@@ -527,4 +531,25 @@ public class GuiController {
527 531
528 refreshCurrentClass(reference); 532 refreshCurrentClass(reference);
529 } 533 }
534
535 public void openStats(Set<StatsMember> includedMembers) {
536 ProgressDialog.runOffThread(gui.getFrame(), progress -> {
537 String data = new StatsGenerator(project).generate(progress, includedMembers);
538
539 try {
540 File statsFile = File.createTempFile("stats", ".html");
541
542 try (FileWriter w = new FileWriter(statsFile)) {
543 w.write(
544 Utils.readResourceToString("/stats.html")
545 .replace("/*data*/", data)
546 );
547 }
548
549 Desktop.getDesktop().open(statsFile);
550 } catch (IOException e) {
551 throw new Error(e);
552 }
553 });
554 }
530} 555}