diff options
Diffstat (limited to 'src/main/java/cuchaz/enigma/gui/GuiController.java')
| -rw-r--r-- | src/main/java/cuchaz/enigma/gui/GuiController.java | 29 |
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; | |||
| 20 | import cuchaz.enigma.bytecode.translators.SourceFixVisitor; | 20 | import cuchaz.enigma.bytecode.translators.SourceFixVisitor; |
| 21 | import cuchaz.enigma.config.Config; | 21 | import cuchaz.enigma.config.Config; |
| 22 | import cuchaz.enigma.gui.dialog.ProgressDialog; | 22 | import cuchaz.enigma.gui.dialog.ProgressDialog; |
| 23 | import cuchaz.enigma.gui.stats.StatsGenerator; | ||
| 24 | import cuchaz.enigma.gui.stats.StatsMember; | ||
| 23 | import cuchaz.enigma.gui.util.History; | 25 | import cuchaz.enigma.gui.util.History; |
| 24 | import cuchaz.enigma.throwables.MappingParseException; | 26 | import cuchaz.enigma.throwables.MappingParseException; |
| 25 | import cuchaz.enigma.translation.Translator; | 27 | import cuchaz.enigma.translation.Translator; |
| @@ -31,17 +33,19 @@ import cuchaz.enigma.translation.representation.entry.Entry; | |||
| 31 | import cuchaz.enigma.translation.representation.entry.FieldEntry; | 33 | import cuchaz.enigma.translation.representation.entry.FieldEntry; |
| 32 | import cuchaz.enigma.translation.representation.entry.MethodEntry; | 34 | import cuchaz.enigma.translation.representation.entry.MethodEntry; |
| 33 | import cuchaz.enigma.utils.ReadableToken; | 35 | import cuchaz.enigma.utils.ReadableToken; |
| 36 | import cuchaz.enigma.utils.Utils; | ||
| 34 | import org.objectweb.asm.Opcodes; | 37 | import org.objectweb.asm.Opcodes; |
| 35 | 38 | ||
| 36 | import javax.annotation.Nullable; | 39 | import javax.annotation.Nullable; |
| 37 | import javax.swing.*; | 40 | import javax.swing.*; |
| 41 | import java.awt.*; | ||
| 38 | import java.awt.event.ItemEvent; | 42 | import java.awt.event.ItemEvent; |
| 39 | import java.io.PrintWriter; | 43 | import java.io.*; |
| 40 | import java.io.StringWriter; | ||
| 41 | import java.nio.file.Path; | 44 | import java.nio.file.Path; |
| 42 | import java.util.Collection; | 45 | import java.util.Collection; |
| 43 | import java.util.List; | 46 | import java.util.List; |
| 44 | import java.util.Optional; | 47 | import java.util.Optional; |
| 48 | import java.util.Set; | ||
| 45 | import java.util.concurrent.CompletableFuture; | 49 | import java.util.concurrent.CompletableFuture; |
| 46 | import java.util.concurrent.ExecutorService; | 50 | import java.util.concurrent.ExecutorService; |
| 47 | import java.util.concurrent.Executors; | 51 | import 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 | } |