/// <summary> /// /// </summary> internal ModifyEventArgs(ModifyStatus modifyStatus, IHighLevelCommand command, TextPos endPos) { ModifyStatus = modifyStatus; ModifyDetail = command.ModifyDetail; Range = command.ResultRange; OldEndPos = endPos; }
/// <summary> /// /// </summary> public void Redo() { var endPos = TextPos.GetEndPos(this); if (_undoRedoHistory.TryRedo(out var command)) { RaiseModifyEvent(ModifyStatus.Modify, command, endPos); } }
/// <summary> /// /// </summary> private bool TryExecuteCommand(IHighLevelCommand command) { if (command.Validate()) { var endPos = TextPos.GetEndPos(this); _undoRedoHistory.Execute(command); RaiseModifyEvent(ModifyStatus.Modify, command, endPos); return(true); } return(false); }
/// <summary> /// /// </summary> private void RaiseModifyEvent(ModifyStatus status, IHighLevelCommand command, TextPos endPos) { DocModified?.Invoke(new ModifyEventArgs(status, command, endPos)); }
/// <summary> /// /// </summary> private TextRange GetNextOrPrevRange(TextPos pos, bool isRemoveNext) { var offsetPos = isRemoveNext ? pos.GetNextPos(this) : pos.GetPrevPos(this); return(new TextRange(offsetPos, pos)); }
/// <summary> /// /// </summary> public void RemoveBack(TextPos pos) { TryExecuteCommand(new RemoveTextCommand(_internalData, GetNextOrPrevRange(pos, false), ModifyDetail.RemoveOne)); }
/// <summary> /// /// </summary> public void InsertText(TextPos pos, string text) { InsertText(new TextRange(pos, pos), text); }