/* (non-Javadoc)
  * @see de.artcom.timeline.controller.TimeRangeController#mouseDragged(java.awt.event.MouseEvent)
  */
 @Override
 public void mouseDragged(MouseEvent e) {
   super.mouseDragged(e);
   boolean _myPressedShift =
       (e.getModifiersEx() & MouseEvent.SHIFT_DOWN_MASK) == MouseEvent.SHIFT_DOWN_MASK;
   if (_myPressedShift) {
     switch (_myLoopAction) {
       case MOVE_END:
         _myTrackDataController
             .trackData()
             .scaleRange(_myLoopStart, _myLoopEnd, _myNewLoopStart, _myNewLoopEnd);
         break;
       case MOVE_BOTH:
         if (_myMoveList == null) break;
         for (ControlPoint myPoint : _myMoveList) {
           _myTrackDataController
               .trackData()
               .move(
                   myPoint,
                   new ControlPoint(
                       myPoint.time() + (_myNewLoopStart - _myLoopStart), myPoint.value()));
         }
         break;
       default:
         break;
     }
   }
 }
  public ArrayList<ControlPoint> prepareInsertion(
      double theInsertionPoint, double theRange, TrackData theModel) {

    //		double myLowValue = theModel.getValue(theInsertionPoint);
    //		double myHighValue = theModel.getValue(theInsertionPoint + theRange);

    // first we need a copy of our last selected points
    ArrayList<ControlPoint> myInsertion = new ArrayList<ControlPoint>();
    for (ControlPoint myControlPoint : _myLastSelection) {
      myInsertion.add(myControlPoint.clone());
    }

    // then add the first and the last point (
    //		myInsertion.add(0, new ControlPoint(_myLastLowerBound, myLowValue));
    //		myInsertion.add(new ControlPoint(_myLastUpperBound, myHighValue));

    for (ControlPoint myPoint : myInsertion) {
      myPoint.time(myPoint.time() - _myLastLowerBound);
    }

    return myInsertion;
  }