public virtual void HandleDragFinish(object sender, MouseEventArgs e) { using (Handle.Host.Figure.DirtManager.BeginDirty()) { var moveDelta = (Size)e.Location - (Size)_startPoint; if (KeyUtil.IsControlPressed()) { _targets.HideFeedback(_moveRequest); if (_targets.Editors.Any()) { var target = _targets.Editors.First().Parent; var cloneRequest = new CloneRequest(_targets.Editors); cloneRequest.MoveDelta = moveDelta; var cmd = target.PerformRequest(cloneRequest) as CloneCommand; if (cmd != null && cmd.ClonedEditors != null) { var select = new SelectMultiCommand(cmd.ClonedEditors, SelectKind.True, true); select.Execute(); } } } else { _moveRequest.MoveDelta = moveDelta; _targets.HideFeedback(_moveRequest); _targets.PerformCompositeRequest(_moveRequest, Handle.Host.Site.CommandExecutor); } Handle.Host.ShowFeedback(new HighlightRequest()); } }
public override bool HandleDragFinish(MouseEventArgs e) { using (_Host.RootFigure.DirtManager.BeginDirty()) { var delta = (Size)e.Location - (Size)_startPoint; var horizontal = Math.Abs(delta.Width) > Math.Abs(delta.Height); var content = _Host.RootEditor.Content; if (horizontal) { _moveRequest.MovingEditors = content.Children.Where(edi => edi.Figure.Left > _startPoint.X).ToArray(); } else { _moveRequest.MovingEditors = content.Children.Where(edi => edi.Figure.Top > _startPoint.Y).ToArray(); } _targets = new EditorBundle(_moveRequest.MovingEditors); var moveDelta = horizontal ? new Size(delta.Width, 0) : new Size(0, delta.Height); _moveRequest.MoveDelta = moveDelta; _targets.HideFeedback(_moveRequest); _targets.PerformCompositeRequest(_moveRequest, _Host.CommandExecutor); _Host.RootEditor.Content.HideFeedback(_spaceRequest); } _canvas.Tool = _toolOnFinished; return(true); }
public override bool HandleDragMove(MouseEventArgs e) { using (_Host.RootEditor.Figure.DirtManager.BeginDirty()) { if (_targets != null) { _targets.HideFeedback(_moveRequest); } var delta = (Size)e.Location - (Size)_startPoint; var horizontal = Math.Abs(delta.Width) > Math.Abs(delta.Height); horizontal = Math.Abs(delta.Width) < 40 && Math.Abs(delta.Height) < 40 ? false: horizontal; var content = _Host.RootEditor.Content; if (horizontal) { _moveRequest.MovingEditors = content.Children.Where(edi => edi.Figure.Left > _startPoint.X).ToArray(); } else { _moveRequest.MovingEditors = content.Children.Where(edi => edi.Figure.Top > _startPoint.Y).ToArray(); } _targets = new EditorBundle(_moveRequest.MovingEditors); var moveDelta = horizontal ? new Size(delta.Width, 0) : new Size(0, delta.Height); _moveRequest.MoveDelta = moveDelta; _targets.ShowFeedback(_moveRequest); _spaceRequest.Horizontal = horizontal; if (horizontal) { _spaceRequest.Bounds = RectUtil.GetRectangleFromDiagonalPoints(_startPoint, new Point(e.X, _startPoint.Y + 20)); } else { _spaceRequest.Bounds = RectUtil.GetRectangleFromDiagonalPoints(_startPoint, new Point(_startPoint.X + 20, e.Y)); } _Host.RootEditor.Content.ShowFeedback(_spaceRequest); } return(true); }