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); } } }
// ======================================== // 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); } } }
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); }