]> gitweb.fperrin.net Git - GpsPrune.git/blob - tim/prune/undo/UndoDeleteRange.java
Version 4, January 2008
[GpsPrune.git] / tim / prune / undo / UndoDeleteRange.java
1 package tim.prune.undo;\r
2 \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
7 \r
8 /**\r
9  * Operation to undo a delete of a range of points\r
10  */\r
11 public class UndoDeleteRange implements UndoOperation\r
12 {\r
13         private int _startIndex = -1;\r
14         private DataPoint[] _points = null;\r
15         private PhotoList _photoList = null;\r
16 \r
17 \r
18         /**\r
19          * Constructor\r
20          * @param inTrackInfo track info object\r
21          */\r
22         public UndoDeleteRange(TrackInfo inTrackInfo)\r
23         {\r
24                 _startIndex = inTrackInfo.getSelection().getStart();\r
25                 _points = inTrackInfo.cloneSelectedRange();\r
26                 _photoList = inTrackInfo.getPhotoList().cloneList();\r
27         }\r
28 \r
29 \r
30         /**\r
31          * @return description of operation including range length\r
32          */\r
33         public String getDescription()\r
34         {\r
35                 return I18nManager.getText("undo.deleterange")\r
36                         + " (" + _points.length + ")";\r
37         }\r
38 \r
39 \r
40         /**\r
41          * Perform the undo operation on the given Track\r
42          * @param inTrackInfo TrackInfo object on which to perform the operation\r
43          */\r
44         public void performUndo(TrackInfo inTrackInfo)\r
45         {\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
50                 {\r
51                         DataPoint point = _points[i];\r
52                         if (point != null && point.getPhoto() != null)\r
53                         {\r
54                                 point.getPhoto().setDataPoint(point);\r
55                         }\r
56                 }\r
57                 // restore point array into track\r
58                 inTrackInfo.getTrack().insertRange(_points, _startIndex);\r
59         }\r
60 }