]> gitweb.fperrin.net Git - GpsPrune.git/blob - tim/prune/undo/UndoInsert.java
Version 14, October 2012
[GpsPrune.git] / tim / prune / undo / UndoInsert.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.TrackInfo;\r
6 \r
7 /**\r
8  * Operation to undo an insertion (eg average)\r
9  */\r
10 public class UndoInsert implements UndoOperation\r
11 {\r
12         private int _startPosition = 0;\r
13         private int _numInserted = 0;\r
14         private boolean _hasSegmentFlag = false;\r
15         private boolean _segmentFlag = false;\r
16 \r
17 \r
18         /**\r
19          * Constructor without segment flag\r
20          * @param inStart start of insert\r
21          * @param inNumInserted number of points inserted\r
22          */\r
23         public UndoInsert(int inStart, int inNumInserted)\r
24         {\r
25                 this(inStart, inNumInserted, false, false);\r
26         }\r
27 \r
28 \r
29         /**\r
30          * Constructor with segment flag\r
31          * @param inStart start of insert\r
32          * @param inNumInserted number of points inserted\r
33          * @param inSegmentFlag segment flag of following point\r
34          */\r
35         public UndoInsert(int inStart, int inNumInserted, boolean inSegmentFlag)\r
36         {\r
37                 this(inStart, inNumInserted, true, inSegmentFlag);\r
38         }\r
39 \r
40 \r
41         /**\r
42          * Constructor\r
43          * @param inStart start of insert\r
44          * @param inNumInserted number of points inserted\r
45          * @param inHasFlag is there a segment flag present\r
46          * @param inFlag segment flag, if any\r
47          */\r
48         public UndoInsert(int inStart, int inNumInserted, boolean inHasFlag, boolean inFlag)\r
49         {\r
50                 _startPosition = inStart;\r
51                 _numInserted = inNumInserted;\r
52                 _hasSegmentFlag = inHasFlag;\r
53                 _segmentFlag = inFlag;\r
54         }\r
55 \r
56 \r
57         /**\r
58          * @return description of operation including parameters\r
59          */\r
60         public String getDescription()\r
61         {\r
62                 return I18nManager.getText("undo.insert") + " (" + _numInserted + ")";\r
63         }\r
64 \r
65 \r
66         /**\r
67          * Perform the undo operation on the given TrackInfo\r
68          * @param inTrackInfo TrackInfo object on which to perform the operation\r
69          */\r
70         public void performUndo(TrackInfo inTrackInfo) throws UndoException\r
71         {\r
72                 // restore track to previous values\r
73                 inTrackInfo.getTrack().deleteRange(_startPosition, _startPosition + _numInserted - 1);\r
74                 if (_hasSegmentFlag) {\r
75                         DataPoint nextPoint = inTrackInfo.getTrack().getNextTrackPoint(_startPosition);\r
76                         if (nextPoint != null) {nextPoint.setSegmentStart(_segmentFlag);}\r
77                 }\r
78                 // reset selection\r
79                 inTrackInfo.getSelection().clearAll();\r
80         }\r
81 }