Example #1
0
        private void SetStyle(
            Color fontColor,
            IBrushDescription newBackground,
            bool newIsBorderEnabled,
            Color newBorderColor,
            int newBorderWidth,
            DashStyle newBorderDashStyle
            )
        {
            var canvas = _form.EditorCanvas;

            if (canvas == null)
            {
                return;
            }

            var cmd       = new CompositeCommand();
            var selecteds = canvas.SelectionManager.SelectedEditors.ToArray();

            foreach (var target in selecteds)
            {
                var shape = target.Model as MemoStyledText;
                if (shape != null)
                {
                    cmd.Chain(
                        new SetStyledTextColorCommand(
                            target,
                            () => shape.StyledText,
                            flow => fontColor
                            )
                        );

                    cmd.Chain(
                        new SetNodeBackgroundCommand(target, newBackground)
                        );

                    cmd.Chain(
                        new SetNodeBorderCommand(
                            target,
                            newIsBorderEnabled,
                            newBorderColor,
                            newBorderWidth,
                            newBorderDashStyle
                            )
                        );
                }
            }

            using (canvas.RootFigure.DirtManager.BeginDirty()) {
                canvas.CommandExecutor.Execute(cmd);
            }
        }
        private void ToggleListBase(ListKind listKind)
        {
            if (_selection.IsEmpty)
            {
                var target = _target.GetBlockAt(_caretIndex) as Paragraph;
                if (target != null)
                {
                    if (target.ListKind == listKind)
                    {
                        /// listからnoneに戻す
                        _executor.Execute(new SetListKindOfParagraphCommand(target, ListKind.None));
                    }
                    else
                    {
                        /// listにする
                        _executor.Execute(new SetListKindOfParagraphCommand(target, listKind));
                    }
                }
            }
            else
            {
                var targets = GetParagraphsInSelection();

                /// すべてのParagraphがlistならlist解除,そうでなければすべてlistにする
                var cmd    = new CompositeCommand();
                var cancel = !targets.Any(target => target.ListKind != listKind);
                foreach (var target in targets)
                {
                    if (cancel)
                    {
                        if (target.ListKind != ListKind.None)
                        {
                            cmd.Chain(new SetListKindOfParagraphCommand(target, ListKind.None));
                        }
                    }
                    else
                    {
                        if (target.ListKind != listKind)
                        {
                            cmd.Chain(new SetListKindOfParagraphCommand(target, listKind));
                        }
                    }
                }
                if (cmd.Children.Count > 0)
                {
                    _executor.Execute(cmd);
                }
            }
        }
        private void SetLineStyle(
            Color lineColor,
            int lineWidth,
            DashStyle lineDashStyle
            )
        {
            var canvas = _form.EditorCanvas;

            if (canvas == null)
            {
                return;
            }

            var cmd       = new CompositeCommand();
            var selecteds = canvas.SelectionManager.SelectedEditors.ToArray();

            foreach (var target in selecteds)
            {
                var edge = target.Model as MemoEdge;
                if (edge != null)
                {
                    cmd.Chain(
                        new SetEdgeLineCommand(target, lineColor, lineWidth, lineDashStyle)
                        );
                }
            }

            using (canvas.RootFigure.DirtManager.BeginDirty()) {
                canvas.CommandExecutor.Execute(cmd);
            }
        }
 public void Outdent()
 {
     if (_selection.IsEmpty)
     {
         var target = _target.GetBlockAt(_caretIndex) as Paragraph;
         var cmd    = new IndentParagraphCommand(target, -1);
         _executor.Execute(cmd);
     }
     else
     {
         var targets = GetParagraphsInSelection();
         var cmds    = new CompositeCommand();
         foreach (var target in targets)
         {
             var cmd = new IndentParagraphCommand(target, -1);
             if (cmd.CanExecute)
             {
                 cmds.Chain(cmd);
             }
         }
         if (cmds.Children.Count > 0)
         {
             _executor.Execute(cmds);
         }
     }
 }
        // --- font style ---
        /// <summary>
        /// Selectionの範囲の文字列のParagraphKindを設定する.
        /// </summary>
        public void SetParagraphKind(ParagraphKind paragraphKind)
        {
            if (_selection.IsEmpty)
            {
                var target = _target.GetBlockAt(_caretIndex) as Paragraph;
                if (target != null)
                {
                    _executor.Execute(new SetParagraphKindOfParagraphCommand(target, paragraphKind));
                    _nextInputInline      = new Run();
                    _nextInputInline.Font = _target.GetDefaultFont(paragraphKind);
                }
            }
            else
            {
                var targets = GetParagraphsInSelection();

                var cmd = new CompositeCommand();
                foreach (var target in targets)
                {
                    cmd.Chain(new SetParagraphKindOfParagraphCommand(target, paragraphKind));
                }
                if (cmd.Children.Count > 0)
                {
                    _executor.Execute(cmd);
                }
            }
        }
Example #6
0
        // ========================================
        // method
        // ========================================
        public override void Execute()
        {
            _command = null;

            var stext = _styledTextProvider();

            if (stext != null)
            {
                _command = new CompositeCommand();

                foreach (var block in stext.Blocks)
                {
                    var para = block as Paragraph;
                    if (para != null)
                    {
                        if (_on)
                        {
                            if (para.ListKind != _listKind)
                            {
                                _command.Chain(new SetListKindOfParagraphCommand(para, _listKind));
                            }
                        }
                        else
                        {
                            if (para.ListKind != ListKind.None)
                            {
                                _command.Chain(new SetListKindOfParagraphCommand(para, ListKind.None));
                            }
                        }
                    }
                }

                if (_command.Children.Count > 0)
                {
                    _command.Execute();
                }
            }
        }
 public void ChangeToNextListState()
 {
     if (_selection.IsEmpty)
     {
         var para = _target.GetBlockAt(_caretIndex) as Paragraph;
         if (para.ListKind == ListKind.CheckBox || para.ListKind == ListKind.TriStateCheckBox)
         {
             var cmd = new SetParagraphPropertiesCommand(
                 para,
                 para.Padding,
                 para.LineSpace,
                 para.HorizontalAlignment,
                 para.ParagraphKind,
                 para.ListKind,
                 para.ListLevel,
                 para.GetNextListState()
                 );
             _executor.Execute(cmd);
         }
     }
     else
     {
         var targets = GetParagraphsInSelection();
         var cmds    = new CompositeCommand();
         foreach (var para in targets)
         {
             if (para.ListKind == ListKind.CheckBox || para.ListKind == ListKind.TriStateCheckBox)
             {
                 var cmd = new SetParagraphPropertiesCommand(
                     para,
                     para.Padding,
                     para.LineSpace,
                     para.HorizontalAlignment,
                     para.ParagraphKind,
                     para.ListKind,
                     para.ListLevel,
                     para.GetNextListState()
                     );
                 cmds.Chain(cmd);
             }
         }
         if (cmds.Children.Count > 0)
         {
             _executor.Execute(cmds);
         }
     }
 }
Example #8
0
        private ICommand CreateDisconnCommand()
        {
            var ret = new CompositeCommand() as ICommand;

            var removeReq  = new RemoveRequest();
            var disconnReq = new ConnectRequest();

            if (_target.IsConnectable)
            {
                /// connectableの接続の処理
                var connectable = _target.Figure as IConnectable;

                var conns = connectable.Outgoings;
                foreach (var connection in conns)
                {
                    var connEditor = connection.GetEditor();
                    var connCtrl   = connEditor.Controller as IConnectionController;

                    disconnReq.ConnectingAnchor = connection.SourceAnchor;
                    disconnReq.NewLocation      = connection.SourceAnchor.Location;
                    ret = ret.Chain(connEditor.GetCommand(disconnReq));

                    if (!connCtrl.CanDisconnectSource)
                    {
                        ret = ret.Chain(connEditor.GetCommand(removeReq));
                    }
                }

                conns = connectable.Incomings;
                foreach (var connection in conns)
                {
                    var connEditor = connection.GetEditor();
                    var connCtrl   = connEditor.Controller as IConnectionController;

                    disconnReq.ConnectingAnchor = connection.TargetAnchor;
                    disconnReq.NewLocation      = connection.TargetAnchor.Location;
                    ret = ret.Chain(connEditor.GetCommand(disconnReq));

                    if (!connCtrl.CanDisconnectTarget)
                    {
                        ret = ret.Chain(connEditor.GetCommand(removeReq));
                    }
                }
            }
            else if (_target.IsConnection)
            {
                /// connectionの接続の処理
                var connection       = _target.Figure as IConnection;
                var connectionEditor = connection.GetEditor();

                if (connection.IsSourceConnected)
                {
                    disconnReq.ConnectingAnchor = connection.SourceAnchor;
                    disconnReq.NewLocation      = connection.SourceAnchor.Location;
                    ret = ret.Chain(connectionEditor.GetCommand(disconnReq));
                }

                if (connection.IsTargetConnected)
                {
                    disconnReq.ConnectingAnchor = connection.TargetAnchor;
                    disconnReq.NewLocation      = connection.TargetAnchor.Location;
                    ret = ret.Chain(connectionEditor.GetCommand(disconnReq));
                }
            }

            return(ret);
        }