// todo look to comment for EndlessAnimation

//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.Text;
//using Microsoft.Research.DynamicDataDisplay.Navigation;
//using System.Windows.Input;
//using System.Windows;
//using System.Windows.Media.Animation;
//using System.Windows.Media;
//using System.Diagnostics;

//namespace Microsoft.Research.DynamicDataDisplay.Charts.Navigation
//{
//    [Obsolete("Unready because Viewport became non-visual and no longer has BeginAnimation method.", true)]
//    public class InertialMouseNavigation : MouseNavigation
//    {
//        public InertialMouseNavigation()
//        {
//        }

//        Point visibleStart;
//        Point panningStartPointInScreen;
//        int panningStartTime;
//        protected override void StartPanning(MouseButtonEventArgs e)
//        {
//            visibleStart = Viewport.Visible.Location;
//            panningStartPointInScreen = e.GetPosition(this);
//            base.StartPanning(e);
//            panningStartTime = e.Timestamp;
//        }

//        bool runningAnimation = false;
//        protected override void StopPanning(MouseButtonEventArgs e)
//        {
//            Point panningStopPointInScreen = e.GetPosition(this);

//            base.StopPanning(e);


//            // mouse click with no panning
//            if (panningStartPointInScreen == panningStopPointInScreen)
//            {
//                // remove all animations on Viewport.Visible
//                BeginVisibleAnimation(null);
//                return;
//            }

//            double panningDuration = (e.Timestamp - panningStartTime) / 1000.0;

//            double animationStartMinDuration = 0.5; // seconds
//            double animationStartMinMouseShift = 50; // pixels

//            // mouse moved short enough and for rather long distance.
//            if (panningDuration < animationStartMinDuration && (panningStopPointInScreen - panningStartPointInScreen).Length > animationStartMinMouseShift)
//            {
//                Vector visibleShift = Viewport.Visible.Location - visibleStart;

//                EndlessPanningRectAnimation panningAnimation = new EndlessPanningRectAnimation(
//                    Viewport.Visible,
//                    visibleShift / panningDuration);

//                BeginVisibleAnimation(panningAnimation);
//            }
//        }

//        private void BeginVisibleAnimation(AnimationTimeline animation)
//        {
//            if (animation != null)
//            {
//                if (runningAnimation)
//                {
//                    BeginVisibleAnimation(null);
//                }

//                //Plotter2D.Viewport.BeginAnimation(Viewport2D.VisibleProperty, animation);
//                runningAnimation = true;
//            }
//            else
//            {
//                if (!runningAnimation)
//                    return;

//                Debug.WriteLine("Removing animation");

//                Rect visible = Plotter2D.Viewport.Visible;
//                //Plotter2D.Viewport.BeginAnimation(Viewport2D.VisibleProperty, null);
//                Plotter2D.Viewport.Visible = visible;
//                runningAnimation = false;
//            }
//        }
//    }
//}
