using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using tool.ViewModels; namespace tool.Actions { public class SyncEditAction : IUndoItem { public SyncEditAction(IUndoContext _context) { Context = _context; m_OldDataStream = new MemoryStream(); m_OldDataWriter = new StreamWriter(m_OldDataStream); m_OldDataReader = new StreamReader(m_OldDataStream); ((SyncViewModel)Context).Save(m_OldDataWriter); } public bool CanRedo { get { return true; } } public bool CanUndo { get { return true; } } public IUndoContext Context { get; private set; } public string Description { get { return "Edit cell value"; } } public void Redo() { if (m_NewDataStream == null) { m_NewDataStream = new MemoryStream(); m_NewDataWriter = new StreamWriter(m_OldDataStream); m_NewDataReader = new StreamReader(m_OldDataStream); ((SyncViewModel)Context).Save(m_NewDataWriter); } else { ((SyncViewModel)Context).Load(m_NewDataReader); } } public void Undo() { ((SyncViewModel)Context).Load(m_OldDataReader); } private MemoryStream m_OldDataStream; private MemoryStream m_NewDataStream; private StreamWriter m_OldDataWriter; private StreamWriter m_NewDataWriter; private StreamReader m_OldDataReader; private StreamReader m_NewDataReader; } }