]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - tim/prune/undo/UndoDeleteOperation.java
Moved source into separate src directory due to popular request
[GpsPrune.git] / tim / prune / undo / UndoDeleteOperation.java
diff --git a/tim/prune/undo/UndoDeleteOperation.java b/tim/prune/undo/UndoDeleteOperation.java
deleted file mode 100644 (file)
index 73d9c4f..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-package tim.prune.undo;
-
-import tim.prune.data.TrackInfo;
-
-/**
- * Abstract class to hold the selection handling required by all
- * Undo operations which have undeleted something
- */
-public abstract class UndoDeleteOperation implements UndoOperation
-{
-       /** Flag to remember whether the deleted point was at the beginning or end of the selected range */
-       private boolean _isAtBoundaryOfSelectedRange = false;
-
-       /**
-        * @param inAtBoundary true if deleted point was at the beginning or end of the selected range
-        */
-       public void setAtBoundaryOfSelectedRange(boolean inAtBoundary)
-       {
-               _isAtBoundaryOfSelectedRange = inAtBoundary;
-       }
-
-       /**
-        * Modify the current point/range selection after the delete operation is undone
-        * @param inTrackInfo track info object
-        * @param inStartIndex start index of reinserted range
-        * @param inEndIndex end index of reinserted range
-        */
-       protected void modifySelection(TrackInfo inTrackInfo, int inStartIndex, int inEndIndex)
-       {
-               final int numPointsInserted = inEndIndex - inStartIndex + 1;
-               // See if there is a currently selected point, if so does it need to be modified
-               final int currentPoint = inTrackInfo.getSelection().getCurrentPointIndex();
-               if (currentPoint >= inStartIndex)
-               {
-                       inTrackInfo.selectPoint(currentPoint + numPointsInserted);
-               }
-               // Same for currently selected range
-               int rangeStart = inTrackInfo.getSelection().getStart();
-               int rangeEnd   = inTrackInfo.getSelection().getEnd();
-               // Was the deleted point at the start or end of the selected range?
-               final boolean wasAtStart = numPointsInserted == 1 && inStartIndex == rangeStart && _isAtBoundaryOfSelectedRange;
-               final boolean wasAtEnd   = numPointsInserted == 1 && inStartIndex == (rangeEnd+1) && _isAtBoundaryOfSelectedRange;
-               if (rangeEnd >= inStartIndex && rangeEnd > rangeStart || wasAtStart || wasAtEnd)
-               {
-                       rangeEnd += numPointsInserted;
-                       if (rangeStart >= inStartIndex) {
-                               rangeStart += numPointsInserted;
-                       }
-                       // Extend selection if the deleted point was at the start or end
-                       if (wasAtStart) {
-                               rangeStart--;
-                       }
-                       inTrackInfo.getSelection().selectRange(rangeStart, rangeEnd);
-               }
-       }
-}