private void Simulator_MouseMove(object sender, MouseEventArgs e) { if (CurrentMouseState == MouseState.Wire) { WireBuilder.EndPosition = e.Location; } else if (CurrentMouseState == MouseState.Drag) { Point off = GeometryUtil.GetOffset(e.Location, ClickedPosition); SelectedElement.Move(off); ClickedPosition = e.Location; } Invalidate(true); }
private void Simulator_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { if (CurrentMouseState == MouseState.Default) { WireHandle wh = Scene.ClickedOutHandle(e.Location); Component selected = Scene.ClickSelect(e.Location); if (wh != null) { WireBuilder.Init(wh.Source, wh); CurrentMouseState = MouseState.Wire; } else if (selected != null) { SelectedElement = selected; CurrentMouseState = MouseState.Drag; ClickedPosition = e.Location; SelectionOffset = GeometryUtil.GetOffset(selected.TopLeft, e.Location); } } else if (CurrentMouseState == MouseState.Wire) { WireHandle wh = Scene.ClickedInHandle(e.Location); if (wh != null) { Wire w = WireBuilder.Finalize(wh); Scene.AddElement(w); CurrentMouseState = MouseState.Default; } else { WireBuilder.AddPoint(e.Location); } } } Invalidate(true); }