Пример #1
0
 public AbstractShape MouseDown(MouseManager m, PointF pt)
 {
     if (__text != null)
     {
         __text.ResizeHandles.ForEach(p => p.Visible = false);
         var curShape = m.HitShape(pt);
         if (curShape?.UUID != __text.UUID)
         {
             __text.UnSelect();
             if (curShape != null)
             {
                 if (!(curShape is Text))
                 {
                     m.IsDoubleClicked = false;
                     m.State           = StateManager.Normal;
                     m.SelectedShapes.Clear();
                 }
                 var state = StateManager.GetStateByShape(curShape, m.IsPressed, m.IsDoubleClicked);
                 if (state != null && m.State != state)
                 {
                     m.State = state;
                     m.MouseDown(pt);
                 }
             }
             else
             {
                 m.IsDoubleClicked = false;
                 m.State           = StateManager.Normal;
                 m.SelectedShapes.Clear();
             }
         }
     }
     return(__text);
 }
Пример #2
0
        public AbstractShape MouseDown(MouseManager m, PointF pt)
        {
            shape = m.HitShape(pt);
#if PerfMon
            System.Diagnostics.Debug.WriteLine($"{StateManager.GetCurrentStateAndAction()} Hit {shape.ToDebugString()}");
#endif

            return(shape);
        }
Пример #3
0
        public List <AbstractShape> MouseMove(MouseManager m, PointF pt)
        {
            if (m.IsPressed && !m.IsDoubleClicked)
            {
                if (!m.MultiSelect && shape?.Selected != true)
                {
                    m.SelectedShapes.ForEach(s => s.UnSelect());
                    m.SelectedShapes.Clear();
                }

                if (shape == null)
                {
                    m.State = StateManager.Selecting;
                    return(m.State.MouseMove(m, pt));
                }
                else
                {
                    if (shape.CanSelect)
                    {
                        shape.Select();
                        m.SelectedShapes.Add(shape);
                        var state = StateManager.GetStateByShape(shape, m.IsPressed);
                        if (state != null)
                        {
                            m.State = state;
                            return(m.State.MouseMove(m, pt));
                        }
                        else
                        {
                            throw new InvalidOperationException(StateManager.GetNotExistStateErrorMessage());
                        }
                    }
                    else
                    {
                        if (shape is AbstractHandle)
                        {
                            var state = StateManager.GetStateByShape(shape, m.IsPressed);
                            if (state != null)
                            {
                                m.State = state;
                                return(m.State.MouseMove(m, pt));
                            }
                            else
                            {
                                throw new InvalidOperationException(StateManager.GetNotExistStateErrorMessage());
                            }
                        }
                        else
                        {
                            m.State = StateManager.Selecting;
                            return(m.State.MouseMove(m, pt));
                        }
                    }
                }
            }
            else
            {
                List <AbstractShape> list = new List <AbstractShape>();
                var shape = m.HitShape(pt);
                if (shape != null)
                {
                    list.Add(shape);
                    var state = StateManager.GetStateByShape(shape, m.IsPressed, m.IsDoubleClicked);
                    if (state != null)
                    {
                        m.State = state;
#if PerfMon
                        System.Diagnostics.Debug.WriteLine(
                            $"{StateManager.GetCurrentStateAndAction()} Hit {shape} Enter State : {m.State}");
#endif
                    }
                }
                else
                {
                    m.State = StateManager.Normal;
                }
                return(list);
            }
        }