// ======================================== // method // ======================================== public override void Execute() { var containerCtrl = _target.Controller as IContainerController; /// 移動量 foreach (var editor in _addingEditors) { if (containerCtrl.CanContainChild(editor.Controller.ModelDescriptor)) { if (!_moveDelta.IsEmpty) { editor.Figure.Move(_moveDelta); } _target.AddChildEditor(editor); containerCtrl.InsertChild(editor.Model, containerCtrl.ChildCount); editor.Enable(); } } /// Route()だけやり直し foreach (var editor in _addingEditors) { if (editor.Figure is LineEdge) { var edge = editor.Figure as LineEdge; edge.Route(); } } }
public override void Redo() { var containerCtrl = _target.Controller as IContainerController; _createdEditor.Controller.RestoreModel(_createdEditor.Model); _createdEditor.Figure.Bounds = _bounds; _target.AddChildEditor(_createdEditor); containerCtrl.InsertChild(_createdEditor.Model, containerCtrl.ChildCount); _createdEditor.Enable(); var select = new SelectRequest(); select.DeselectOthers = true; select.Value = SelectKind.True; _createdEditor.PerformRequest(select); }
public override void Redo() { var containerCtrl = _target.Controller as IContainerController; _createdEditor.Controller.RestoreModel(_createdEditor.Model); var freehand = _createdEditor.Figure as FreehandFigure; freehand.SetPoints(_points); freehand.BorderWidth = _width; freehand.Foreground = _color; _target.AddChildEditor(_createdEditor); containerCtrl.InsertChild(_createdEditor.Model, containerCtrl.ChildCount); _createdEditor.Enable(); var select = new SelectRequest(); select.DeselectOthers = true; select.Value = SelectKind.True; _createdEditor.PerformRequest(select); }
// ======================================== // method // ======================================== public override void Execute() { var container = _target.Controller as IContainerController; if (container == null) { return; } var data = Clipboard.GetDataObject(); if (EditorFactory.CanRestoreDataObject(data)) { /// Editorを復元 _pastedEditors = EditorFactory.RestoreDataObject(data, _target.Site.ControllerFactory); /// 一番左上の位置計算 var left = int.MaxValue; var top = int.MaxValue; foreach (var editor in _pastedEditors) { if (container.CanContainChild(editor.Controller.ModelDescriptor)) { left = left < editor.Figure.Left? left: editor.Figure.Left; top = top < editor.Figure.Top? top: editor.Figure.Top; } } /// 各editorの移動量 var moveDelta = new Size(_location.X - left, _location.Y - top); /// _targetに追加 foreach (var editor in _pastedEditors) { if (container.CanContainChild(editor.Controller.ModelDescriptor)) { editor.Figure.Location += moveDelta; _target.AddChildEditor(editor); container.InsertChild(editor.Model, container.ChildCount); editor.Enable(); } } /// Route()だけやり直し foreach (var editor in _pastedEditors) { if (editor.Figure is LineEdge) { var edge = editor.Figure as LineEdge; edge.Route(); } } } else if (_format != null && _creator != null) { /// 一般的なフォーマットから復元 var format = DataFormats.GetFormat(_format); if (data.GetDataPresent(format.Name)) { _pastedEditors = _creator(_target, _location, _description); } } }