// ======================================== // method // ======================================== public override void Execute() { _command = null; _isExecuted = false; int charIndexInInline, inlineOffset; var inline = _target.GetInlineAt(_charIndex, out charIndexInInline, out inlineOffset); if (charIndexInInline != 0) { _command = new SplitInlineCommand(inline, charIndexInInline); _command.Execute(); _isExecuted = true; } }
//public override Range UndoneRange { // get { return _range; } //} // ======================================== // method // ======================================== public override void Execute() { _commands.Clear(); var line = _target.Parent as LineSegment; Contract.Ensures(line != null, "Parent of inline must not be null"); var inlineIndex = line._Inlines.IndexOf(_target); if (_range.End < _target.Length - 1) { /// rangeより後ろの部分があればそこで分割 var split = new SplitInlineCommand(_target, _range.End); split.Execute(); _commands.Add(split); } if (_range.Offset > 0) { /// rangeより前の部分があれば分割してrange内のinlineにコマンド適用 var split = new SplitInlineCommand(_target, _range.Offset); split.Execute(); _commands.Add(split); var provided = _commandProvider(split.Splitted); provided.Execute(); _commands.Add(provided); } else { var provided = _commandProvider(_target); provided.Execute(); _commands.Add(provided); } }