Esempio n. 1
0
        // ========================================
        // 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();
                }
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 4
0
        // ========================================
        // 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);
                }
            }
        }