X-Git-Url: https://gitweb.fperrin.net/?a=blobdiff_plain;f=tim%2Fprune%2Fundo%2FUndoDeleteRange.java;h=e2a76995ebb478ec868c9e4a8c68b8a9d4fcfed8;hb=ca9bdb3916f9c39adbbf95d06ac95c21dafbb4e6;hp=6bb0b7df08aebc795a9ded8de37871051f71940f;hpb=312fec956e43f5d0a38617da5d0add9c62563e2c;p=GpsPrune.git diff --git a/tim/prune/undo/UndoDeleteRange.java b/tim/prune/undo/UndoDeleteRange.java index 6bb0b7d..e2a7699 100644 --- a/tim/prune/undo/UndoDeleteRange.java +++ b/tim/prune/undo/UndoDeleteRange.java @@ -2,6 +2,7 @@ package tim.prune.undo; import tim.prune.I18nManager; import tim.prune.data.DataPoint; +import tim.prune.data.PhotoList; import tim.prune.data.TrackInfo; /** @@ -11,17 +12,25 @@ public class UndoDeleteRange implements UndoOperation { private int _startIndex = -1; private DataPoint[] _points = null; + private PhotoList _photoList = null; + private DataPoint _nextTrackPoint = null; + private boolean _segmentStart = false; /** * Constructor - * @param inIndex index number of point within track - * @param inPoint data point + * @param inTrackInfo track info object */ public UndoDeleteRange(TrackInfo inTrackInfo) { _startIndex = inTrackInfo.getSelection().getStart(); _points = inTrackInfo.cloneSelectedRange(); + _photoList = inTrackInfo.getPhotoList().cloneList(); + // Save segment flag of following track point + _nextTrackPoint = inTrackInfo.getTrack().getNextTrackPoint(_startIndex + _points.length); + if (_nextTrackPoint != null) { + _segmentStart = _nextTrackPoint.getSegmentStart(); + } } @@ -41,7 +50,22 @@ public class UndoDeleteRange implements UndoOperation */ public void performUndo(TrackInfo inTrackInfo) { + // restore photos to how they were before + inTrackInfo.getPhotoList().restore(_photoList); + // reconnect photos to points + for (int i=0; i<_points.length; i++) + { + DataPoint point = _points[i]; + if (point != null && point.getPhoto() != null) + { + point.getPhoto().setDataPoint(point); + } + } // restore point array into track inTrackInfo.getTrack().insertRange(_points, _startIndex); + // Restore segment flag of following track point + if (_nextTrackPoint != null) { + _nextTrackPoint.setSegmentStart(_segmentStart); + } } } \ No newline at end of file