Use SaveFileChooser in other parts of OR

This commit is contained in:
SiboVG 2023-03-23 01:27:55 +01:00
parent e1c86f6a74
commit 605c92b325
9 changed files with 40 additions and 29 deletions

View File

@ -27,6 +27,7 @@ import javax.swing.event.TreeSelectionListener;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
import net.sf.openrocket.gui.widgets.SaveFileChooser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -363,7 +364,7 @@ public class PrintDialog extends JDialog implements TreeSelectionListener {
*/
private boolean onSavePDF() {
JFileChooser chooser = new JFileChooser();
JFileChooser chooser = new SaveFileChooser();
chooser.setFileFilter(FileHelper.PDF_FILTER);
// Select initial directory

View File

@ -52,6 +52,7 @@ import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreePath;
import net.sf.openrocket.arch.SystemInfo;
import net.sf.openrocket.gui.widgets.SaveFileChooser;
import net.sf.openrocket.rocketcomponent.FlightConfiguration;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -1154,7 +1155,7 @@ public class GeneralOptimizationDialog extends JDialog {
trans.get("export.header"), trans.get("export.header.ttip"));
JFileChooser chooser = new JFileChooser();
JFileChooser chooser = new SaveFileChooser();
chooser.setFileFilter(FileHelper.CSV_FILTER);
chooser.setCurrentDirectory(((SwingPreferences) Application.getPreferences()).getDefaultDirectory());
chooser.setAccessory(csvOptions);

View File

@ -42,6 +42,7 @@ import net.sf.openrocket.gui.util.GUIUtil;
import net.sf.openrocket.gui.util.Icons;
import net.sf.openrocket.gui.util.SimpleFileFilter;
import net.sf.openrocket.gui.util.SwingPreferences;
import net.sf.openrocket.gui.widgets.SaveFileChooser;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.logging.LoggingSystemSetup;
import net.sf.openrocket.logging.Markers;
@ -200,7 +201,7 @@ public class PhotoFrame extends JFrame {
final FileFilter png = new SimpleFileFilter(trans.get("PhotoFrame.fileFilter.png"),
".png");
final JFileChooser chooser = new JFileChooser();
final JFileChooser chooser = new SaveFileChooser();
chooser.addChoosableFileFilter(png);
chooser.setFileFilter(png);

View File

@ -1512,11 +1512,6 @@ public class BasicFrame extends JFrame {
int option = chooser.showSaveDialog(BasicFrame.this);
// If the user entered an illegal filename, show the dialog again
while (option == SaveFileChooser.ILLEGAL_FILENAME_ERROR) {
option = chooser.showSaveDialog(BasicFrame.this);
}
if (option != JFileChooser.APPROVE_OPTION) {
log.info(Markers.USER_MARKER, "User decided not to save, option=" + option);
return false;

View File

@ -43,6 +43,7 @@ import net.sf.openrocket.arch.SystemInfo;
import net.sf.openrocket.gui.components.CsvOptionPanel;
import net.sf.openrocket.gui.util.FileHelper;
import net.sf.openrocket.gui.util.SwingPreferences;
import net.sf.openrocket.gui.widgets.SaveFileChooser;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ -403,25 +404,25 @@ public class SimulationPanel extends JPanel {
return;
}
JFileChooser fch = setUpSimExportCSVFileChooser();
int selectionStatus = fch.showSaveDialog(tableParent);
JFileChooser chooser = setUpSimExportCSVFileChooser();
int selectionStatus = chooser.showSaveDialog(tableParent);
if (selectionStatus != JFileChooser.APPROVE_OPTION) {
log.debug("User cancelled CSV export");
return;
}
// Fetch the info from the file chooser
File CSVFile = fch.getSelectedFile();
File CSVFile = chooser.getSelectedFile();
CSVFile = FileHelper.forceExtension(CSVFile, "csv");
if (!FileHelper.confirmWrite(CSVFile, SimulationPanel.this)) {
log.debug("User cancelled CSV export overwrite");
return;
}
String separator = ((CsvOptionPanel) fch.getAccessory()).getFieldSeparator();
int precision = ((CsvOptionPanel) fch.getAccessory()).getDecimalPlaces();
boolean isExponentialNotation = ((CsvOptionPanel) fch.getAccessory()).isExponentialNotation();
((CsvOptionPanel) fch.getAccessory()).storePreferences();
String separator = ((CsvOptionPanel) chooser.getAccessory()).getFieldSeparator();
int precision = ((CsvOptionPanel) chooser.getAccessory()).getDecimalPlaces();
boolean isExponentialNotation = ((CsvOptionPanel) chooser.getAccessory()).isExponentialNotation();
((CsvOptionPanel) chooser.getAccessory()).storePreferences();
// Handle some special separator options from CsvOptionPanel
if (separator.equals(trans.get("CsvOptionPanel.separator.space"))) {
@ -439,29 +440,29 @@ public class SimulationPanel extends JPanel {
* @return The file chooser.
*/
private JFileChooser setUpSimExportCSVFileChooser() {
JFileChooser fch = new JFileChooser();
fch.setDialogTitle(trans.get("simpanel.pop.exportToCSV.save.dialog.title"));
fch.setFileFilter(FileHelper.CSV_FILTER);
fch.setCurrentDirectory(((SwingPreferences) Application.getPreferences()).getDefaultDirectory());
fch.setAcceptAllFileFilterUsed(false);
JFileChooser chooser = new SaveFileChooser();
chooser.setDialogTitle(trans.get("simpanel.pop.exportToCSV.save.dialog.title"));
chooser.setFileFilter(FileHelper.CSV_FILTER);
chooser.setCurrentDirectory(((SwingPreferences) Application.getPreferences()).getDefaultDirectory());
chooser.setAcceptAllFileFilterUsed(false);
// Default output CSV to same name as the document's rocket name.
String fileName = document.getRocket().getName() + ".csv";
fch.setSelectedFile(new File(fileName));
chooser.setSelectedFile(new File(fileName));
// Add CSV options to FileChooser
CsvOptionPanel CSVOptions = new CsvOptionPanel(SimulationTableCSVExport.class);
fch.setAccessory(CSVOptions);
chooser.setAccessory(CSVOptions);
// TODO: update this dynamically instead of hard-coded values
// The macOS file chooser has an issue where it does not update its size when the accessory is added.
if (SystemInfo.getPlatform() == SystemInfo.Platform.MAC_OS) {
Dimension currentSize = fch.getPreferredSize();
Dimension currentSize = chooser.getPreferredSize();
Dimension newSize = new Dimension((int) (1.5 * currentSize.width), (int) (1.3 * currentSize.height));
fch.setPreferredSize(newSize);
chooser.setPreferredSize(newSize);
}
return fch;
return chooser;
}
private Simulation[] getSelectedSimulations() {

View File

@ -26,6 +26,7 @@ import net.sf.openrocket.gui.util.FileHelper;
import net.sf.openrocket.gui.util.GUIUtil;
import net.sf.openrocket.gui.util.Icons;
import net.sf.openrocket.gui.util.SwingPreferences;
import net.sf.openrocket.gui.widgets.SaveFileChooser;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.startup.Application;
import net.sf.openrocket.startup.Preferences;
@ -173,7 +174,7 @@ public class SimulationPlotDialog extends JDialog {
}
private boolean doPngExport(ChartPanel chartPanel, JFreeChart chart){
JFileChooser chooser = new JFileChooser();
JFileChooser chooser = new SaveFileChooser();
chooser.setAcceptAllFileFilterUsed(false);
chooser.setFileFilter(FileHelper.PNG_FILTER);
chooser.setCurrentDirectory(((SwingPreferences) Application.getPreferences()).getDefaultDirectory());

View File

@ -32,6 +32,7 @@ import net.sf.openrocket.gui.util.FileHelper;
import net.sf.openrocket.gui.util.GUIUtil;
import net.sf.openrocket.gui.util.SaveCSVWorker;
import net.sf.openrocket.gui.util.SwingPreferences;
import net.sf.openrocket.gui.widgets.SaveFileChooser;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.simulation.FlightData;
import net.sf.openrocket.simulation.FlightDataBranch;
@ -219,7 +220,7 @@ public class SimulationExportPanel extends JPanel {
}
public boolean doExport() {
JFileChooser chooser = new JFileChooser();
JFileChooser chooser = new SaveFileChooser();
chooser.setFileFilter(FileHelper.CSV_FILTER);
chooser.setCurrentDirectory(((SwingPreferences) Application.getPreferences()).getDefaultDirectory());

View File

@ -1,5 +1,6 @@
package net.sf.openrocket.gui.widgets;
import net.sf.openrocket.gui.main.BasicFrame;
import net.sf.openrocket.l10n.Translator;
import net.sf.openrocket.startup.Application;
@ -36,7 +37,15 @@ public class SaveFileChooser extends JFileChooser {
String.format(trans.get("SaveAsFileChooser.illegalFilename.message"), filename, c),
trans.get("SaveAsFileChooser.illegalFilename.title"),
JOptionPane.WARNING_MESSAGE);
return ILLEGAL_FILENAME_ERROR;
option = ILLEGAL_FILENAME_ERROR;
// If the user entered an illegal filename, show the dialog again
while (option == SaveFileChooser.ILLEGAL_FILENAME_ERROR) {
option = showSaveDialog(parent);
}
return option;
}
}

View File

@ -37,6 +37,7 @@ import net.sf.openrocket.gui.preset.PresetResultListener;
import net.sf.openrocket.gui.util.FileHelper;
import net.sf.openrocket.gui.util.Icons;
import net.sf.openrocket.gui.util.SwingPreferences;
import net.sf.openrocket.gui.widgets.SaveFileChooser;
import net.sf.openrocket.logging.Markers;
import net.sf.openrocket.material.Material;
import net.sf.openrocket.preset.ComponentPreset;
@ -404,7 +405,7 @@ public class ComponentPresetEditor extends JPanel implements PresetResultListene
private boolean saveAsORC() throws JAXBException, IOException {
File file = null;
final JFileChooser chooser = new JFileChooser();
final JFileChooser chooser = new SaveFileChooser();
chooser.addChoosableFileFilter(FileHelper.OPEN_ROCKET_COMPONENT_FILTER);
chooser.setFileFilter(FileHelper.OPEN_ROCKET_COMPONENT_FILTER);