From b8c9bd94d6a57e003d6bbea1c9eba0b931c38e3e Mon Sep 17 00:00:00 2001 From: Sibo Van Gool Date: Mon, 6 Sep 2021 23:33:05 +0200 Subject: [PATCH] [fixes #899] Use only filename in save/export filename input --- .../document/OpenRocketDocument.java | 19 ++++++++++++++++++- .../gui/main/SaveAsFileChooser.java | 7 ++++--- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/core/src/net/sf/openrocket/document/OpenRocketDocument.java b/core/src/net/sf/openrocket/document/OpenRocketDocument.java index eb0f26d7a..358aca2b4 100644 --- a/core/src/net/sf/openrocket/document/OpenRocketDocument.java +++ b/core/src/net/sf/openrocket/document/OpenRocketDocument.java @@ -34,7 +34,7 @@ import net.sf.openrocket.util.ArrayList; */ public class OpenRocketDocument implements ComponentChangeListener { private static final Logger log = LoggerFactory.getLogger(OpenRocketDocument.class); - + private final List file_extensions = Arrays.asList("ork", "rkt"); // Possible extensions of an OpenRocket document /** * The minimum number of undo levels that are stored. */ @@ -193,6 +193,23 @@ public class OpenRocketDocument implements ComponentChangeListener { public File getFile() { return file; } + + /** + * returns the File handler object for the document without the file extension (e.g. '.ork' removed) + * @return the File handler object for the document without the file extension + */ + public File getFileNoExtension() { + if (file == null) return null; + int index = file.getAbsolutePath().lastIndexOf('.'); + if (index > 0) { + String filename = file.getAbsolutePath().substring(0, index); + String extension = file.getAbsolutePath().substring(index + 1); + if (file_extensions.contains(extension)) { + return new File(filename); + } + } + return file; + } /** * set the file handler object for the document diff --git a/swing/src/net/sf/openrocket/gui/main/SaveAsFileChooser.java b/swing/src/net/sf/openrocket/gui/main/SaveAsFileChooser.java index 36d84aa5d..d6bf1427b 100644 --- a/swing/src/net/sf/openrocket/gui/main/SaveAsFileChooser.java +++ b/swing/src/net/sf/openrocket/gui/main/SaveAsFileChooser.java @@ -3,6 +3,9 @@ package net.sf.openrocket.gui.main; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; import javax.swing.JFileChooser; @@ -33,12 +36,11 @@ public class SaveAsFileChooser extends JFileChooser { this.setAcceptAllFileFilterUsed(true); - File defaultFilename = document.getFile(); + File defaultFilename = document.getFileNoExtension(); switch( type ) { default: case OPENROCKET: - defaultFilename = FileHelper.forceExtension(defaultFilename,"ork"); this.setDialogTitle(trans.get("saveAs.openrocket.title")); storageChooser = new StorageOptionChooser(document, document.getDefaultStorageOptions()); this.setAccessory(storageChooser); @@ -46,7 +48,6 @@ public class SaveAsFileChooser extends JFileChooser { this.setFileFilter(FileHelper.OPENROCKET_DESIGN_FILTER); break; case ROCKSIM: - defaultFilename = FileHelper.forceExtension(defaultFilename,"rkt"); this.setDialogTitle(trans.get("saveAs.rocksim.title")); storageChooser = null; this.addChoosableFileFilter(FileHelper.ROCKSIM_DESIGN_FILTER);