]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/save/GpxExporter.java
Version 5, May 2008
[GpsPrune.git] / tim / prune / save / GpxExporter.java
index 98619d1a81dddf0fdef65060a1969f6c582f0c25..0e028d18ddd9abff7bf41125ff8018f997c1afa4 100644 (file)
@@ -25,6 +25,7 @@ import javax.swing.filechooser.FileFilter;
 
 import tim.prune.GpsPruner;
 import tim.prune.I18nManager;
+import tim.prune.UpdateMessageBroker;
 import tim.prune.data.Altitude;
 import tim.prune.data.Coordinate;
 import tim.prune.data.DataPoint;
@@ -201,10 +202,10 @@ public class GpxExporter implements Runnable
 
                        // close file
                        writer.close();
-                       JOptionPane.showMessageDialog(_parentFrame, I18nManager.getText("dialog.save.ok1")
-                                + " " + numPoints + " " + I18nManager.getText("dialog.save.ok2")
-                                + " " + _exportFile.getAbsolutePath(),
-                               I18nManager.getText("dialog.save.oktitle"), JOptionPane.INFORMATION_MESSAGE);
+                       // Show confirmation
+                       UpdateMessageBroker.informSubscribers(I18nManager.getText("confirm.save.ok1")
+                                + " " + numPoints + " " + I18nManager.getText("confirm.save.ok2")
+                                + " " + _exportFile.getAbsolutePath());
                        // export successful so need to close dialog and return
                        _dialog.dispose();
                        return;
@@ -264,7 +265,7 @@ public class GpxExporter implements Runnable
                for (i=0; i<numPoints; i++)
                {
                        point = _track.getPoint(i);
-                       // Make a blob for each waypoint
+                       // Make a wpt element for each waypoint
                        if (point.isWaypoint())
                        {
                                exportWaypoint(point, inWriter);
@@ -274,18 +275,23 @@ public class GpxExporter implements Runnable
                                hasTrackpoints = true;
                        }
                }
-               // Make a line for the track, if there is one
-               // TODO: Look at segments of track, and split into separate track segments in Gpx if necessary
+               // Output the track, if there is one
                if (hasTrackpoints)
                {
+                       boolean firstPoint = true;
                        inWriter.write("\t<trk><trkseg>\n");
                        // Loop over track points
                        for (i=0; i<numPoints; i++)
                        {
                                point = _track.getPoint(i);
-                               if (!point.isWaypoint())
-                               {
+                               if (point.getSegmentStart() && !firstPoint) {
+                                       inWriter.write("\t</trkseg>\n\t<trkseg>\n");
+                               }
+                               if (!point.isWaypoint()) {
+                                       // restart track segment if necessary
+                                       // export the track point
                                        exportTrackpoint(point, inWriter);
+                                       firstPoint = false;
                                }
                        }
                        inWriter.write("\t</trkseg></trk>\n");