private void canvasWall_MouseDown(object sender, MouseButtonEventArgs e)
        {
            Point         mousePoint        = e.GetPosition(sender as Canvas);
            RockViewModel nearestRockOnWall = rocksOnWallViewModel.GetRockInListByCanvasPoint(mousePoint);

            if (nearestRockOnWall != null)
            {
                rocksOnRouteViewModel.SelectedRockOnRoute =
                    rocksOnRouteViewModel.FindRockOnRouteViewModel(nearestRockOnWall);
                bool isRockAlreadyOnTheRoute = !rocksOnRouteViewModel.IsSelectedRockOnRouteNull();

                if (!isRockAlreadyOnTheRoute)  // new rock on route
                {
                    rocksOnRouteViewModel.SelectedRockOnRoute = new RockOnRouteViewModel
                    {
                        MyRockViewModel = nearestRockOnWall
                    };

                    rocksOnRouteViewModel.AddSelectedRockToRoute();

                    switch (routeSetClimbMode)
                    {
                    case ClimbMode.Training:
                        SetSelectedTrainingRockSeqNo(true);
                        break;

                    case ClimbMode.Boulder:
                    default:
                        SetSelectedBoulderRockToIntermediate();
                        break;
                    }
                }
            }
        }
        private void canvas_MouseDown(object sender, MouseButtonEventArgs e)
        {
            if (isSnapShotTaken)
            {
                //Debug.WriteLine("canvas_MouseDown");

                Point mouseClickPt = e.GetPosition(cameraIMG);

                RockViewModel rockCorrespondsToCanvasPt =
                    rocksOnWallViewModel.GetRockInListByCanvasPoint(mouseClickPt);

                if (rockCorrespondsToCanvasPt == null)  // new rock
                {
                    Size newBoulderSizeOnCanvas = GetBoulderSizeOnCanvasFromSliders();

                    // check rock overlaps
                    if (rocksOnWallViewModel.IsOverlapWithRocksOnWall(
                            mouseClickPt, newBoulderSizeOnCanvas)
                        == false)
                    {
                        CameraSpacePoint csp = jcWall.GetCamSpacePointFromMousePoint(mouseClickPt, _mode);
                        if (!csp.Equals(default(CameraSpacePoint)))
                        {
                            rocksOnWallViewModel.AddRock(csp, newBoulderSizeOnCanvas);
                        }
                        else
                        {
                            UiHelper.NotifyUser(DepthInfoMissingWarningMsg);
                        }
                    }
                    else
                    {
                        UiHelper.NotifyUser(RockOverlapsWarningMsg);
                    }
                }
                else  // rock already in list
                {
                    rocksOnWallViewModel.SelectedRock = rockCorrespondsToCanvasPt;
                    boulderWidthSlider.Value          = rockCorrespondsToCanvasPt.RockShapeContainer.GetWidth();
                    boulderHeightSlider.Value         = rockCorrespondsToCanvasPt.RockShapeContainer.GetHeight();

                    // if rock already in list, enable drag drop!
                    rockCorrespondsToCanvasPt.RockShapeContainer.DoDragDrop();
                }
            }
            else
            {
                UiHelper.NotifyUser("Please take snap shot first.");
            }
        }
        private void canvas_MouseDown(object sender, MouseButtonEventArgs e)
        {
            if (isSnapShotTaken)
            {
                Point mouseClickPt = e.GetPosition(cameraIMG);
                //ColorSpacePoint _boulderCSP = new ColorSpacePoint { X = (float)mouseClickPt.X, Y = (float)mouseClickPt.Y };

                Boulder rockCorrespondsToCanvasPt =
                    rocksOnWallViewModel.GetRockInListByCanvasPoint(mouseClickPt);

                if (rockCorrespondsToCanvasPt == null)  // new rock
                {
                    double newBoulderWidthOnCanvas  = ConvertSliderValueToSizeOnCanvas(boulderWidthSlider.Value);
                    double newBoulderHeightOnCanvas = ConvertSliderValueToSizeOnCanvas(boulderHeightSlider.Value);

                    // check rock overlaps
                    if (rocksOnWallViewModel.IsOverlapWithRocksOnWall(
                            mouseClickPt, newBoulderWidthOnCanvas, newBoulderHeightOnCanvas)
                        == false)
                    {
                        CameraSpacePoint csp = jcWall.GetCamSpacePointFromMousePoint(mouseClickPt, _mode);
                        if (!csp.Equals(default(CameraSpacePoint)))
                        {
                            rocksOnWallViewModel.AddRock(csp, mouseClickPt, newBoulderWidthOnCanvas,
                                                         newBoulderHeightOnCanvas);
                        }
                        else
                        {
                            UiHelper.NotifyUser("No depth info is captured for this point!");
                        }
                    }
                    else
                    {
                        UiHelper.NotifyUser(RockOverlapsWarningMsg);
                    }
                }
                else  // rock already in list
                {
                    rocksOnWallViewModel.SelectedRock = rockCorrespondsToCanvasPt;
                    boulderWidthSlider.Value          = rockCorrespondsToCanvasPt.BCanvasWidth;
                    boulderHeightSlider.Value         = rockCorrespondsToCanvasPt.BCanvasHeight;
                }
            }
            else
            {
                UiHelper.NotifyUser("Please take snap shot first.");
            }
        }