]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/undo/UndoInsert.java
Version 7, February 2009
[GpsPrune.git] / tim / prune / undo / UndoInsert.java
index 51da59577c25ceb0b57001aba3b8c463c0a41943..1b3f3ef9077746e51ad3d723cc442dc36ad373a3 100644 (file)
@@ -1,26 +1,56 @@
 package tim.prune.undo;\r
 \r
 import tim.prune.I18nManager;\r
+import tim.prune.data.DataPoint;\r
 import tim.prune.data.TrackInfo;\r
 \r
 /**\r
- * Operation to undo an insertion (eg interpolate)\r
+ * Operation to undo an insertion (eg interpolate, average)\r
  */\r
 public class UndoInsert implements UndoOperation\r
 {\r
        private int _startPosition = 0;\r
        private int _numInserted = 0;\r
+       private boolean _hasSegmentFlag = false;\r
+       private boolean _segmentFlag = false;\r
 \r
 \r
        /**\r
-        * Constructor\r
+        * Constructor without segment flag\r
         * @param inStart start of insert\r
         * @param inNumInserted number of points inserted\r
         */\r
        public UndoInsert(int inStart, int inNumInserted)\r
+       {\r
+               this(inStart, inNumInserted, false, false);\r
+       }\r
+\r
+\r
+       /**\r
+        * Constructor with segment flag\r
+        * @param inStart start of insert\r
+        * @param inNumInserted number of points inserted\r
+        * @param inSegmentFlag segment flag of following point\r
+        */\r
+       public UndoInsert(int inStart, int inNumInserted, boolean inSegmentFlag)\r
+       {\r
+               this(inStart, inNumInserted, true, inSegmentFlag);\r
+       }\r
+\r
+\r
+       /**\r
+        * Constructor\r
+        * @param inStart start of insert\r
+        * @param inNumInserted number of points inserted\r
+        * @param inHasFlag is there a segment flag present\r
+        * @param inFlag segment flag, if any\r
+        */\r
+       public UndoInsert(int inStart, int inNumInserted, boolean inHasFlag, boolean inFlag)\r
        {\r
                _startPosition = inStart;\r
                _numInserted = inNumInserted;\r
+               _hasSegmentFlag = inHasFlag;\r
+               _segmentFlag = inFlag;\r
        }\r
 \r
 \r
@@ -41,6 +71,10 @@ public class UndoInsert implements UndoOperation
        {\r
                // restore track to previous values\r
                inTrackInfo.getTrack().deleteRange(_startPosition, _startPosition + _numInserted - 1);\r
+               if (_hasSegmentFlag) {\r
+                       DataPoint nextPoint = inTrackInfo.getTrack().getNextTrackPoint(_startPosition);\r
+                       if (nextPoint != null) {nextPoint.setSegmentStart(_segmentFlag);}\r
+               }\r
                // reset selection\r
                inTrackInfo.getSelection().select(_startPosition-1, _startPosition-1, _startPosition);\r
        }\r