public static void ExecuteRemoveAt <T>(this IOperationController controller, IList <T> list, int index) { if (list is IList iList) { var operation = iList.ToRemoveAtOperation(index); controller.Execute(operation); } else { var target = list[index]; var operation = list.ToRemoveOperation(target); controller.Execute(operation); } }
public static IOperation Execute(this IOperation _this, IOperationController controller) { if (_this is IMergeableOperation mergeableOperation) { _this = mergeableOperation.Merge(controller); } return(controller.Execute(_this)); }
public static void ExecuteSetProperty <T, TProperty>(this IOperationController controller, T owner, string propertyName, TProperty value) { var operation = owner .GenerateSetPropertyOperation(propertyName, value) .Merge(controller); controller.Execute(operation); }
public static IOperation ExecuteAndCombineTop(this IOperation _this, IOperationController controller) { if (controller.Operations.Any()) { var prev = controller.Pop(); _this.RollForward(); var newOperation = prev.CombineOperations(_this).ToCompositeOperation(); newOperation.Messaage = _this.Messaage; return(controller.Push(newOperation)); } return(controller.Execute(_this)); }
public static void ExecuteRemoveItems <T>(this IOperationController controller, IList <T> list, IEnumerable <T> value) { var operation = list.ToRemoveRangeOperation(value); controller.Execute(operation); }
public static void ExecuteRemove <T>(this IOperationController controller, IList <T> list, T value) { var operation = list.ToRemoveOperation(value); controller.Execute(operation); }
public static void ExecuteInsert <T>(this IOperationController controller, IList <T> list, T value, int index) { var operation = new InsertOperation <T>(@list, value, index); controller.Execute(operation); }
public static ICommand ToCommand(this IOperation operation, IOperationController controller) { return(new DelegateCommand(() => controller.Execute(operation))); }
public static void Execute(this IOperationController controller, Action execute, Action rollback) { controller.Execute(new DelegateOperation(execute, rollback)); }