bool Undo(Excel excel) { bool flag; CellRange[] oldSelection = (_workSheet.Selections != null) ? Enumerable.ToArray <CellRange>((IEnumerable <CellRange>)_workSheet.Selections) : null; List <CellData> oldValues = null; CellRange fillRange = _dragFillExtent.FillRange; if ((_savedFilledViewportCells != null) && _savedFilledViewportCells.IsValueSaved()) { oldValues = CopyMoveHelper.GetValues(_workSheet, fillRange.Row, fillRange.Column, fillRange.RowCount, fillRange.ColumnCount); } if (_dragFillExtent.AutoFillType == AutoFillType.ClearValues) { flag = UndoDragClear(excel); } else { flag = UndoDragFill(excel); } excel.CloseDragFillPopup(); if ((oldValues != null) && object.ReferenceEquals(excel.ActiveSheet, _workSheet)) { CopyMoveHelper.RaiseValueChanged(excel, fillRange.Row, fillRange.Column, fillRange.RowCount, fillRange.ColumnCount, oldValues); } CellRange[] newSelection = (_workSheet.Selections != null) ? Enumerable.ToArray <CellRange>((IEnumerable <CellRange>)_workSheet.Selections) : null; if (excel.RaiseSelectionChanging(oldSelection, newSelection)) { excel.RaiseSelectionChanged(); } excel.RefreshCellAreaViewport(0, 0, _workSheet.RowCount, _workSheet.ColumnCount); return(flag); }
void Execute(Excel excel) { CellRange[] oldSelection = (_workSheet.Selections != null) ? Enumerable.ToArray <CellRange>((IEnumerable <CellRange>)_workSheet.Selections) : null; if (_dragFillExtent.AutoFillType == AutoFillType.ClearValues) { ExecuteDragFillClear(excel); } else { ExecuteDragFill(excel); } if (((_savedFilledViewportCells != null) && _savedFilledViewportCells.IsValueSaved()) && object.ReferenceEquals(excel.ActiveSheet, _workSheet)) { CellRange fillRange = _dragFillExtent.FillRange; CopyMoveHelper.RaiseValueChanged(excel, fillRange.Row, fillRange.Column, fillRange.RowCount, fillRange.ColumnCount, _savedFilledViewportCells.GetValues()); } CellRange[] newSelection = (_workSheet.Selections != null) ? Enumerable.ToArray <CellRange>((IEnumerable <CellRange>)_workSheet.Selections) : null; if (excel.RaiseSelectionChanging(oldSelection, newSelection)) { excel.RaiseSelectionChanged(); } }
bool Undo(Excel excel) { bool flag = UndoSetArrayFormula(excel); CellRange[] oldSelection = (_workSheet.Selections != null) ? Enumerable.ToArray <CellRange>((IEnumerable <CellRange>)_workSheet.Selections) : null; List <CellData> oldValues = null; if ((_savedArrayFormulaViewportCells != null) && _savedArrayFormulaViewportCells.IsValueSaved()) { oldValues = CopyMoveHelper.GetValues(_workSheet, _arrayFormulaRange.Row, _arrayFormulaRange.Column, _arrayFormulaRange.RowCount, _arrayFormulaRange.ColumnCount); } if ((oldValues != null) && object.ReferenceEquals(excel.ActiveSheet, _workSheet)) { CopyMoveHelper.RaiseValueChanged(excel, _arrayFormulaRange.Row, _arrayFormulaRange.Column, _arrayFormulaRange.RowCount, _arrayFormulaRange.ColumnCount, oldValues); } CellRange[] newSelection = (_workSheet.Selections != null) ? Enumerable.ToArray <CellRange>((IEnumerable <CellRange>)_workSheet.Selections) : null; if (excel.RaiseSelectionChanging(oldSelection, newSelection)) { excel.RaiseSelectionChanged(); } excel.RefreshCellAreaViewport(0, 0, _workSheet.RowCount, _workSheet.ColumnCount); excel.RefreshCharts(); return(flag); }
/// <summary> /// Executes the action on the specified sender. /// </summary> /// <param name="sender">Object on which the action occurred.</param> public override void Execute(object sender) { if (Excel.IsValidRange(_dragDropExtent.FromRow, _dragDropExtent.FromColumn, _dragDropExtent.RowCount, _dragDropExtent.ColumnCount, _sheet.RowCount, _sheet.ColumnCount) && (_insert || Excel.IsValidRange(_dragDropExtent.ToRow, _dragDropExtent.ToColumn, _dragDropExtent.RowCount, _dragDropExtent.ColumnCount, _sheet.RowCount, _sheet.ColumnCount))) { SaveState(); if (_insert) { if ((_dragDropExtent.FromColumn < 0) || (_dragDropExtent.FromRow < 0)) { if (_dragDropExtent.FromColumn < 0) { if (_dragDropExtent.FromRow >= 0) { int fromRow = _dragDropExtent.FromRow; int toRow = _dragDropExtent.ToRow; int rowCount = _dragDropExtent.RowCount; int row = _dragDropExtent.ToRow; base.SuspendInvalidate(sender); try { _sheet.AddRows(toRow, rowCount); if (_copy) { _sheet.CopyTo((toRow <= fromRow) ? (fromRow + rowCount) : fromRow, -1, toRow, -1, rowCount, -1, _option); } else { _sheet.MoveTo((toRow <= fromRow) ? (fromRow + rowCount) : fromRow, -1, toRow, -1, rowCount, -1, _option); _sheet.RemoveRows((toRow <= fromRow) ? (fromRow + rowCount) : fromRow, rowCount); if (fromRow < toRow) { row = toRow - rowCount; } } } finally { base.ResumeInvalidate(sender); } Excel view2 = sender as Excel; if (view2 != null) { CellRange[] oldSelection = Enumerable.ToArray <CellRange>((IEnumerable <CellRange>)view2.ActiveSheet.Selections); view2.SetSelection(row, -1, rowCount, -1); if (view2.RaiseSelectionChanging(oldSelection, Enumerable.ToArray <CellRange>((IEnumerable <CellRange>)view2.ActiveSheet.Selections))) { view2.RaiseSelectionChanged(); } view2.SetActiveCell(row, 0, false); view2.RefreshRange(-1, -1, -1, -1, SheetArea.Cells | SheetArea.ColumnHeader | SheetArea.RowHeader); view2.RefreshFloatingObjects(); } } } else { int fromColumn = _dragDropExtent.FromColumn; int toColumn = _dragDropExtent.ToColumn; int columnCount = _dragDropExtent.ColumnCount; int column = _dragDropExtent.ToColumn; base.SuspendInvalidate(sender); try { _sheet.AddColumns(toColumn, columnCount); if (_copy) { _sheet.CopyTo(-1, (toColumn <= fromColumn) ? (fromColumn + columnCount) : fromColumn, -1, toColumn, -1, columnCount, _option); } else { _sheet.MoveTo(-1, (toColumn <= fromColumn) ? (fromColumn + columnCount) : fromColumn, -1, toColumn, -1, columnCount, _option); _sheet.RemoveColumns((toColumn <= fromColumn) ? (fromColumn + columnCount) : fromColumn, columnCount); if (fromColumn < toColumn) { column = toColumn - columnCount; } } } finally { base.ResumeInvalidate(sender); } Excel view = sender as Excel; if (view != null) { CellRange[] rangeArray = Enumerable.ToArray <CellRange>((IEnumerable <CellRange>)view.ActiveSheet.Selections); view.SetSelection(-1, column, -1, columnCount); if (view.RaiseSelectionChanging(rangeArray, Enumerable.ToArray <CellRange>((IEnumerable <CellRange>)view.ActiveSheet.Selections))) { view.RaiseSelectionChanged(); } view.SetActiveCell(0, column, false); view.RefreshRange(-1, -1, -1, -1, SheetArea.Cells | SheetArea.ColumnHeader | SheetArea.RowHeader); view.RefreshFloatingObjects(); } } } } else { int num9 = _dragDropExtent.FromRow; int num10 = _dragDropExtent.FromColumn; int num11 = _dragDropExtent.ToRow; int num12 = _dragDropExtent.ToColumn; int num13 = _dragDropExtent.RowCount; int num14 = _dragDropExtent.ColumnCount; Excel sheetView = sender as Excel; base.SuspendInvalidate(sender); try { if (_copy) { _sheet.CopyTo(num9, num10, num11, num12, num13, num14, _option); } else { _sheet.MoveTo(num9, num10, num11, num12, num13, num14, _option); } if (sheetView != null) { CellRange[] rangeArray3 = Enumerable.ToArray <CellRange>((IEnumerable <CellRange>)sheetView.ActiveSheet.Selections); sheetView.SetSelection(num11, num12, num13, num14); if (sheetView.RaiseSelectionChanging(rangeArray3, Enumerable.ToArray <CellRange>((IEnumerable <CellRange>)sheetView.ActiveSheet.Selections))) { sheetView.RaiseSelectionChanged(); } sheetView.SetActiveCell(Math.Max(0, num11), Math.Max(0, num12), false); if ((!_copy && (_savedFromViewportCells != null)) && _savedFromViewportCells.IsValueSaved()) { CopyMoveHelper.RaiseValueChanged(sheetView, num9, num10, num13, num14, _savedFromViewportCells.GetValues()); } if ((_savedToViewportCells != null) && _savedToViewportCells.IsValueSaved()) { CopyMoveHelper.RaiseValueChanged(sheetView, num11, num12, num13, num14, _savedToViewportCells.GetValues()); } } } finally { base.ResumeInvalidate(sender); } if (sheetView != null) { sheetView.RefreshRange(-1, -1, -1, -1, SheetArea.Cells | SheetArea.ColumnHeader | SheetArea.RowHeader); sheetView.RefreshFloatingObjects(); } } } }
/// <summary> /// Undoes the action of the saved information. /// </summary> /// <param name="parameter">The parameter to undo the action on. </param> /// <returns> /// <c>true</c> if the undo action succeeds; otherwise, <c>false</c>. /// </returns> public bool Undo(object parameter) { if (!Excel.IsValidRange(_dragDropExtent.FromRow, _dragDropExtent.FromColumn, _dragDropExtent.RowCount, _dragDropExtent.ColumnCount, _sheet.RowCount, _sheet.ColumnCount)) { return(false); } if (!_insert && !Excel.IsValidRange(_dragDropExtent.ToRow, _dragDropExtent.ToColumn, _dragDropExtent.RowCount, _dragDropExtent.ColumnCount, _sheet.RowCount, _sheet.ColumnCount)) { return(false); } bool flag = false; Excel sheetView = parameter as Excel; if (_insert) { if ((_dragDropExtent.FromColumn < 0) || (_dragDropExtent.FromRow < 0)) { if (_dragDropExtent.FromColumn >= 0) { int fromColumn = _dragDropExtent.FromColumn; int columnCount = _dragDropExtent.ColumnCount; base.SuspendInvalidate(parameter); try { if (_copy) { _sheet.RemoveColumns(_dragDropExtent.ToColumn, columnCount); } else { int toColumn = _dragDropExtent.ToColumn; int column = _dragDropExtent.FromColumn; if (_dragDropExtent.FromColumn < _dragDropExtent.ToColumn) { toColumn = _dragDropExtent.ToColumn - columnCount; } else { column = _dragDropExtent.FromColumn + columnCount; } _sheet.AddColumns(column, columnCount); _sheet.CopyTo(-1, (column <= toColumn) ? (toColumn + columnCount) : toColumn, -1, column, -1, columnCount, _option); _sheet.RemoveColumns((column <= toColumn) ? (toColumn + columnCount) : toColumn, columnCount); if (toColumn < column) { fromColumn = column - columnCount; } } } finally { base.ResumeInvalidate(parameter); } if (sheetView != null) { CellRange[] oldSelection = Enumerable.ToArray <CellRange>((IEnumerable <CellRange>)sheetView.ActiveSheet.Selections); sheetView.SetSelection(-1, fromColumn, -1, columnCount); if (sheetView.RaiseSelectionChanging(oldSelection, Enumerable.ToArray <CellRange>((IEnumerable <CellRange>)sheetView.ActiveSheet.Selections))) { sheetView.RaiseSelectionChanged(); } sheetView.RefreshRange(-1, -1, -1, -1, SheetArea.Cells | SheetArea.ColumnHeader | SheetArea.RowHeader); sheetView.RefreshFloatingObjects(); } flag = true; } else if (_dragDropExtent.FromRow >= 0) { int rowCount = _dragDropExtent.RowCount; int fromRow = _dragDropExtent.FromRow; base.SuspendInvalidate(parameter); try { if (_copy) { _sheet.RemoveRows(_dragDropExtent.ToRow, rowCount); } else { int toRow = _dragDropExtent.ToRow; int row = _dragDropExtent.FromRow; if (_dragDropExtent.FromRow < _dragDropExtent.ToRow) { toRow = _dragDropExtent.ToRow - rowCount; } else { row = _dragDropExtent.FromRow + rowCount; } _sheet.AddRows(row, rowCount); if (_savedFromViewportCells != null) { CopyMoveHelper.UndoCellsInfo(_sheet, _savedFromViewportCells, row, 0, SheetArea.Cells); flag = true; } if (_savedFromRowHeaderCells != null) { CopyMoveHelper.UndoCellsInfo(_sheet, _savedFromRowHeaderCells, row, 0, SheetArea.CornerHeader | SheetArea.RowHeader); flag = true; } if (_savedFromRows != null) { CopyMoveHelper.UndoRowsInfo(_sheet, _savedFromRows, row); flag = true; } if (!flag) { _sheet.MoveTo((row <= toRow) ? (toRow + rowCount) : toRow, -1, row, -1, rowCount, -1, _option); } _sheet.RemoveRows((row <= toRow) ? (toRow + rowCount) : toRow, rowCount); if (toRow < row) { fromRow = row - rowCount; } } } finally { base.ResumeInvalidate(parameter); } if (sheetView != null) { CellRange[] rangeArray2 = Enumerable.ToArray <CellRange>((IEnumerable <CellRange>)sheetView.ActiveSheet.Selections); sheetView.SetSelection(fromRow, -1, rowCount, -1); if (sheetView.RaiseSelectionChanging(rangeArray2, Enumerable.ToArray <CellRange>((IEnumerable <CellRange>)sheetView.ActiveSheet.Selections))) { sheetView.RaiseSelectionChanged(); } sheetView.RefreshAll(); sheetView.UpdateLayout(); sheetView.RefreshFloatingObjects(); } flag = true; } } } else { int num9 = (_dragDropExtent.FromRow < 0) ? 0 : _dragDropExtent.FromRow; int num10 = (_dragDropExtent.FromColumn < 0) ? 0 : _dragDropExtent.FromColumn; int num11 = (_dragDropExtent.ToRow < 0) ? 0 : _dragDropExtent.ToRow; int num12 = (_dragDropExtent.ToColumn < 0) ? 0 : _dragDropExtent.ToColumn; int num13 = (_dragDropExtent.FromRow < 0) ? _sheet.RowCount : _dragDropExtent.RowCount; int num14 = (_dragDropExtent.FromColumn < 0) ? _sheet.ColumnCount : _dragDropExtent.ColumnCount; List <CellData> oldValues = null; List <CellData> list2 = null; if ((!_copy && (_savedFromViewportCells != null)) && _savedFromViewportCells.IsValueSaved()) { list2 = CopyMoveHelper.GetValues(_sheet, num9, num10, num13, num14); } if ((_savedToViewportCells != null) && _savedToViewportCells.IsValueSaved()) { oldValues = CopyMoveHelper.GetValues(_sheet, num11, num12, num13, num14); } base.SuspendInvalidate(parameter); try { if (_savedToColumnHeaderCells != null) { CopyMoveHelper.UndoCellsInfo(_sheet, _savedToColumnHeaderCells, 0, num12, SheetArea.ColumnHeader); flag = true; } if (_savedToColumns != null) { CopyMoveHelper.UndoColumnsInfo(_sheet, _savedToColumns, num12); flag = true; } if (_savedToViewportCells != null) { CopyMoveHelper.UndoCellsInfo(_sheet, _savedToViewportCells, num11, num12, SheetArea.Cells); flag = true; } if (_savedToRowHeaderCells != null) { CopyMoveHelper.UndoCellsInfo(_sheet, _savedToRowHeaderCells, num11, 0, SheetArea.CornerHeader | SheetArea.RowHeader); flag = true; } if (_savedToRows != null) { CopyMoveHelper.UndoRowsInfo(_sheet, _savedToRows, num11); flag = true; } if (_savedToFloatingObjects != null) { CopyMoveHelper.UndoFloatingObjectsInfo(_sheet, _savedToFloatingObjects); sheetView.RefreshFloatingObjects(); flag = true; } if (_savedFromColumnHeaderCells != null) { CopyMoveHelper.UndoCellsInfo(_sheet, _savedFromColumnHeaderCells, 0, num10, SheetArea.ColumnHeader); flag = true; } if (_savedFromColumns != null) { CopyMoveHelper.UndoColumnsInfo(_sheet, _savedFromColumns, num10); flag = true; } if (_savedFromViewportCells != null) { CopyMoveHelper.UndoCellsInfo(_sheet, _savedFromViewportCells, num9, num10, SheetArea.Cells); flag = true; } if (_savedFromRowHeaderCells != null) { CopyMoveHelper.UndoCellsInfo(_sheet, _savedFromRowHeaderCells, num9, 0, SheetArea.CornerHeader | SheetArea.RowHeader); flag = true; } if (_savedFromRows != null) { CopyMoveHelper.UndoRowsInfo(_sheet, _savedFromRows, num9); flag = true; } if (_savedFromFloatingObjects != null) { CopyMoveHelper.UndoFloatingObjectsInfo(_sheet, _savedFromFloatingObjects); sheetView.RefreshFloatingObjects(); flag = true; } } finally { base.ResumeInvalidate(parameter); } if (flag && (sheetView != null)) { CellRange[] rangeArray3 = Enumerable.ToArray <CellRange>((IEnumerable <CellRange>)sheetView.ActiveSheet.Selections); sheetView.SetSelection(_dragDropExtent.FromRow, _dragDropExtent.FromColumn, _dragDropExtent.RowCount, _dragDropExtent.ColumnCount); if (sheetView.RaiseSelectionChanging(rangeArray3, Enumerable.ToArray <CellRange>((IEnumerable <CellRange>)sheetView.ActiveSheet.Selections))) { sheetView.RaiseSelectionChanged(); } if (oldValues != null) { CopyMoveHelper.RaiseValueChanged(sheetView, num11, num12, num13, num14, oldValues); } if (list2 != null) { CopyMoveHelper.RaiseValueChanged(sheetView, num9, num10, num13, num14, list2); } sheetView.RefreshRange(-1, -1, -1, -1, SheetArea.Cells | SheetArea.ColumnHeader | SheetArea.RowHeader); sheetView.RefreshFloatingObjects(); } } if (flag && (sheetView != null)) { if ((_savedAcitveRowViewportIndex != -2) && (_savedAcitveColumnViewportIndex != -2)) { sheetView.SetActiveRowViewportIndex(_savedAcitveRowViewportIndex); sheetView.SetActiveColumnViewportIndex(_savedAcitveColumnViewportIndex); } if ((_savedActiveRow != -1) && (_savedActiveColumn != -1)) { CellRange range = sheetView.ActiveSheet.Selections[0]; if (range.Contains(_savedActiveRow, _savedActiveColumn)) { sheetView.SetActiveCell(_savedActiveRow, _savedActiveColumn, false); } else { sheetView.SetActiveCell(Math.Max(0, range.Row), Math.Max(0, range.Column), false); } } if (((_savedAcitveRowViewportIndex != -2) && (_savedAcitveColumnViewportIndex != -2)) && ((_savedActiveRow != -1) && (_savedActiveColumn != -1))) { sheetView.ShowCell(_savedAcitveRowViewportIndex, _savedAcitveColumnViewportIndex, _savedActiveRow, _savedActiveColumn, VerticalPosition.Nearest, HorizontalPosition.Nearest); } } return(flag); }