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); }
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); }
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); } }