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 --- .../java/cuchaz/enigma/gui/elements/MenuBar.java | 43 +++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) (limited to 'src/main/java/cuchaz/enigma/gui/elements') diff --git a/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java b/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java index 2e10bfb..cdcad05 100644 --- a/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java +++ b/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java @@ -5,6 +5,7 @@ import cuchaz.enigma.config.Themes; import cuchaz.enigma.gui.Gui; import cuchaz.enigma.gui.dialog.AboutDialog; import cuchaz.enigma.gui.dialog.SearchDialog; +import cuchaz.enigma.gui.stats.StatsMember; import cuchaz.enigma.translation.mapping.serde.MappingFormat; import cuchaz.enigma.utils.Utils; @@ -19,8 +20,9 @@ import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.ArrayList; import java.util.List; +import java.util.*; +import java.util.stream.Collectors; public class MenuBar extends JMenuBar { @@ -153,6 +155,45 @@ public class MenuBar extends JMenuBar { this.exportJarMenu = item; } menu.addSeparator(); + { + JMenuItem stats = new JMenuItem("Mapping Stats..."); + + stats.addActionListener(event -> { + JFrame frame = new JFrame("Choose Included Members"); + Container pane = frame.getContentPane(); + pane.setLayout(new FlowLayout()); + + Map checkboxes = Arrays + .stream(StatsMember.values()) + .collect(Collectors.toMap(m -> m, m -> { + JCheckBox checkbox = new JCheckBox(Utils.caplisiseCamelCase(m.name())); + pane.add(checkbox); + return checkbox; + })); + + JButton button = new JButton("Generate Stats"); + + button.addActionListener(e -> { + Set includedMembers = checkboxes + .entrySet() + .stream() + .filter(entry -> entry.getValue().isSelected()) + .map(Map.Entry::getKey) + .collect(Collectors.toSet()); + + frame.setVisible(false); + frame.dispose(); + gui.getController().openStats(includedMembers); + }); + + pane.add(button); + frame.pack(); + frame.setVisible(true); + }); + + menu.add(stats); + } + menu.addSeparator(); { JMenuItem item = new JMenuItem("Exit"); menu.add(item); -- cgit v1.2.3