public override void Undo(DCSoft.CSharpWriter.Undo.XUndoEventArgs args)
 {
     if (_OldStyleIndex.Count > 0)
     {
         if (this.ParagraphStyle)
         {
             this.Document.EditorSetParagraphStyle(_OldStyleIndex, false);
         }
         else
         {
             this.Document.EditorSetElementStyle(_OldStyleIndex, false);
         }
     }
 }
 /// <summary>
 /// 撤销操作
 /// </summary>
 public override void Undo(DCSoft.CSharpWriter.Undo.XUndoEventArgs args)
 {
     if (myProperty != null && objObjectInstance != null)
     {
         myProperty.SetValue(objObjectInstance, objOldValue, null);
         if (objObjectInstance is DomElement)
         {
             DomElement element = (DomElement)objObjectInstance;
             element.SizeInvalid = true;
             this.OwnerList.RefreshElements.Add(element);
         }
         if (objObjectInstance is DomDocument)
         {
             if (myProperty.Name == "PageSettings")
             {
                 this.OwnerList.NeedRefreshDocument = true;
             }
         }
     }
 }
 /// <summary>
 /// 重复操作
 /// </summary>
 public override void Redo(DCSoft.CSharpWriter.Undo.XUndoEventArgs args)
 {
     if (myContainer != null)
     {
         DomContentElement ce = myContainer.ContentElement;
         //args.Parameters["ContentElement"] = ce;
         if (_OldElements != null && _NewElements == null)
         {
             // 光删除,重复操作就是重复删除数据
             int index = ce.PrivateContent.IndexOf(_OldElements.FirstContentElement);
             foreach (DomElement element in _OldElements)
             {
                 DomElement e2 = GetContentElement(element);
                 if (e2 != null)
                 {
                     if (e2.OwnerLine != null)
                     {
                         e2.OwnerLine.InvalidateState = true;
                     }
                 }
                 element.OwnerLine = null;
                 myContainer.Elements.Remove(element);
                 myContainer.OwnerDocument.HighlightManager.Remove(element);
             }
             myContainer.UpdateContentVersion();
             this.OwnerList.AddContentRefreshInfo(ce, index);
         }
         else if (_OldElements == null && _NewElements != null)
         {
             // 光插入,重复操作就是重复插入数据
             myContainer.Elements.InsertRange(intIndex, _NewElements);
             foreach (DomElement element in _NewElements)
             {
                 DomElement e2 = GetContentElement(element);
                 if (e2 != null && e2.OwnerLine != null)
                 {
                     e2.OwnerLine.InvalidateState = true;
                 }
                 element.OwnerLine = null;
             }//foreach
             myContainer.UpdateContentVersion();
             AddRefreshElements(
                 _NewElements.FirstContentElement,
                 _NewElements.LastContentElement);
         }
         else if (_OldElements != null && _NewElements != null)
         {
             // 替换,撤销操作就是删除旧数据并插入新数据
             int index = ce.PrivateContent.IndexOf(_OldElements.FirstContentElement);
             foreach (DomElement element in _OldElements)
             {
                 DomElement e2 = GetContentElement(element);
                 if (e2 != null && e2.OwnerLine != null)
                 {
                     e2.OwnerLine.InvalidateState = true;
                 }
                 element.OwnerLine = null;
                 myContainer.Elements.Remove(element);
                 myContainer.OwnerDocument.HighlightManager.Remove(element);
             }
             this.OwnerList.AddContentRefreshInfo(ce, index);
             myContainer.Elements.InsertRange(intIndex, _NewElements);
             foreach (DomElement element in _NewElements)
             {
                 if (element.OwnerLine != null)
                 {
                     element.OwnerLine.InvalidateState = true;
                     element.OwnerLine = null;
                 }
             }
             myContainer.UpdateContentVersion();
             ce.UpdateContentElements(true);
             AddRefreshElements(
                 _NewElements.FirstContentElement,
                 _NewElements.LastContentElement);
         }
         if (this.OwnerList.ContentChangedContainer.Contains(myContainer) == false)
         {
             this.OwnerList.ContentChangedContainer.Add(myContainer);
         }
     }
 }
        /// <summary>
        /// 撤销操作
        /// </summary>
        public override void Undo(DCSoft.CSharpWriter.Undo.XUndoEventArgs args)
        {
            if (myContainer != null)
            {
                DomContentElement ce = myContainer.ContentElement;
                args.Parameters["ContentElement"] = ce;
                if (_OldElements != null && _NewElements == null)
                {
                    // 光删除,撤销操作就是恢复数据
                    myContainer.Elements.InsertRange(intIndex, _OldElements);
                    foreach (DomElement element in _OldElements)
                    {
                        DomElement e2 = GetContentElement(element);
                        if (e2 != null && e2.OwnerLine != null)
                        {
                            e2.OwnerLine.InvalidateState = true;
                        }
                        element.OwnerLine = null;
                        element.Parent    = myContainer;
                    }
                    myContainer.UpdateContentVersion();
                    AddRefreshElements(
                        _OldElements.FirstContentElement,
                        _OldElements.LastContentElement);
                }
                else if (_OldElements == null && _NewElements != null)
                {
                    // 光插入,撤销操作就是删除数据
                    int index      = ce.PrivateContent.IndexOf(_NewElements.FirstContentElement);
                    int startIndex = index;
                    foreach (DomElement element in _NewElements)
                    {
                        startIndex = Math.Min(startIndex, element.FirstContentElement.ViewIndex);
                        myContainer.Elements.Remove(element);
                        myContainer.OwnerDocument.HighlightManager.Remove(element);

                        DomElement fce = GetContentElement(element.FirstContentElement);
                        DomElement ece = GetContentElement(element.LastContentElement);

                        ce.SetLinesInvalidateState(
                            fce == null ? null : fce.OwnerLine,
                            ece == null ? null : ece.OwnerLine);

                        if (element.OwnerLine != null)
                        {
                            element.OwnerLine.InvalidateState = true;
                            element.OwnerLine = null;
                        }
                    }
                    myContainer.UpdateContentVersion();
                    this.OwnerList.AddContentRefreshInfo(ce, startIndex);
                }
                else if (_OldElements != null && _NewElements != null)
                {
                    // 替换,撤销操作就是删除新数据并恢复旧数据
                    int index      = ce.PrivateContent.IndexOf(_NewElements.FirstContentElement);
                    int startIndex = index;
                    foreach (DomElement element in _NewElements)
                    {
                        startIndex = Math.Min(startIndex, element.FirstContentElement.ViewIndex);
                        myContainer.Elements.Remove(element);
                        myContainer.OwnerDocument.HighlightManager.Remove(element);

                        DomElement fce = GetContentElement(element.FirstContentElement);
                        DomElement ece = GetContentElement(element.LastContentElement);

                        ce.SetLinesInvalidateState(
                            fce == null ? null : fce.OwnerLine,
                            ece == null ? null : ece.OwnerLine);

                        //ce.SetLinesInvalidateState(
                        //    element.FirstContentElement.OwnerLine,
                        //    element.LastContentElement.OwnerLine);
                        element.OwnerLine = null;
                    }
                    this.OwnerList.AddContentRefreshInfo(ce, startIndex);
                    myContainer.Elements.InsertRange(intIndex, _OldElements);
                    foreach (DomElement element in _OldElements)
                    {
                        if (element.OwnerLine != null)
                        {
                            element.OwnerLine.InvalidateState = true;
                            element.OwnerLine = null;
                        }
                        element.Parent = myContainer;
                    }
                    myContainer.UpdateContentVersion();
                    this.OwnerList.RefreshElements.Add(
                        GetContentElement(
                            _OldElements.FirstContentElement));
                    this.OwnerList.RefreshElements.Add(
                        GetContentElement(
                            _OldElements.LastContentElement));
                }
                if (this.OwnerList.ContentChangedContainer.Contains(myContainer) == false)
                {
                    this.OwnerList.ContentChangedContainer.Add(myContainer);
                }
            }
        }
Exemplo n.º 5
0
 public override void Redo(DCSoft.CSharpWriter.Undo.XUndoEventArgs args)
 {
     _Control.EditorSetDefaultFont(_NewFont, _NewColor, true);
 }
Exemplo n.º 6
0
        public override void Undo(DCSoft.CSharpWriter.Undo.XUndoEventArgs args)
        {
            if (_ListInstance == null)
            {
                throw new ArgumentNullException("ListInstance");
            }
            switch (this.Action)
            {
            case XTextUndoModifyListAction.Insert:
            {
                if (this._Index >= 0 && this._Index < _ListInstance.Count)
                {
                    _ListInstance.RemoveAt(this._Index);
                }
                else
                {
                    _ListInstance.Remove(this._NewValue);
                }
            }
            break;

            case XTextUndoModifyListAction.Remove:
                _ListInstance.Insert(_Index, _OldValue);
                break;

            case XTextUndoModifyListAction.Change:
                if (_Index >= 0 && _Index < _ListInstance.Count)
                {
                    _ListInstance[_Index] = _OldValue;
                }
                break;

            case XTextUndoModifyListAction.InsertRange:
            {
                if (_NewValue is IEnumerable)
                {
                    int index = this._Index;
                    foreach (object obj in (IEnumerable)_NewValue)
                    {
                        _ListInstance.RemoveAt(index);
                    }
                }
            }
            break;

            case XTextUndoModifyListAction.RemoveRange:
            {
                if (_OldValue is IEnumerable)
                {
                    int index = this._Index;
                    foreach (object obj in (IEnumerable)_OldValue)
                    {
                        _ListInstance.Insert(index, obj);
                        index++;
                    }
                }
            }
            break;

            case XTextUndoModifyListAction.ChangeRange:
            {
                if (_OldValue is IEnumerable)
                {
                    int index = this._Index;
                    foreach (object obj in (IEnumerable)_OldValue)
                    {
                        _ListInstance[index] = obj;
                        index++;
                    }
                }
            }
            break;
            }//switch
            if (AfterUndo != null)
            {
                AfterUndo(this, EventArgs.Empty);
            }
        }//Undo