Ejemplo n.º 1
0
        private void OverflowIfNecessary(HistoryEventArgs <T> eventArgs)
        {
            if (!MaxSize.HasValue || CurrentIndex < MaxSize.Value)
            {
                return;
            }

            RemoveOldestItem();
            HistoryOverflowed?.Invoke(this, eventArgs);
        }
Ejemplo n.º 2
0
        public void RememberNew(T item)
        {
            var eventArgs = _history.IsEmpty()
                ? HistoryEventArgs <T> .OnlyCurrentItem(
                currentItem : item)
                : HistoryEventArgs <T> .BothItems(
                currentItem : item,
                previousItem : CurrentItem);

            AddNewItem(item);
            NewItemRemembered?.Invoke(this, eventArgs);

            OverflowIfNecessary(eventArgs);
        }
Ejemplo n.º 3
0
        public void Repeat()
        {
            if (!CanRepeat)
            {
                return;
            }

            var eventArgs = HistoryEventArgs <T> .BothItems(
                currentItem : NextItem,
                previousItem : CurrentItem);

            CurrentIndex++;
            HistoryRepeated?.Invoke(this, eventArgs);
        }
Ejemplo n.º 4
0
        public void Undo()
        {
            if (!CanUndo)
            {
                return;
            }

            var eventArgs = HistoryEventArgs <T> .BothItems(
                currentItem : PreviousItem,
                previousItem : CurrentItem);

            CurrentIndex--;
            HistoryUndid?.Invoke(this, eventArgs);
        }
Ejemplo n.º 5
0
        public void ForgetCurrent()
        {
            if (_history.IsEmpty())
            {
                return;
            }

            var eventArgs = CurrentIndex == 0
                ? HistoryEventArgs <T> .OnlyPreviousItem(
                previousItem : CurrentItem)
                : HistoryEventArgs <T> .BothItems(
                currentItem : PreviousItem,
                previousItem : CurrentItem);

            RemoveCurrentItem();
            CurrentItemForgotten?.Invoke(this, eventArgs);
        }