diff options
Diffstat (limited to 'src/main/java/cuchaz/enigma/gui/elements')
| -rw-r--r-- | src/main/java/cuchaz/enigma/gui/elements/MenuBar.java | 43 |
1 files changed, 42 insertions, 1 deletions
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; | |||
| 5 | import cuchaz.enigma.gui.Gui; | 5 | import cuchaz.enigma.gui.Gui; |
| 6 | import cuchaz.enigma.gui.dialog.AboutDialog; | 6 | import cuchaz.enigma.gui.dialog.AboutDialog; |
| 7 | import cuchaz.enigma.gui.dialog.SearchDialog; | 7 | import cuchaz.enigma.gui.dialog.SearchDialog; |
| 8 | import cuchaz.enigma.gui.stats.StatsMember; | ||
| 8 | import cuchaz.enigma.translation.mapping.serde.MappingFormat; | 9 | import cuchaz.enigma.translation.mapping.serde.MappingFormat; |
| 9 | import cuchaz.enigma.utils.Utils; | 10 | import cuchaz.enigma.utils.Utils; |
| 10 | 11 | ||
| @@ -19,8 +20,9 @@ import java.net.URL; | |||
| 19 | import java.nio.file.Files; | 20 | import java.nio.file.Files; |
| 20 | import java.nio.file.Path; | 21 | import java.nio.file.Path; |
| 21 | import java.nio.file.Paths; | 22 | import java.nio.file.Paths; |
| 22 | import java.util.ArrayList; | ||
| 23 | import java.util.List; | 23 | import java.util.List; |
| 24 | import java.util.*; | ||
| 25 | import java.util.stream.Collectors; | ||
| 24 | 26 | ||
| 25 | public class MenuBar extends JMenuBar { | 27 | public class MenuBar extends JMenuBar { |
| 26 | 28 | ||
| @@ -154,6 +156,45 @@ public class MenuBar extends JMenuBar { | |||
| 154 | } | 156 | } |
| 155 | menu.addSeparator(); | 157 | menu.addSeparator(); |
| 156 | { | 158 | { |
| 159 | JMenuItem stats = new JMenuItem("Mapping Stats..."); | ||
| 160 | |||
| 161 | stats.addActionListener(event -> { | ||
| 162 | JFrame frame = new JFrame("Choose Included Members"); | ||
| 163 | Container pane = frame.getContentPane(); | ||
| 164 | pane.setLayout(new FlowLayout()); | ||
| 165 | |||
| 166 | Map<StatsMember, JCheckBox> checkboxes = Arrays | ||
| 167 | .stream(StatsMember.values()) | ||
| 168 | .collect(Collectors.toMap(m -> m, m -> { | ||
| 169 | JCheckBox checkbox = new JCheckBox(Utils.caplisiseCamelCase(m.name())); | ||
| 170 | pane.add(checkbox); | ||
| 171 | return checkbox; | ||
| 172 | })); | ||
| 173 | |||
| 174 | JButton button = new JButton("Generate Stats"); | ||
| 175 | |||
| 176 | button.addActionListener(e -> { | ||
| 177 | Set<StatsMember> includedMembers = checkboxes | ||
| 178 | .entrySet() | ||
| 179 | .stream() | ||
| 180 | .filter(entry -> entry.getValue().isSelected()) | ||
| 181 | .map(Map.Entry::getKey) | ||
| 182 | .collect(Collectors.toSet()); | ||
| 183 | |||
| 184 | frame.setVisible(false); | ||
| 185 | frame.dispose(); | ||
| 186 | gui.getController().openStats(includedMembers); | ||
| 187 | }); | ||
| 188 | |||
| 189 | pane.add(button); | ||
| 190 | frame.pack(); | ||
| 191 | frame.setVisible(true); | ||
| 192 | }); | ||
| 193 | |||
| 194 | menu.add(stats); | ||
| 195 | } | ||
| 196 | menu.addSeparator(); | ||
| 197 | { | ||
| 157 | JMenuItem item = new JMenuItem("Exit"); | 198 | JMenuItem item = new JMenuItem("Exit"); |
| 158 | menu.add(item); | 199 | menu.add(item); |
| 159 | item.addActionListener(event -> this.gui.close()); | 200 | item.addActionListener(event -> this.gui.close()); |