Exemplo n.º 1
0
        public override object ApplyUndoRedoDiff(object diff)
        {
            ObjectDiff[] data = (ObjectDiff[])diff;

            XmlElement status  = UndoManager.GetObjectStatus(this);
            XmlElement oldElem = (XmlElement)status.CloneNode(true);

            ObjectDiff propsDiff = data [0];

            if (propsDiff != null)
            {
                propDiffGenerator.ApplyDiff(status, propsDiff);

                ReadProperties(new ObjectReader(Project, FileFormat.Native), status);
                data [0] = propDiffGenerator.GetDiff(status, oldElem);
            }

            ObjectDiff actionsDiff = data [1];

            if (actionsDiff != null)
            {
                LocalActionGroups.ApplyDiff(Project, actionsDiff);
                data [1] = LocalActionGroups.GetDiff(Project, oldElem);
            }

            return(data);
        }
Exemplo n.º 2
0
        public override object ApplyUndoRedoDiff(object diff)
        {
            ObjectDiff actionsDiff = (ObjectDiff)diff;

            XmlElement status = UndoManager.GetObjectStatus(this);

            DiffGenerator differ = GetDiffGenerator();

            differ.ApplyDiff(this, actionsDiff);
            actionsDiff = differ.GetDiff(this, status);

            UndoWriter writer  = new UndoWriter(status.OwnerDocument, UndoManager);
            XmlElement newElem = Write(writer);

            UndoManager.UpdateObjectStatus(this, newElem);

            return(actionsDiff);
        }