\r
import tim.prune.I18nManager;\r
import tim.prune.data.DataPoint;\r
+import tim.prune.data.PhotoList;\r
import tim.prune.data.TrackInfo;\r
\r
/**\r
{\r
private int _startIndex = -1;\r
private DataPoint[] _points = null;\r
+ private PhotoList _photoList = null;\r
+ private DataPoint _nextTrackPoint = null;\r
+ private boolean _segmentStart = false;\r
\r
\r
/**\r
* Constructor\r
- * @param inIndex index number of point within track\r
- * @param inPoint data point\r
+ * @param inTrackInfo track info object\r
*/\r
public UndoDeleteRange(TrackInfo inTrackInfo)\r
{\r
_startIndex = inTrackInfo.getSelection().getStart();\r
_points = inTrackInfo.cloneSelectedRange();\r
+ _photoList = inTrackInfo.getPhotoList().cloneList();\r
+ // Save segment flag of following track point\r
+ _nextTrackPoint = inTrackInfo.getTrack().getNextTrackPoint(_startIndex + _points.length);\r
+ if (_nextTrackPoint != null) {\r
+ _segmentStart = _nextTrackPoint.getSegmentStart();\r
+ }\r
}\r
\r
\r
*/\r
public void performUndo(TrackInfo inTrackInfo)\r
{\r
+ // restore photos to how they were before\r
+ inTrackInfo.getPhotoList().restore(_photoList);\r
+ // reconnect photos to points\r
+ for (int i=0; i<_points.length; i++)\r
+ {\r
+ DataPoint point = _points[i];\r
+ if (point != null && point.getPhoto() != null)\r
+ {\r
+ point.getPhoto().setDataPoint(point);\r
+ }\r
+ }\r
// restore point array into track\r
inTrackInfo.getTrack().insertRange(_points, _startIndex);\r
+ // Restore segment flag of following track point\r
+ if (_nextTrackPoint != null) {\r
+ _nextTrackPoint.setSegmentStart(_segmentStart);\r
+ }\r
}\r
}
\ No newline at end of file