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);
     }
 }
Example #2
0
 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);
        }
Example #8
0
 public static ICommand ToCommand(this IOperation operation, IOperationController controller)
 {
     return(new DelegateCommand(() => controller.Execute(operation)));
 }
Example #9
0
 public static void Execute(this IOperationController controller, Action execute, Action rollback)
 {
     controller.Execute(new DelegateOperation(execute, rollback));
 }