X-Git-Url: https://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=tim%2Fprune%2Fundo%2FUndoInsert.java;h=1b3f3ef9077746e51ad3d723cc442dc36ad373a3;hp=51da59577c25ceb0b57001aba3b8c463c0a41943;hb=54b9d8bc8f0025ccf97a67d9dd217ef1f9cf082f;hpb=52bf9e8686c916be37a26a0b75340393d4478b05 diff --git a/tim/prune/undo/UndoInsert.java b/tim/prune/undo/UndoInsert.java index 51da595..1b3f3ef 100644 --- a/tim/prune/undo/UndoInsert.java +++ b/tim/prune/undo/UndoInsert.java @@ -1,26 +1,56 @@ package tim.prune.undo; import tim.prune.I18nManager; +import tim.prune.data.DataPoint; import tim.prune.data.TrackInfo; /** - * Operation to undo an insertion (eg interpolate) + * Operation to undo an insertion (eg interpolate, average) */ public class UndoInsert implements UndoOperation { private int _startPosition = 0; private int _numInserted = 0; + private boolean _hasSegmentFlag = false; + private boolean _segmentFlag = false; /** - * Constructor + * Constructor without segment flag * @param inStart start of insert * @param inNumInserted number of points inserted */ public UndoInsert(int inStart, int inNumInserted) + { + this(inStart, inNumInserted, false, false); + } + + + /** + * Constructor with segment flag + * @param inStart start of insert + * @param inNumInserted number of points inserted + * @param inSegmentFlag segment flag of following point + */ + public UndoInsert(int inStart, int inNumInserted, boolean inSegmentFlag) + { + this(inStart, inNumInserted, true, inSegmentFlag); + } + + + /** + * Constructor + * @param inStart start of insert + * @param inNumInserted number of points inserted + * @param inHasFlag is there a segment flag present + * @param inFlag segment flag, if any + */ + public UndoInsert(int inStart, int inNumInserted, boolean inHasFlag, boolean inFlag) { _startPosition = inStart; _numInserted = inNumInserted; + _hasSegmentFlag = inHasFlag; + _segmentFlag = inFlag; } @@ -41,6 +71,10 @@ public class UndoInsert implements UndoOperation { // restore track to previous values inTrackInfo.getTrack().deleteRange(_startPosition, _startPosition + _numInserted - 1); + if (_hasSegmentFlag) { + DataPoint nextPoint = inTrackInfo.getTrack().getNextTrackPoint(_startPosition); + if (nextPoint != null) {nextPoint.setSegmentStart(_segmentFlag);} + } // reset selection inTrackInfo.getSelection().select(_startPosition-1, _startPosition-1, _startPosition); }