--- /dev/null
+package tim.prune.function;
+
+import tim.prune.App;
+import tim.prune.data.Track;
+
+/**
+ * Class to provide the function to crop the track
+ * to the current selection
+ */
+public class CropToSelection extends DeleteBitOfTrackFunction
+{
+ /**
+ * Constructor
+ * @param inApp application object for callback
+ */
+ public CropToSelection(App inApp)
+ {
+ super(inApp);
+ }
+
+ /** Get the name key */
+ public String getNameKey() {
+ return "function.croptrack";
+ }
+
+ /**
+ * @return name key for undo operation
+ */
+ protected String getUndoNameKey() {
+ return "undo.croptrack";
+ }
+
+ /**
+ * Begin the function
+ */
+ public void begin()
+ {
+ // check track
+ Track track = _app.getTrackInfo().getTrack();
+ if (track == null || track.getNumPoints() <= 0) return;
+ // check selection
+ final int selStart = _app.getTrackInfo().getSelection().getStart();
+ final int selEnd = _app.getTrackInfo().getSelection().getEnd();
+ if (selStart < 0 || selEnd < 0 || selEnd <= selStart) return;
+ // check for all selected
+ if (selStart == 0 && selEnd == (track.getNumPoints() - 1)) return;
+
+ // Pass indexes to parent class
+ deleteTwoSections(0, selStart-1, selEnd+1, track.getNumPoints()-1);
+ }
+}