- File saveFile = _fileChooser.getSelectedFile();
- String lineSeparator = System.getProperty("line.separator");
- // Get coordinate format and altitude format
- int coordFormat = Coordinate.FORMAT_NONE;
- for (int i=0; i<_coordUnitsRadios.length; i++)
- if (_coordUnitsRadios[i].isSelected())
- coordFormat = FORMAT_COORDS[i];
- int altitudeFormat = Altitude.FORMAT_NONE;
- for (int i=0; i<_altitudeUnitsRadios.length; i++)
- if (_altitudeUnitsRadios[i].isSelected())
- altitudeFormat = FORMAT_ALTS[i];
-
- // Check if file exists, don't overwrite any files for v1!
- if (!saveFile.exists())
+ return saveToFile(_fileChooser.getSelectedFile());
+ }
+ return true; // cancelled
+ }
+
+
+ /**
+ * Save the track to the specified file using the chosen options
+ * @param inSaveFile file to save to
+ * @return true if save successful, false if failed
+ */
+ private boolean saveToFile(File inSaveFile)
+ {
+ // TODO: Shorten method
+ FileWriter writer = null;
+ final String lineSeparator = System.getProperty("line.separator");
+ boolean saveOK = true;
+ // Get coordinate format and altitude format
+ int coordFormat = Coordinate.FORMAT_NONE;
+ for (int i=0; i<_coordUnitsRadios.length; i++)
+ if (_coordUnitsRadios[i].isSelected())
+ coordFormat = FORMAT_COORDS[i];
+ Altitude.Format altitudeFormat = Altitude.Format.NO_FORMAT;
+ for (int i=0; i<_altitudeUnitsRadios.length; i++)
+ {
+ if (_altitudeUnitsRadios[i].isSelected()) {
+ altitudeFormat = FORMAT_ALTS[i];
+ }
+ }
+ // Get timestamp format
+ int timestampFormat = Timestamp.FORMAT_ORIGINAL;
+ for (int i=0; i<_timestampUnitsRadios.length; i++)
+ {
+ if (_timestampUnitsRadios[i].isSelected()) {
+ timestampFormat = FORMAT_TIMES[i];
+ }
+ }
+
+ // Correct chosen filename if necessary
+ final File saveFile = (isFilenameOk(inSaveFile)?inSaveFile:new File(inSaveFile.getAbsolutePath() + ".txt"));
+
+ // Check if file exists, and confirm overwrite if necessary
+ Object[] buttonTexts = {I18nManager.getText("button.overwrite"), I18nManager.getText("button.cancel")};
+ if (!saveFile.exists() || JOptionPane.showOptionDialog(_parentFrame,
+ I18nManager.getText("dialog.save.overwrite.text"),
+ I18nManager.getText("dialog.save.overwrite.title"), JOptionPane.YES_NO_OPTION,
+ JOptionPane.WARNING_MESSAGE, null, buttonTexts, buttonTexts[1])
+ == JOptionPane.YES_OPTION)
+ {
+ try