[fixes #899] Use only filename in save/export filename input

This commit is contained in:
Sibo Van Gool 2021-09-06 23:33:05 +02:00
parent 46b974cae7
commit b8c9bd94d6
2 changed files with 22 additions and 4 deletions

View File

@ -34,7 +34,7 @@ import net.sf.openrocket.util.ArrayList;
*/ */
public class OpenRocketDocument implements ComponentChangeListener { public class OpenRocketDocument implements ComponentChangeListener {
private static final Logger log = LoggerFactory.getLogger(OpenRocketDocument.class); private static final Logger log = LoggerFactory.getLogger(OpenRocketDocument.class);
private final List<String> file_extensions = Arrays.asList("ork", "rkt"); // Possible extensions of an OpenRocket document
/** /**
* The minimum number of undo levels that are stored. * The minimum number of undo levels that are stored.
*/ */
@ -193,6 +193,23 @@ public class OpenRocketDocument implements ComponentChangeListener {
public File getFile() { public File getFile() {
return file; 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 * set the file handler object for the document

View File

@ -3,6 +3,9 @@ package net.sf.openrocket.gui.main;
import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener; import java.beans.PropertyChangeListener;
import java.io.File; import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import javax.swing.JFileChooser; import javax.swing.JFileChooser;
@ -33,12 +36,11 @@ public class SaveAsFileChooser extends JFileChooser {
this.setAcceptAllFileFilterUsed(true); this.setAcceptAllFileFilterUsed(true);
File defaultFilename = document.getFile(); File defaultFilename = document.getFileNoExtension();
switch( type ) { switch( type ) {
default: default:
case OPENROCKET: case OPENROCKET:
defaultFilename = FileHelper.forceExtension(defaultFilename,"ork");
this.setDialogTitle(trans.get("saveAs.openrocket.title")); this.setDialogTitle(trans.get("saveAs.openrocket.title"));
storageChooser = new StorageOptionChooser(document, document.getDefaultStorageOptions()); storageChooser = new StorageOptionChooser(document, document.getDefaultStorageOptions());
this.setAccessory(storageChooser); this.setAccessory(storageChooser);
@ -46,7 +48,6 @@ public class SaveAsFileChooser extends JFileChooser {
this.setFileFilter(FileHelper.OPENROCKET_DESIGN_FILTER); this.setFileFilter(FileHelper.OPENROCKET_DESIGN_FILTER);
break; break;
case ROCKSIM: case ROCKSIM:
defaultFilename = FileHelper.forceExtension(defaultFilename,"rkt");
this.setDialogTitle(trans.get("saveAs.rocksim.title")); this.setDialogTitle(trans.get("saveAs.rocksim.title"));
storageChooser = null; storageChooser = null;
this.addChoosableFileFilter(FileHelper.ROCKSIM_DESIGN_FILTER); this.addChoosableFileFilter(FileHelper.ROCKSIM_DESIGN_FILTER);