Exemplo n.º 1
0
        /// <summary>
        /// Adds a new undo operation to the stack.
        /// </summary>
        /// <param name="operation">The operation.</param>
        /// <param name="noInsertIfExecutingOperation">Do not insert record if currently running undo/redo.</param>
        /// <returns><c>true</c> if undo operation was added to stack; otherwise <c>false</c>.</returns>
        /// <exception cref="ArgumentNullException">The <paramref name="operation"/> is <c>null</c>.</exception>
        public bool Add(IMementoSupport operation, bool noInsertIfExecutingOperation = true)
        {
            Argument.IsNotNull("operation", operation);

            if (!IsEnabled)
            {
                return(false);
            }

            if (noInsertIfExecutingOperation && _isUndoingOperation)
            {
                return(false);
            }

            lock (_lock)
            {
                if (_currentBatch != null)
                {
                    _currentBatch.AddAction(operation);
                }
                else
                {
                    var batch = new Batch();
                    batch.AddAction(operation);

                    Add(batch);
                }
            }

            return(true);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Adds a new undo operation to the collection.
        /// </summary>
        /// <param name="operation">The operation to add.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="operation"/> is <c>null</c>.</exception>
        public void Add(IMementoSupport operation)
        {
            Argument.IsNotNull("operation", operation);

            _undoStack.Add(operation);

            CanRedo = _undoStack.All(op => op.CanRedo);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Adds the action to the current batch.
        /// </summary>
        /// <param name="action">The action.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="action" /> is <c>null</c>.</exception>
        public void AddAction(IMementoSupport action)
        {
            Argument.IsNotNull("action", action);

            _actions.Add(action);

            if (IsSingleActionBatch)
            {
                _canRedo = action.CanRedo;
            }
            else
            {
                _canRedo = (_canRedo && action.CanRedo);
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Adds the action to the current batch.
        /// </summary>
        /// <param name="action">The action.</param>
        /// <exception cref="ArgumentNullException">The <paramref name="action" /> is <c>null</c>.</exception>
        public void AddAction(IMementoSupport action)
        {
            Argument.IsNotNull("action", action);

            _actions.Add(action);

            if (IsSingleActionBatch)
            {
                _canRedo = action.CanRedo;
            }
            else
            {
                _canRedo = (_canRedo && action.CanRedo);
            }
        }
Exemplo n.º 5
0
        /// <summary>
        /// Adds a new undo operation to the stack.
        /// </summary>
        /// <param name="operation">The operation.</param>
        /// <param name="noInsertIfExecutingOperation">Do not insert record if currently running undo/redo.</param>
        /// <returns><c>true</c> if undo operation was added to stack; otherwise <c>false</c>.</returns>
        /// <exception cref="ArgumentNullException">The <paramref name="operation"/> is <c>null</c>.</exception>
        public bool Add(IMementoSupport operation, bool noInsertIfExecutingOperation = true)
        {
            Argument.IsNotNull("operation", operation);

            if (!IsEnabled)
            {
                return false;
            }

            if (noInsertIfExecutingOperation && _isUndoingOperation)
            {
                return false;
            }

            lock (_lock)
            {
                if (_currentBatch != null)
                {
                    _currentBatch.AddAction(operation);
                }
                else
                {
                    var batch = new Batch();
                    batch.AddAction(operation);

                    Add(batch);
                }
            }

            return true;
        }
Exemplo n.º 6
0
 public MementoEventArgs(MementoAction mementoAction, IMementoSupport target)
 {
     MementoAction = mementoAction;
     Target        = target;
 }