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))); }
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); }
/// <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); }
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)); }
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); }
/// <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); }