示例#1
0
 private void ActionItemsDiscarded(object sender, DiscardedActionItemsEventArgs<IActionItem> e)
 {
     var actionsToRemove = e.ActionItems.Select(x => actionItems.FirstOrDefault(y => y.ActionItem.Identifier == x.Identifier)).ToList();
     Dispatcher.Invoke(() => actionsToRemove.ForEach(x => actionItems.Remove(x)));
 }
示例#2
0
 protected override void OnActionItemsDiscarded(DiscardedActionItemsEventArgs <IActionItem> e)
 {
     DiscardActionItemsRecursively(e.ActionItems, e.Type);
     base.OnActionItemsDiscarded(e);
 }
 protected override void OnActionItemsDiscarded(DiscardedActionItemsEventArgs<IActionItem> e)
 {
     DiscardActionItemsRecursively(e.ActionItems, e.Type);
     base.OnActionItemsDiscarded(e);
 }
示例#4
0
 /// <summary>
 /// Invoked whenever action items are discarded from the stack.
 /// </summary>
 /// <param name="e">The arguments that will be passed to the <see cref="ActionItemsDiscarded"/> event raised by this method.</param>
 protected virtual void OnActionItemsDiscarded(DiscardedActionItemsEventArgs<IActionItem> e)
 {
     var handler = ActionItemsDiscarded;
     if (handler != null)
         handler(this, e);
 }
示例#5
0
        private void ActionItemsDiscarded(object sender, DiscardedActionItemsEventArgs <IActionItem> e)
        {
            var actionsToRemove = e.ActionItems.Select(x => actionItems.FirstOrDefault(y => y.ActionItem.Identifier == x.Identifier)).ToList();

            actionsToRemove.ForEach(x => actionItems.Remove(x));
        }
示例#6
0
        private void ActionItemsDiscarded(object sender, DiscardedActionItemsEventArgs<IActionItem> e)
        {
            var dirtiables = new HashSet<IDirtiable>();
            switch (e.Type)
            {
                case ActionItemDiscardType.Swallowed:
                    foreach (var actionItem in e.ActionItems.SelectMany(GetDirtiableItems))
                    {
                        foreach (var dirtiable in actionItem.Dirtiables)
                        {
                            List<DirtiableActionItem> dirtiableActionItems;
                            if (!dirtiableActionMap.TryGetValue(dirtiable, out dirtiableActionItems))
                            {
                                dirtiableActionItems = new List<DirtiableActionItem>();
                                dirtiableActionMap.Add(dirtiable, dirtiableActionItems);
                            }
                            dirtiableActionItems.Remove(actionItem);

                            if (!swallowedActionsMap.TryGetValue(dirtiable, out dirtiableActionItems))
                            {
                                dirtiableActionItems = new List<DirtiableActionItem>();
                                swallowedActionsMap.Add(dirtiable, dirtiableActionItems);
                            }
                            dirtiableActionItems.Add(actionItem);
                        }
                    }
                    break;
                case ActionItemDiscardType.Disbranched:
                    foreach (var actionItem in e.ActionItems.SelectMany(GetDirtiableItems))
                    {
                        foreach (var dirtiable in actionItem.Dirtiables)
                        {
                            List<DirtiableActionItem> dirtiableActionItems;
                            if (!dirtiableActionMap.TryGetValue(dirtiable, out dirtiableActionItems))
                            {
                                dirtiableActionItems = new List<DirtiableActionItem>();
                                dirtiableActionMap.Add(dirtiable, dirtiableActionItems);
                            }
                            dirtiableActionItems.Remove(actionItem);
                            dirtiables.Add(dirtiable);
                        }
                    }
                    break;
                case ActionItemDiscardType.UndoRedoInProgress:
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }
            UpdateDirtiables(dirtiables);
        }
示例#7
0
 /// <summary>
 /// Invoked whenever action items are discarded from the stack.
 /// </summary>
 /// <param name="e">The arguments that will be passed to the <see cref="ActionItemsDiscarded"/> event raised by this method.</param>
 protected virtual void OnActionItemsDiscarded(DiscardedActionItemsEventArgs<IActionItem> e)
 {
     ActionItemsDiscarded?.Invoke(this, e);
 }