//protected void DropTo(Topic topic, Topic target) //{ // if (topic != null && target != null) // { // topic.ParentTopic = target; // } //} void CancelDrag() { if (MouseState == ChartMouseState.Drag) { HideDragBox(); MouseState = ChartMouseState.Normal; PressObject = HitTestResult.Empty; Cursor = Cursors.Default; } }
protected override void OnChartMouseUp(MouseEventArgs e) { base.OnChartMouseUp(e); ProcessChartMouseUp(e); MouseState = ChartMouseState.Normal; IsMouseDown = false; MouseDownPos = Point.Empty; PressObject = HitTestResult.Empty; _ResetCursor(); }
protected override void OnMouseMethodChanged() { base.OnMouseMethodChanged(); switch (MouseMethod) { case ChartMouseMethod.Scroll: MouseState = ChartMouseState.Scroll; break; case ChartMouseMethod.Select: MouseState = ChartMouseState.Select; break; } }
protected override void OnChartMouseMove(MouseEventArgs e) { base.OnChartMouseMove(e); // if the Shift is press, maybe is hover hyperlink, or reverse MouseMethod ChartMouseMethod mouseMethod = MouseMethod; if (Helper.TestModifierKeys(Keys.Shift)) { if (mouseMethod == ChartMouseMethod.Select) { mouseMethod = ChartMouseMethod.Scroll; } } if (MouseState == ChartMouseState.Drag) { CurrentDragMethod = Helper.TestModifierKeys(Keys.Control) ? DragTopicsMethod.Copy : DragTopicsMethod.Move; //bool canDrop = TestDrop(PressObject.Topic, HitTest(e.X, e.Y).Topic); //ShowDragBox(PressObject.Topic, e.X, e.Y, canDrop); bool canDrag = TestDragDrop(DragBox.Topics, HitTest(e.X, e.Y).Topic, CurrentDragMethod); ShowDragBox(DragBox.Topics, e.X, e.Y, canDrag, CurrentDragMethod); } else if (mouseMethod == ChartMouseMethod.Scroll) { if (MouseMethod == mouseMethod) { MouseState = ChartMouseState.Scroll; } if (e.Button == MouseButtons.Left) { Scroll(LastMousePos.X - e.X, LastMousePos.Y - e.Y); LastMousePos.X = e.X; LastMousePos.Y = e.Y; } } else if (IsMouseDown) { if (PressObject.IsEmpty) // select { if (e.Button == MouseButtons.Left) { MouseState = ChartMouseState.Select; } } else if (MouseState != ChartMouseState.Drag) { // test drag if (Math.Abs(MouseDownPos.X - e.X) > SystemInformation.DragSize.Width || Math.Abs(MouseDownPos.Y - e.Y) > SystemInformation.DragSize.Height) { DragBox.Start(MouseDownPos, SelectedTopics); MouseState = ChartMouseState.Drag; } } } if (!EditMode && MouseState == ChartMouseState.Normal) { HoverObject = HitTest(e.X, e.Y); } _ResetCursor(); }