From 0e67256a2a66b2d0a0c6b3491ab2db63884bd55f Mon Sep 17 00:00:00 2001 From: Runemoro Date: Fri, 8 Nov 2019 17:36:33 -0500 Subject: Add stats generation (#177) * Add stats generation * Parameters and inner classes too * Fixes --- src/main/java/cuchaz/enigma/gui/GuiController.java | 29 ++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) (limited to 'src/main/java/cuchaz/enigma/gui/GuiController.java') 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; import cuchaz.enigma.bytecode.translators.SourceFixVisitor; import cuchaz.enigma.config.Config; import cuchaz.enigma.gui.dialog.ProgressDialog; +import cuchaz.enigma.gui.stats.StatsGenerator; +import cuchaz.enigma.gui.stats.StatsMember; import cuchaz.enigma.gui.util.History; import cuchaz.enigma.throwables.MappingParseException; import cuchaz.enigma.translation.Translator; @@ -31,17 +33,19 @@ import cuchaz.enigma.translation.representation.entry.Entry; import cuchaz.enigma.translation.representation.entry.FieldEntry; import cuchaz.enigma.translation.representation.entry.MethodEntry; import cuchaz.enigma.utils.ReadableToken; +import cuchaz.enigma.utils.Utils; import org.objectweb.asm.Opcodes; import javax.annotation.Nullable; import javax.swing.*; +import java.awt.*; import java.awt.event.ItemEvent; -import java.io.PrintWriter; -import java.io.StringWriter; +import java.io.*; import java.nio.file.Path; import java.util.Collection; import java.util.List; import java.util.Optional; +import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -527,4 +531,25 @@ public class GuiController { refreshCurrentClass(reference); } + + public void openStats(Set includedMembers) { + ProgressDialog.runOffThread(gui.getFrame(), progress -> { + String data = new StatsGenerator(project).generate(progress, includedMembers); + + try { + File statsFile = File.createTempFile("stats", ".html"); + + try (FileWriter w = new FileWriter(statsFile)) { + w.write( + Utils.readResourceToString("/stats.html") + .replace("/*data*/", data) + ); + } + + Desktop.getDesktop().open(statsFile); + } catch (IOException e) { + throw new Error(e); + } + }); + } } -- cgit v1.2.3