+++ /dev/null
-package tim.prune.undo;
-
-import tim.prune.I18nManager;
-import tim.prune.UpdateMessageBroker;
-import tim.prune.data.DataPoint;
-import tim.prune.data.Track;
-import tim.prune.data.TrackInfo;
-
-/**
- * Undo merging of track segments
- */
-public class UndoMergeTrackSegments implements UndoOperation
-{
- /** Start index */
- private int _startIndex;
- /** array of segment flags */
- private boolean[] _segmentFlags = null;
- /** Following point, if any */
- private DataPoint _nextTrackPoint = null;
- /** Segment flag of next point */
- private boolean _nextSegmentFlag = false;
-
-
- /**
- * Constructor
- * @param inTrack track object for copying segment flags
- * @param inStart start index of section
- * @param inEnd end index of section
- */
- public UndoMergeTrackSegments(Track inTrack, int inStart, int inEnd)
- {
- _startIndex = inStart;
- // Store booleans for all points within selection
- int numPoints = inEnd - inStart + 1;
- _segmentFlags = new boolean[numPoints];
- for (int i=inStart; i<=inEnd; i++) {
- _segmentFlags[i-inStart] = inTrack.getPoint(i).getSegmentStart();
- }
- // Look for following track point, store flag
- _nextTrackPoint = inTrack.getNextTrackPoint(inEnd + 1);
- if (_nextTrackPoint != null) {
- _nextSegmentFlag = _nextTrackPoint.getSegmentStart();
- }
- }
-
-
- /**
- * @return description of operation
- */
- public String getDescription()
- {
- return I18nManager.getText("undo.mergetracksegments");
- }
-
-
- /**
- * Perform the undo operation on the given Track
- * @param inTrackInfo TrackInfo object on which to perform the operation
- */
- public void performUndo(TrackInfo inTrackInfo) throws UndoException
- {
- // Loop through points replacing segment start flags
- for (int i=0; i<_segmentFlags.length; i++) {
- DataPoint point = inTrackInfo.getTrack().getPoint(_startIndex + i);
- if (!point.isWaypoint()) {
- point.setSegmentStart(_segmentFlags[i]);
- }
- }
- // Restore segment start flag for following point
- if (_nextTrackPoint != null) {
- _nextTrackPoint.setSegmentStart(_nextSegmentFlag);
- }
- UpdateMessageBroker.informSubscribers();
- }
-}