From 62b3d007a21f1ca737ca925b133fb1d3cdbff08e Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Sun, 8 Sep 2019 13:43:13 +0100 Subject: Cleanup the mappings menu items to use the mappings format enum, will be useful for when adding more formats --- src/main/java/cuchaz/enigma/gui/Gui.java | 15 ++-- .../java/cuchaz/enigma/gui/elements/MenuBar.java | 91 ++++++++-------------- src/main/java/cuchaz/enigma/utils/Utils.java | 10 +++ 3 files changed, 47 insertions(+), 69 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/cuchaz/enigma/gui/Gui.java b/src/main/java/cuchaz/enigma/gui/Gui.java index 5b9a3315..52a97bbe 100644 --- a/src/main/java/cuchaz/enigma/gui/Gui.java +++ b/src/main/java/cuchaz/enigma/gui/Gui.java @@ -46,6 +46,7 @@ import java.awt.event.*; import java.nio.file.Path; import java.util.List; import java.util.*; +import java.util.function.Consumer; import java.util.function.Function; public class Gui { @@ -325,12 +326,9 @@ public class Gui { // update menu this.menuBar.closeJarMenu.setEnabled(true); - this.menuBar.openTinyMappingsMenu.setEnabled(true); - this.menuBar.openEnigmaMappingsMenu.setEnabled(true); + this.menuBar.openMappingsMenus.forEach(item -> item.setEnabled(true)); this.menuBar.saveMappingsMenu.setEnabled(false); - this.menuBar.saveMappingEnigmaFileMenu.setEnabled(true); - this.menuBar.saveMappingEnigmaDirectoryMenu.setEnabled(true); - this.menuBar.saveMappingsSrgMenu.setEnabled(true); + this.menuBar.saveMappingsMenus.forEach(item -> item.setEnabled(true)); this.menuBar.closeMappingsMenu.setEnabled(true); this.menuBar.exportSourceMenu.setEnabled(true); this.menuBar.exportJarMenu.setEnabled(true); @@ -348,12 +346,9 @@ public class Gui { // update menu this.menuBar.closeJarMenu.setEnabled(false); - this.menuBar.openTinyMappingsMenu.setEnabled(false); - this.menuBar.openEnigmaMappingsMenu.setEnabled(false); + this.menuBar.openMappingsMenus.forEach(item -> item.setEnabled(false)); this.menuBar.saveMappingsMenu.setEnabled(false); - this.menuBar.saveMappingEnigmaFileMenu.setEnabled(false); - this.menuBar.saveMappingEnigmaDirectoryMenu.setEnabled(false); - this.menuBar.saveMappingsSrgMenu.setEnabled(false); + this.menuBar.saveMappingsMenus.forEach(item -> item.setEnabled(false)); this.menuBar.closeMappingsMenu.setEnabled(false); this.menuBar.exportSourceMenu.setEnabled(false); this.menuBar.exportJarMenu.setEnabled(false); diff --git a/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java b/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java index a3bd2fe5..45daaca6 100644 --- a/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java +++ b/src/main/java/cuchaz/enigma/gui/elements/MenuBar.java @@ -6,6 +6,7 @@ import cuchaz.enigma.gui.Gui; import cuchaz.enigma.gui.dialog.AboutDialog; import cuchaz.enigma.gui.dialog.SearchDialog; import cuchaz.enigma.translation.mapping.serde.MappingFormat; +import cuchaz.enigma.utils.Utils; import javax.swing.*; import java.awt.*; @@ -18,16 +19,15 @@ 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; public class MenuBar extends JMenuBar { public final JMenuItem closeJarMenu; - public final JMenuItem openEnigmaMappingsMenu; - public final JMenuItem openTinyMappingsMenu; + public final List openMappingsMenus; public final JMenuItem saveMappingsMenu; - public final JMenuItem saveMappingEnigmaFileMenu; - public final JMenuItem saveMappingEnigmaDirectoryMenu; - public final JMenuItem saveMappingsSrgMenu; + public final List saveMappingsMenus; public final JMenuItem closeMappingsMenu; public final JMenuItem dropMappingsMenu; public final JMenuItem exportSourceMenu; @@ -61,27 +61,20 @@ public class MenuBar extends JMenuBar { JMenu openMenu = new JMenu("Open Mappings..."); menu.add(openMenu); { - JMenuItem item = new JMenuItem("Enigma"); - openMenu.add(item); - item.addActionListener(event -> { - if (this.gui.enigmaMappingsFileChooser.showOpenDialog(this.gui.getFrame()) == JFileChooser.APPROVE_OPTION) { - File selectedFile = this.gui.enigmaMappingsFileChooser.getSelectedFile(); - MappingFormat format = selectedFile.isDirectory() ? MappingFormat.ENIGMA_DIRECTORY : MappingFormat.ENIGMA_FILE; - this.gui.getController().openMappings(format, selectedFile.toPath()); - } - }); - this.openEnigmaMappingsMenu = item; - - item = new JMenuItem("Tiny"); - openMenu.add(item); - item.addActionListener(event -> { - this.gui.tinyMappingsFileChooser.setVisible(true); - File file = new File(this.gui.tinyMappingsFileChooser.getDirectory() + File.separator + this.gui.tinyMappingsFileChooser.getFile()); - if (file.exists()) { - this.gui.getController().openMappings(MappingFormat.TINY_FILE, file.toPath()); + openMappingsMenus = new ArrayList<>(); + for(MappingFormat format : MappingFormat.values()){ + if(format.getReader() != null){ + JMenuItem item = new JMenuItem(Utils.caplisiseCamelCase(format.name())); + openMenu.add(item); + item.addActionListener(event -> { + if (this.gui.enigmaMappingsFileChooser.showOpenDialog(this.gui.getFrame()) == JFileChooser.APPROVE_OPTION) { + File selectedFile = this.gui.enigmaMappingsFileChooser.getSelectedFile(); + this.gui.getController().openMappings(format, selectedFile.toPath()); + } + }); + openMappingsMenus.add(item); } - }); - this.openTinyMappingsMenu = item; + } } { JMenuItem item = new JMenuItem("Save Mappings"); @@ -95,41 +88,21 @@ public class MenuBar extends JMenuBar { JMenu saveMenu = new JMenu("Save Mappings As..."); menu.add(saveMenu); { - JMenuItem item = new JMenuItem("Enigma (single file)"); - saveMenu.add(item); - item.addActionListener(event -> { - // TODO: Use a specific file chooser for it - if (this.gui.enigmaMappingsFileChooser.showSaveDialog(this.gui.getFrame()) == JFileChooser.APPROVE_OPTION) { - this.gui.getController().saveMappings(this.gui.enigmaMappingsFileChooser.getSelectedFile().toPath(), MappingFormat.ENIGMA_FILE); - this.saveMappingsMenu.setEnabled(true); - } - }); - this.saveMappingEnigmaFileMenu = item; - } - { - JMenuItem item = new JMenuItem("Enigma (directory)"); - saveMenu.add(item); - item.addActionListener(event -> { - // TODO: Use a specific file chooser for it - if (this.gui.enigmaMappingsFileChooser.showSaveDialog(this.gui.getFrame()) == JFileChooser.APPROVE_OPTION) { - this.gui.getController().saveMappings(this.gui.enigmaMappingsFileChooser.getSelectedFile().toPath(), MappingFormat.ENIGMA_DIRECTORY); - this.saveMappingsMenu.setEnabled(true); - } - }); - item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK)); - this.saveMappingEnigmaDirectoryMenu = item; - } - { - JMenuItem item = new JMenuItem("SRG (single file)"); - saveMenu.add(item); - item.addActionListener(event -> { - // TODO: Use a specific file chooser for it - if (this.gui.enigmaMappingsFileChooser.showSaveDialog(this.gui.getFrame()) == JFileChooser.APPROVE_OPTION) { - this.gui.getController().saveMappings(this.gui.enigmaMappingsFileChooser.getSelectedFile().toPath(), MappingFormat.SRG_FILE); - this.saveMappingsMenu.setEnabled(true); + saveMappingsMenus = new ArrayList<>(); + for(MappingFormat format : MappingFormat.values()){ + if(format.getWriter() != null){ + JMenuItem item = new JMenuItem(Utils.caplisiseCamelCase(format.name())); + saveMenu.add(item); + item.addActionListener(event -> { + // TODO: Use a specific file chooser for it + if (this.gui.enigmaMappingsFileChooser.showSaveDialog(this.gui.getFrame()) == JFileChooser.APPROVE_OPTION) { + this.gui.getController().saveMappings(this.gui.enigmaMappingsFileChooser.getSelectedFile().toPath(), format); + this.saveMappingsMenu.setEnabled(true); + } + }); + saveMappingsMenus.add(item); } - }); - this.saveMappingsSrgMenu = item; + } } { JMenuItem item = new JMenuItem("Close Mappings"); diff --git a/src/main/java/cuchaz/enigma/utils/Utils.java b/src/main/java/cuchaz/enigma/utils/Utils.java index 67880428..1134c2a8 100644 --- a/src/main/java/cuchaz/enigma/utils/Utils.java +++ b/src/main/java/cuchaz/enigma/utils/Utils.java @@ -25,6 +25,8 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.Comparator; import java.util.List; +import java.util.Locale; +import java.util.StringJoiner; import java.util.stream.Collectors; public class Utils { @@ -105,4 +107,12 @@ public class Utils { } } } + + public static String caplisiseCamelCase(String input){ + StringJoiner stringJoiner = new StringJoiner(" "); + for(String word : input.toLowerCase(Locale.ROOT).split("_")){ + stringJoiner.add(word.substring(0, 1).toUpperCase() + word.substring(1)); + } + return stringJoiner.toString(); + } } -- cgit v1.2.3