DeleteHelper.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / DeleteHelper.cs / 1305376 / DeleteHelper.cs

                            //---------------------------------------------------------------- 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//---------------------------------------------------------------

namespace System.Activities.Presentation 
{
    using System.Activities.Presentation.Model; 
    using System.Activities.Presentation.View; 
    using System.Collections.Generic;
    using System.Linq; 

    static class DeleteHelper
    {
        public static bool CanDelete(EditingContext context) 
        {
            if (context == null) 
            { 
                throw FxTrace.Exception.AsError(new ArgumentNullException("context"));
            } 
            bool canExecute = false;
            Selection selection = context.Items.GetValue();
            if (null != selection && selection.SelectionCount > 0)
            { 
                DesignerView designerView = context.Services.GetService();
                canExecute = selection.SelectedObjects.All( 
                    p => (null != p.View && p.View is WorkflowViewElement && !p.View.Equals(designerView.RootDesigner))); 
            }
            return canExecute; 
        }

        public static void Delete(EditingContext context)
        { 
            if (context == null)
            { 
                throw FxTrace.Exception.AsError(new ArgumentNullException("context")); 
            }
            Selection selection = context.Items.GetValue(); 
            if (null != selection)
            {
                bool selectRoot = false;
 
                DesignerView designerView = context.Services.GetService();
                var toDelete = selection.SelectedObjects.Where(p => null != p.View && p.View is WorkflowViewElement && !p.View.Equals(designerView.RootDesigner)); 
                if (toDelete.Count() > 0) 
                {
                    using (EditingScope es = (EditingScope)toDelete.FirstOrDefault().BeginEdit(SR.DeleteOperationEditingScopeDescription)) 
                    {
                        Dictionary> containerToModelItemsDict = new Dictionary>();
                        List modelItemsPerContainer;
                        foreach (var item in toDelete) 
                        {
                            ICompositeView container = (ICompositeView)DragDropHelper.GetCompositeView((WorkflowViewElement)item.View); 
                            if (null != item.Parent && typeof(ActivityAction).IsAssignableFrom(item.Parent.ItemType)) 
                            {
                                item.Parent.Properties["Handler"].ClearValue(); 
                                selectRoot = true;
                            }
                            else if (null != container)
                            { 
                                if (!containerToModelItemsDict.TryGetValue(container, out modelItemsPerContainer))
                                { 
                                    modelItemsPerContainer = new List(); 
                                    containerToModelItemsDict.Add(container, modelItemsPerContainer);
                                } 
                                modelItemsPerContainer.Add(item);
                            }
                        }
                        foreach (ICompositeView container in containerToModelItemsDict.Keys) 
                        {
                            container.OnItemsDelete(containerToModelItemsDict[container]); 
                            selectRoot = true; 
                        }
 
                        if (selectRoot)
                        {
                            DesignerView view = context.Services.GetService();
                            if (null != view) 
                            {
                                WorkflowViewElement rootView = view.RootDesigner as WorkflowViewElement; 
                                if (rootView != null) 
                                {
                                    Selection.SelectOnly(context, rootView.ModelItem); 
                                }
                            }
                        }
                        es.Complete(); 
                    }
                } 
            } 
        }
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//---------------------------------------------------------------- 
// Copyright (c) Microsoft Corporation.  All rights reserved.
//---------------------------------------------------------------

namespace System.Activities.Presentation 
{
    using System.Activities.Presentation.Model; 
    using System.Activities.Presentation.View; 
    using System.Collections.Generic;
    using System.Linq; 

    static class DeleteHelper
    {
        public static bool CanDelete(EditingContext context) 
        {
            if (context == null) 
            { 
                throw FxTrace.Exception.AsError(new ArgumentNullException("context"));
            } 
            bool canExecute = false;
            Selection selection = context.Items.GetValue();
            if (null != selection && selection.SelectionCount > 0)
            { 
                DesignerView designerView = context.Services.GetService();
                canExecute = selection.SelectedObjects.All( 
                    p => (null != p.View && p.View is WorkflowViewElement && !p.View.Equals(designerView.RootDesigner))); 
            }
            return canExecute; 
        }

        public static void Delete(EditingContext context)
        { 
            if (context == null)
            { 
                throw FxTrace.Exception.AsError(new ArgumentNullException("context")); 
            }
            Selection selection = context.Items.GetValue(); 
            if (null != selection)
            {
                bool selectRoot = false;
 
                DesignerView designerView = context.Services.GetService();
                var toDelete = selection.SelectedObjects.Where(p => null != p.View && p.View is WorkflowViewElement && !p.View.Equals(designerView.RootDesigner)); 
                if (toDelete.Count() > 0) 
                {
                    using (EditingScope es = (EditingScope)toDelete.FirstOrDefault().BeginEdit(SR.DeleteOperationEditingScopeDescription)) 
                    {
                        Dictionary> containerToModelItemsDict = new Dictionary>();
                        List modelItemsPerContainer;
                        foreach (var item in toDelete) 
                        {
                            ICompositeView container = (ICompositeView)DragDropHelper.GetCompositeView((WorkflowViewElement)item.View); 
                            if (null != item.Parent && typeof(ActivityAction).IsAssignableFrom(item.Parent.ItemType)) 
                            {
                                item.Parent.Properties["Handler"].ClearValue(); 
                                selectRoot = true;
                            }
                            else if (null != container)
                            { 
                                if (!containerToModelItemsDict.TryGetValue(container, out modelItemsPerContainer))
                                { 
                                    modelItemsPerContainer = new List(); 
                                    containerToModelItemsDict.Add(container, modelItemsPerContainer);
                                } 
                                modelItemsPerContainer.Add(item);
                            }
                        }
                        foreach (ICompositeView container in containerToModelItemsDict.Keys) 
                        {
                            container.OnItemsDelete(containerToModelItemsDict[container]); 
                            selectRoot = true; 
                        }
 
                        if (selectRoot)
                        {
                            DesignerView view = context.Services.GetService();
                            if (null != view) 
                            {
                                WorkflowViewElement rootView = view.RootDesigner as WorkflowViewElement; 
                                if (rootView != null) 
                                {
                                    Selection.SelectOnly(context, rootView.ModelItem); 
                                }
                            }
                        }
                        es.Complete(); 
                    }
                } 
            } 
        }
    } 
}

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK