public void MouseMove(double x, double y)
        {
            MousePoint = new Cairo.PointD (x / (Zoom * Renderer.UnitMultipilier), y / (Zoom * Renderer.UnitMultipilier));
            IsMoving = true;
            if (SelectedTool != null)
                SelectedTool.OnMouseMove ();
            DeltaPoint = new PointD (-PreviousMousePoint.X + MousePoint.X, -PreviousMousePoint.Y + MousePoint.Y);

            for (int i = 0; i < SectionViews.Count; i++) {
                    var sectionView = SectionViews [i];
                    if(sectionView.ContainsPoint(MousePoint.X,MousePoint.Y)) {

                        MouseOverSection = sectionView;
                        MouseOverSection.IsMouseOver = true;

                        if(mouseOverTool == null || sectionView.DefaultToolName != mouseOverTool.Name) {
                            mouseOverTool =  ToolBoxService.GetToolByName(sectionView.DefaultToolName);
                        }

                        if(SelectedTool == null || mouseOverTool != SelectedTool ) {
                            mouseOverTool.OnMouseMove();
                            if(IsPressed)
                                IsDirty = true;
                        }
                    } else {
                        if(!IsPressed)
                            sectionView.IsMouseOver = false;
                    }
            }

            WorkspaceService.InvalidateDesignArea ();
            PreviousMousePoint = MousePoint;
        }
 public void SetToolByName(string toolName)
 {
     SelectedTool = ToolDictionary[toolName];
     SelectedTool.CreateMode = true;
 }
 public void SetToolByControlView(ControlViewBase control)
 {
     if(ToolDictionary.ContainsKey(control.DefaultToolName))
         SelectedTool = ToolDictionary[control.DefaultToolName];
 }
 public void SetTool(BaseTool tool)
 {
     SelectedTool = tool;
 }
 public void AddTool(BaseTool tool)
 {
     ToolDictionary.Add(tool.Name,tool);
 }
 public void UnselectTool()
 {
     SelectedTool = null;
 }