1 package tim.prune.undo;
\r
3 import tim.prune.I18nManager;
\r
4 import tim.prune.data.DataPoint;
\r
5 import tim.prune.data.PhotoList;
\r
6 import tim.prune.data.TrackInfo;
\r
9 * Operation to undo a delete of a range of points
\r
11 public class UndoDeleteRange implements UndoOperation
\r
13 private int _startIndex = -1;
\r
14 private DataPoint[] _points = null;
\r
15 private PhotoList _photoList = null;
\r
16 private DataPoint _nextTrackPoint = null;
\r
17 private boolean _segmentStart = false;
\r
22 * @param inTrackInfo track info object
\r
24 public UndoDeleteRange(TrackInfo inTrackInfo)
\r
26 _startIndex = inTrackInfo.getSelection().getStart();
\r
27 _points = inTrackInfo.cloneSelectedRange();
\r
28 _photoList = inTrackInfo.getPhotoList().cloneList();
\r
29 // Save segment flag of following track point
\r
30 _nextTrackPoint = inTrackInfo.getTrack().getNextTrackPoint(_startIndex + _points.length);
\r
31 if (_nextTrackPoint != null) {
\r
32 _segmentStart = _nextTrackPoint.getSegmentStart();
\r
38 * @return description of operation including range length
\r
40 public String getDescription()
\r
42 return I18nManager.getText("undo.deleterange")
\r
43 + " (" + _points.length + ")";
\r
48 * Perform the undo operation on the given Track
\r
49 * @param inTrackInfo TrackInfo object on which to perform the operation
\r
51 public void performUndo(TrackInfo inTrackInfo)
\r
53 // restore photos to how they were before
\r
54 inTrackInfo.getPhotoList().restore(_photoList);
\r
55 // reconnect photos to points
\r
56 for (int i=0; i<_points.length; i++)
\r
58 DataPoint point = _points[i];
\r
59 if (point != null && point.getPhoto() != null)
\r
61 point.getPhoto().setDataPoint(point);
\r
64 // restore point array into track
\r
65 inTrackInfo.getTrack().insertRange(_points, _startIndex);
\r
66 // Restore segment flag of following track point
\r
67 if (_nextTrackPoint != null) {
\r
68 _nextTrackPoint.setSegmentStart(_segmentStart);
\r