/// <summary> /// Undo this action /// </summary> public override void Undo() { if (Range.Rows == -1) { Logger.Log("remove rows", "attempt to undo removing all rows from the worksheet must it must be have at least one row, operation aborted."); return; } Worksheet.InsertRows(Range.Row, Range.Rows); if (backupData == null) { #if DEBUG Logger.Log("remove rows", "no backup data"); Debug.Assert(false, "why no backup data here?"); #else return; #endif // DEBUG } // restore deleted data Worksheet.SetPartialGrid(Range, backupData); #region Restore Outlines #if OUTLINE // restore outlines if (this.changedOutlines != null) { foreach (var changedOutlineInfo in this.changedOutlines) { changedOutlineInfo.Key.Start = changedOutlineInfo.Value.start; changedOutlineInfo.Key.Count = changedOutlineInfo.Value.count; } } if (this.deletedOutlines != null) { foreach (var outline in this.deletedOutlines) { Worksheet.GroupRows(outline.Start, outline.Count); } } #endif // OUTLINE #endregion // Restore Outlines #region Restore Named Range // restore named ranges //if (this.changedNamedRange != null) //{ // foreach (var changedRangeInfo in this.changedNamedRange) // { // changedRangeInfo.Key.Row = changedRangeInfo.Value.start; // changedRangeInfo.Key.Rows = changedRangeInfo.Value.count; // } //} if (this.deletedNamedRanges != null) { foreach (var namedRange in this.deletedNamedRanges) { Worksheet.AddNamedRange(namedRange); } } #endregion // Restore Named Range #region Restore Highlight Ranges // restore highlight ranges //if (this.changedHighlightRanges != null) //{ // foreach (var changedRangeInfo in this.changedHighlightRanges) // { // changedRangeInfo.Key.Row = changedRangeInfo.Value.start; // changedRangeInfo.Key.Rows = changedRangeInfo.Value.count; // } //} if (this.deletedHighlightRanges != null) { foreach (var range in this.deletedHighlightRanges) { Worksheet.AddHighlightRange(range); } } #endregion // Restore Highlight Ranges #if OUTLINE if (this.changedOutlines != null && this.changedOutlines.Count > 0) { this.Worksheet.UpdateViewportController(); } #endif // OUTLINE }