]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/undo/UndoCompress.java
Version 5, May 2008
[GpsPrune.git] / tim / prune / undo / UndoCompress.java
index 843054dc90fd3195b01a3733da099feb0a40c58e..50582215aaf82aeb265c52b3cddac6ca5cb7b7b7 100644 (file)
@@ -12,6 +12,7 @@ public class UndoCompress implements UndoOperation
 {\r
        private DataPoint[] _contents = null;\r
        protected int _numPointsDeleted = -1;\r
+       private boolean[] _segmentStarts = null;\r
 \r
 \r
        /**\r
@@ -21,6 +22,11 @@ public class UndoCompress implements UndoOperation
        public UndoCompress(Track inTrack)\r
        {\r
                _contents = inTrack.cloneContents();\r
+               // Copy boolean segment start flags\r
+               _segmentStarts = new boolean[inTrack.getNumPoints()];\r
+               for (int i=0; i<inTrack.getNumPoints(); i++) {\r
+                       _segmentStarts[i] = inTrack.getPoint(i).getSegmentStart();\r
+               }\r
        }\r
 \r
 \r
@@ -55,6 +61,13 @@ public class UndoCompress implements UndoOperation
        {\r
                // restore track to previous values\r
                inTrackInfo.getTrack().replaceContents(_contents);\r
+               // Copy boolean segment start flags\r
+               Track track = inTrackInfo.getTrack();\r
+               if (_segmentStarts.length != track.getNumPoints())\r
+                       throw new UndoException("Cannot undo compress - track length no longer matches");\r
+               for (int i=0; i<_segmentStarts.length; i++) {\r
+                       track.getPoint(i).setSegmentStart(_segmentStarts[i]);\r
+               }\r
                // clear selection\r
                inTrackInfo.getSelection().clearAll();\r
        }\r