private void DiscardActionItemsRecursively(IEnumerable<IActionItem> actionItems, ActionItemDiscardType discardType)
 {
     foreach (var actionItem in actionItems)
     {
         var viewModelActionItem = actionItem as ViewModelActionItem;
         if (viewModelActionItem != null)
         {
             if (discardType == ActionItemDiscardType.Swallowed)
             {
                 discardedActionItems.Add(viewModelActionItem);
             }
             else if (discardType != ActionItemDiscardType.UndoRedoInProgress)
             {
                 viewModelActionItem.Dirtiables.ForEach(x => x.DiscardActionItem(viewModelActionItem));
             }
         }
         var aggregateActionItem = actionItem as IAggregateActionItem;
         if (aggregateActionItem != null)
         {
             DiscardActionItemsRecursively(aggregateActionItem.ActionItems, discardType);
         }
     }
 }
Example #2
0
 public DiscardedActionItemsEventArgs(ActionItemDiscardType type, T[] actionItems)
     : base(actionItems)
 {
     Type = type;
 }
Example #3
0
        private void DiscardActionItemsRecursively(IEnumerable <IActionItem> actionItems, ActionItemDiscardType discardType)
        {
            var dirtiables = new HashSet <IDirtiableViewModel>();

            foreach (var viewModelActionItem in EnumerateViewModelActionItems(actionItems))
            {
                if (discardType == ActionItemDiscardType.Swallowed)
                {
                    discardedActionItems.Add(viewModelActionItem);
                }
                else if (discardType != ActionItemDiscardType.UndoRedoInProgress)
                {
                    var viewModelActionItemCopy = viewModelActionItem;
                    viewModelActionItem.Dirtiables.ForEach(dirtiable =>
                    {
                        dirtiable.DiscardActionItem(viewModelActionItemCopy);
                        dirtiables.Add(dirtiable);
                    });
                }
            }

            foreach (var dirtiable in dirtiables)
            {
                dirtiable.NotifyActionStackChange(ActionStackChange.Discarded);
            }
        }
        private void DiscardActionItemsRecursively(IEnumerable<IActionItem> actionItems, ActionItemDiscardType discardType)
        {
            var dirtiables = new HashSet<IDirtiableViewModel>();
            foreach (var viewModelActionItem in EnumerateViewModelActionItems(actionItems))
            {
                if (discardType == ActionItemDiscardType.Swallowed)
                {
                    discardedActionItems.Add(viewModelActionItem);
                }
                else if (discardType != ActionItemDiscardType.UndoRedoInProgress)
                {
                    var viewModelActionItemCopy = viewModelActionItem;
                    viewModelActionItem.Dirtiables.ForEach(dirtiable =>
                    {
                        dirtiable.DiscardActionItem(viewModelActionItemCopy);
                        dirtiables.Add(dirtiable);
                    });
                }
            }

            foreach (var dirtiable in dirtiables)
            {
                dirtiable.NotifyActionStackChange(ActionStackChange.Discarded);
            }
        }
 private void DiscardActionItemsRecursively(IEnumerable <IActionItem> actionItems, ActionItemDiscardType discardType)
 {
     foreach (var actionItem in actionItems)
     {
         var viewModelActionItem = actionItem as ViewModelActionItem;
         if (viewModelActionItem != null)
         {
             if (discardType == ActionItemDiscardType.Swallowed)
             {
                 discardedActionItems.Add(viewModelActionItem);
             }
             else if (discardType != ActionItemDiscardType.UndoRedoInProgress)
             {
                 viewModelActionItem.Dirtiables.ForEach(x => x.DiscardActionItem(viewModelActionItem));
             }
         }
         var aggregateActionItem = actionItem as IAggregateActionItem;
         if (aggregateActionItem != null)
         {
             DiscardActionItemsRecursively(aggregateActionItem.ActionItems, discardType);
         }
     }
 }