X-Git-Url: https://gitweb.fperrin.net/?p=GpsPrune.git;a=blobdiff_plain;f=tim%2Fprune%2Fundo%2FUndoInsert.java;h=f23892126824a01849c83be9fb4adf8ab40fa117;hp=51da59577c25ceb0b57001aba3b8c463c0a41943;hb=4d5796d02a15808311c09448d79e6e7d1de9d636;hpb=312fec956e43f5d0a38617da5d0add9c62563e2c diff --git a/tim/prune/undo/UndoInsert.java b/tim/prune/undo/UndoInsert.java index 51da595..f238921 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 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,7 +71,11 @@ 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); + inTrackInfo.getSelection().clearAll(); } } \ No newline at end of file