]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/save/FileSaver.java
Version 6, October 2008
[GpsPrune.git] / tim / prune / save / FileSaver.java
index db41a34aee5f581a1cd064e9e873f62d9c6f3dfc..5991b8636ef8b26f99b14a160016f109906f708f 100644 (file)
@@ -32,7 +32,9 @@ 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;
 import tim.prune.data.Coordinate;
 import tim.prune.data.DataPoint;
@@ -40,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;
 
 /**
@@ -219,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");
@@ -381,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();
@@ -484,13 +496,13 @@ public class FileSaver
                                                                {
                                                                        try
                                                                        {
-                                                                               buffer.append(point.getAltitude().getValue(altitudeFormat));
+                                                                               buffer.append(point.getAltitude().getStringValue(altitudeFormat));
                                                                        }
                                                                        catch (NullPointerException npe) {}
                                                                }
                                                                else if (field == Field.TIMESTAMP)
                                                                {
-                                                                       try
+                                                                       if (point.hasTimestamp())
                                                                        {
                                                                                if (timestampFormat == Timestamp.FORMAT_ORIGINAL) {
                                                                                        // output original string
@@ -501,7 +513,6 @@ public class FileSaver
                                                                                        buffer.append(point.getTimestamp().getText(timestampFormat));
                                                                                }
                                                                        }
-                                                                       catch (NullPointerException npe) {}
                                                                }
                                                                else
                                                                {
@@ -518,11 +529,12 @@ public class FileSaver
                                                writer.write(buffer.toString());
                                                writer.write(lineSeparator);
                                        }
+                                       // Store directory in config for later
+                                       Config.setWorkingDirectory(saveFile.getParentFile());
                                        // Save successful
-                                       JOptionPane.showMessageDialog(_parentFrame, I18nManager.getText("dialog.save.ok1")
-                                                + " " + numPoints + " " + I18nManager.getText("dialog.save.ok2")
-                                                + " " + saveFile.getAbsolutePath(),
-                                               I18nManager.getText("dialog.save.oktitle"), JOptionPane.INFORMATION_MESSAGE);
+                                       UpdateMessageBroker.informSubscribers(I18nManager.getText("confirm.save.ok1")
+                                                + " " + numPoints + " " + I18nManager.getText("confirm.save.ok2")
+                                                + " " + saveFile.getAbsolutePath());
                                        _app.informDataSaved();
                                }
                                catch (IOException ioe)