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
20 * @param inTrackInfo track info object
\r
22 public UndoDeleteRange(TrackInfo inTrackInfo)
\r
24 _startIndex = inTrackInfo.getSelection().getStart();
\r
25 _points = inTrackInfo.cloneSelectedRange();
\r
26 _photoList = inTrackInfo.getPhotoList().cloneList();
\r
31 * @return description of operation including range length
\r
33 public String getDescription()
\r
35 return I18nManager.getText("undo.deleterange")
\r
36 + " (" + _points.length + ")";
\r
41 * Perform the undo operation on the given Track
\r
42 * @param inTrackInfo TrackInfo object on which to perform the operation
\r
44 public void performUndo(TrackInfo inTrackInfo)
\r
46 // restore photos to how they were before
\r
47 inTrackInfo.getPhotoList().restore(_photoList);
\r
48 // reconnect photos to points
\r
49 for (int i=0; i<_points.length; i++)
\r
51 DataPoint point = _points[i];
\r
52 if (point != null && point.getPhoto() != null)
\r
54 point.getPhoto().setDataPoint(point);
\r
57 // restore point array into track
\r
58 inTrackInfo.getTrack().insertRange(_points, _startIndex);
\r