]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/save/FileSaver.java
Version 7, February 2009
[GpsPrune.git] / tim / prune / save / FileSaver.java
index c42a644c4c7cf3562a7e85f78367f6bc25d79f4d..ea4efb87087f0ca33309b1edb2454ba7564018c7 100644 (file)
@@ -32,6 +32,7 @@ import javax.swing.ListSelectionModel;
 import javax.swing.table.TableModel;
 
 import tim.prune.App;
+import tim.prune.Config;
 import tim.prune.I18nManager;
 import tim.prune.UpdateMessageBroker;
 import tim.prune.data.Altitude;
@@ -41,6 +42,7 @@ import tim.prune.data.Field;
 import tim.prune.data.FieldList;
 import tim.prune.data.Timestamp;
 import tim.prune.data.Track;
+import tim.prune.load.GenericFileFilter;
 import tim.prune.load.OneCharDocument;
 
 /**
@@ -68,7 +70,7 @@ public class FileSaver
        private JRadioButton[] _timestampUnitsRadios = null;
        private static final int[] FORMAT_COORDS = {Coordinate.FORMAT_NONE, Coordinate.FORMAT_DEG_MIN_SEC,
                Coordinate.FORMAT_DEG_MIN, Coordinate.FORMAT_DEG};
-       private static final int[] FORMAT_ALTS = {Altitude.FORMAT_NONE, Altitude.FORMAT_METRES, Altitude.FORMAT_FEET};
+       private static final Altitude.Format[] FORMAT_ALTS = {Altitude.Format.NO_FORMAT, Altitude.Format.METRES, Altitude.Format.FEET};
        private static final int[] FORMAT_TIMES = {Timestamp.FORMAT_ORIGINAL, Timestamp.FORMAT_LOCALE, Timestamp.FORMAT_ISO_8601};
 
 
@@ -111,7 +113,7 @@ public class FileSaver
                }
                // Initialise dialog and show it
                initDialog(_model, inDefaultDelimiter);
-               _dialog.show();
+               _dialog.setVisible(true);
        }
 
 
@@ -220,7 +222,7 @@ public class FileSaver
 
                // header checkbox
                firstCard.add(Box.createRigidArea(new Dimension(0,10)));
-               _headerRowCheckbox = new JCheckBox(I18nManager.getText("dialog.save.headerrow"));
+               _headerRowCheckbox = new JCheckBox(I18nManager.getText("dialog.save.headerrow"), true);
                firstCard.add(_headerRowCheckbox);
 
                _cards.add(firstCard, "card1");
@@ -382,8 +384,17 @@ public class FileSaver
                boolean saveOK = true;
                FileWriter writer = null;
                if (_fileChooser == null)
+               {
                        _fileChooser = new JFileChooser();
-               _fileChooser.setDialogType(JFileChooser.SAVE_DIALOG);
+                       _fileChooser.setDialogType(JFileChooser.SAVE_DIALOG);
+                       _fileChooser.addChoosableFileFilter(new GenericFileFilter("filetype.txt", new String[] {"txt", "text"}));
+                       _fileChooser.addChoosableFileFilter(new GenericFileFilter("filetype.gpx", new String[] {"gpx"}));
+                       _fileChooser.addChoosableFileFilter(new GenericFileFilter("filetype.kml", new String[] {"kml"}));
+                       _fileChooser.setAcceptAllFileFilterUsed(true);
+                       // start from directory in config which should be set
+                       File configDir = Config.getWorkingDirectory();
+                       if (configDir != null) {_fileChooser.setCurrentDirectory(configDir);}
+               }
                if (_fileChooser.showSaveDialog(_parentFrame) == JFileChooser.APPROVE_OPTION)
                {
                        File saveFile = _fileChooser.getSelectedFile();
@@ -393,7 +404,7 @@ public class FileSaver
                        for (int i=0; i<_coordUnitsRadios.length; i++)
                                if (_coordUnitsRadios[i].isSelected())
                                        coordFormat = FORMAT_COORDS[i];
-                       int altitudeFormat = Altitude.FORMAT_NONE;
+                       Altitude.Format altitudeFormat = Altitude.Format.NO_FORMAT;
                        for (int i=0; i<_altitudeUnitsRadios.length; i++)
                        {
                                if (_altitudeUnitsRadios[i].isSelected())
@@ -485,7 +496,7 @@ public class FileSaver
                                                                {
                                                                        try
                                                                        {
-                                                                               buffer.append(point.getAltitude().getValue(altitudeFormat));
+                                                                               buffer.append(point.getAltitude().getStringValue(altitudeFormat));
                                                                        }
                                                                        catch (NullPointerException npe) {}
                                                                }
@@ -518,6 +529,8 @@ public class FileSaver
                                                writer.write(buffer.toString());
                                                writer.write(lineSeparator);
                                        }
+                                       // Store directory in config for later
+                                       Config.setWorkingDirectory(saveFile.getParentFile());
                                        // Save successful
                                        UpdateMessageBroker.informSubscribers(I18nManager.getText("confirm.save.ok1")
                                                 + " " + numPoints + " " + I18nManager.getText("confirm.save.ok2")
@@ -527,10 +540,8 @@ public class FileSaver
                                catch (IOException ioe)
                                {
                                        saveOK = false;
-                                       JOptionPane.showMessageDialog(_parentFrame,
-                                               I18nManager.getText("error.save.failed") + ioe.getMessage(),
-                                               I18nManager.getText("error.save.dialogtitle"),
-                                               JOptionPane.ERROR_MESSAGE);
+                                       _app.showErrorMessageNoLookup("error.save.dialogtitle",
+                                               I18nManager.getText("error.save.failed") + " : " + ioe.getMessage());
                                }
                                finally
                                {