From 735966de36049c079df18a7f3eac3719322f2577 Mon Sep 17 00:00:00 2001 From: hcraigmiller <68821492+hcraigmiller@users.noreply.github.com> Date: Sun, 1 May 2022 00:12:09 -0700 Subject: [PATCH] NEW Export Feature Replaces previous commit --- core/resources/l10n/messages.properties | 4 +- core/resources/pix/icons/RASAero_16.png | Bin 0 -> 681 bytes core/resources/pix/icons/Rocksim_16.png | Bin 0 -> 891 bytes core/resources/pix/icons/model_export.png | Bin 0 -> 497 bytes core/resources/pix/icons/model_import.png | Bin 0 -> 726 bytes .../sf/openrocket/gui/main/BasicFrame.java | 216 ++++++++---------- .../src/net/sf/openrocket/gui/util/Icons.java | 25 +- 7 files changed, 115 insertions(+), 130 deletions(-) create mode 100644 core/resources/pix/icons/RASAero_16.png create mode 100644 core/resources/pix/icons/Rocksim_16.png create mode 100644 core/resources/pix/icons/model_export.png create mode 100644 core/resources/pix/icons/model_import.png diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index 0b0465672..363c32b1e 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -1298,8 +1298,8 @@ main.menu.file.saveAs = Save as... main.menu.file.saveAs.desc = Save the current rocket design to a new file main.menu.file.import = Import... main.menu.file.import.desc = Import model from RockSim rkt file -main.menu.file.export = Export... -main.menu.file.export.desc = Export model to RockSim rkt file +main.menu.file.export_as = Export... +main.menu.file.export_as.desc = Export model to RockSim rkt file main.menu.file.print = Print / Export PDF... main.menu.file.print.desc = Print or save as PDF the parts list and fin templates main.menu.file.close = Close diff --git a/core/resources/pix/icons/RASAero_16.png b/core/resources/pix/icons/RASAero_16.png new file mode 100644 index 0000000000000000000000000000000000000000..c9fc75446180769f3b43a38f8e8053c821eadd6f GIT binary patch literal 681 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 "Export as..." menu and submenu + + // INITIALIZE "Export as..." submenu with options list + JMenu exportSubMenu = new JMenu(); + JMenuItem exportMenu = new JMenuItem(), + RASAero= new JMenuItem("RASAero - Future"), + Rocksim = new JMenuItem("Rocksim"); + + // CREATE File > "Export as..." menu line with icon + exportSubMenu = new JMenu(trans.get("main.menu.file.export_as")); + exportSubMenu.getAccessibleContext().setAccessibleDescription(trans.get("main.menu.file.export_as.desc")); + exportSubMenu.setIcon(Icons.FILE_EXPORT_AS); + + // CREATE "Export as..." submenu + // ADD Export option items with icons to submenu + exportSubMenu.add(Rocksim); + Rocksim.setIcon(Icons.ROCKSIM_ICON); + exportSubMenu.add(RASAero); + RASAero.setIcon(Icons.RASAERO_ICON); + + // ADD Listeners + RASAero.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e) { - log.info(Markers.USER_MARKER, "Export... selected"); - exportAction(); - } - }); - menu.add(item); + exportRASAeroAction();}}); + Rocksim.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + exportRocksimAction();}}); + + // ADD Export options submenu to export menu + menu.add(exportSubMenu); + +// END Create and implement File > "Export as..." menu and submenu //// Export decal... item = new JMenuItem(trans.get("main.menu.file.exportDecal")); @@ -1169,7 +1134,7 @@ public class BasicFrame extends JFrame { } } - private void importAction() { + public void importAction() { JFileChooser chooser = new JFileChooser(); chooser.addChoosableFileFilter(FileHelper.ALL_DESIGNS_FILTER); @@ -1275,7 +1240,7 @@ public class BasicFrame extends JFrame { * * @param worker the OpenFileWorker that loads the file. * @param displayName the file name to display in dialogs. - * @param file the File to set the document to (may be null). +// * @param file the File to set the document to (may be null). * @param parent * @param openRocketConfigDialog if true, will open the configuration dialog of the rocket. This is useful for examples. * @return @@ -1376,20 +1341,35 @@ public class BasicFrame extends JFrame { log.info("Document does not contain file, opening save as dialog instead"); return saveAsAction(); } - log.info("Saving document to " + file); - return saveAsOpenRocket(file); } - /** - * "Export" action. + // BEGIN RASAERO Export Action *** UNDER CONSTRUCTION -- CURRENTLY FOR TESTING ONLY *** + /** + * MODEL "Export as" RASAero file format * - * @return true if the file was saved, false otherwise + * @return true if the file was saved, false otherwise */ - private boolean exportAction() { - File file = null; + public boolean exportRASAeroAction() { + return false; + } + // END RASAERO Export Action + + public void actionPerformed(ActionEvent e) { + log.info(Markers.USER_MARKER, "Import... selected"); + importAction(); + } + + // BEGIN ROCKSIM Export Action + /** + * MODEL "Export as" RASAero file format + * + * @return true if the file was saved, false otherwise + */ + public boolean exportRocksimAction() { + File file; final SaveAsFileChooser chooser = SaveAsFileChooser.build(document, FileType.ROCKSIM); @@ -1414,6 +1394,7 @@ public class BasicFrame extends JFrame { } return false; } + // END ROCKSIM Export Action /** * Perform the writing of the design to the given file in Rocksim format. @@ -1473,7 +1454,7 @@ public class BasicFrame extends JFrame { if (!DecalNotFoundDialog.showDialog(null, decex) && decal != null) { decal.setIgnored(true); } - return saveRocksimFile(file, options); // Resave + return saveRocksimFile(file, options); // Re-save } } @@ -1565,7 +1546,7 @@ public class BasicFrame extends JFrame { if (!DecalNotFoundDialog.showDialog(null, decex) && decal != null) { decal.setIgnored(true); } - return saveAsOpenRocket(file); // Resave + return saveAsOpenRocket(file); // Re-save } else { Reflection.handleWrappedException(e); @@ -1734,8 +1715,10 @@ public class BasicFrame extends JFrame { simulationPanel.activating(); } } -} + public void open() { + } +} class BasicFrame_changeAdapter implements javax.swing.event.ChangeListener { BasicFrame adaptee; @@ -1746,5 +1729,4 @@ class BasicFrame_changeAdapter implements javax.swing.event.ChangeListener { public void stateChanged(ChangeEvent e) { adaptee.stateChanged(e); } -} - +} \ No newline at end of file diff --git a/swing/src/net/sf/openrocket/gui/util/Icons.java b/swing/src/net/sf/openrocket/gui/util/Icons.java index 76ed87fdd..00b7dd63e 100644 --- a/swing/src/net/sf/openrocket/gui/util/Icons.java +++ b/swing/src/net/sf/openrocket/gui/util/Icons.java @@ -1,20 +1,17 @@ package net.sf.openrocket.gui.util; -import java.net.URL; -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -import javax.swing.Icon; -import javax.swing.ImageIcon; - import net.sf.openrocket.document.Simulation; import net.sf.openrocket.l10n.Translator; import net.sf.openrocket.startup.Application; - import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.swing.*; +import java.net.URL; +import java.util.Collections; +import java.util.HashMap; +import java.util.Map; + public class Icons { private static final Logger log = LoggerFactory.getLogger(Icons.class); @@ -52,6 +49,8 @@ public class Icons { public static final Icon FILE_OPEN_EXAMPLE = loadImageIcon("pix/icons/document-open-example.png", "Open example document"); public static final Icon FILE_SAVE = loadImageIcon("pix/icons/document-save.png", "Save document"); public static final Icon FILE_SAVE_AS = loadImageIcon("pix/icons/document-save-as.png", "Save document as"); + public static final Icon FILE_IMPORT = loadImageIcon("pix/icons/model_import.png", "Import"); + public static final Icon FILE_EXPORT_AS = loadImageIcon("pix/icons/model_export.png", "Export model as..."); public static final Icon FILE_PRINT = loadImageIcon("pix/icons/document-print.png", "Print document"); public static final Icon FILE_CLOSE = loadImageIcon("pix/icons/document-close.png", "Close document"); public static final Icon FILE_QUIT = loadImageIcon("pix/icons/application-exit.png", "Quit OpenRocket"); @@ -88,8 +87,12 @@ public class Icons { public static final Icon CG_OVERRIDE = loadImageIcon("pix/icons/cg-override.png", "CG Override"); public static final Icon MASS_OVERRIDE = loadImageIcon("pix/icons/mass-override.png", "Mass Override"); - - + +// MANUFACTURERS ICONS + public static final Icon RASAERO_ICON = loadImageIcon("pix/icons/RASAero_16.png", "RASAero Icon"); + public static final Icon ROCKSIM_ICON = loadImageIcon("pix/icons/Rocksim_16.png", "Rocksim Icon"); + + static { log.debug("Icons loaded"); }