using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; using System.Windows.Forms; using HeuristicLab.DataImporter.Data.CommandBase; using HeuristicLab.DataImporter.Data.Model; using HeuristicLab.Persistence.Default.CompositeSerializers.Storable; namespace HeuristicLab.DataImporter.Data.Command { [StorableClass] public class ChangeValueCommand : ColumnCommandBase { [Storable] private int position; [Storable] private IComparable newValue; private IComparable oldValue; private ICollection oldSortedColumnIndices; private IEnumerable oldSortOrder; private ChangeValueCommand() : base(null, string.Empty, -1) { } public ChangeValueCommand(DataSet dataSet, string columnGroupName, int columnIndex, int position, IComparable newValue) : base(dataSet, columnGroupName, columnIndex) { this.position = position; this.newValue = newValue; } public override void Execute() { base.Execute(); this.oldValue = Column.GetValue(position); Column.ChangeValueOrNull(position, newValue); oldSortedColumnIndices = new List(ColumnGroup.SortedColumnIndexes); oldSortOrder = ColumnGroup.SortOrdersForColumns.ToList(); ColumnGroup.ResetSorting(); Column.FireChanged(); } public override void UndoExecute() { base.UndoExecute(); Column.ChangeValue(position, oldValue); ColumnGroup.SortOrdersForColumns = oldSortOrder; ColumnGroup.SortedColumnIndexes = oldSortedColumnIndices; oldSortedColumnIndices = null; oldSortOrder = null; Column.FireChanged(); this.ColumnGroup = null; } public override string Description { get { return "Column value changed"; } } } }