SecondaryViewProvider.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 / WF / Common / AuthoringOM / Design / SecondaryViewProvider.cs / 1305376 / SecondaryViewProvider.cs

                            #pragma warning disable 1634, 1691 
namespace System.Workflow.ComponentModel.Design
{
 	using System;
	using System.IO; 
	using System.Drawing;
	using System.CodeDom; 
 	using System.Diagnostics; 
	using System.Collections;
 	using System.Collections.Generic; 
 	using System.Windows.Forms;
	using System.ComponentModel;
 	using System.Globalization;
	using System.Drawing.Design; 
	using System.Drawing.Imaging;
	using System.Drawing.Drawing2D; 
 	using System.Windows.Forms.Design; 
	using System.ComponentModel.Design;
 	using System.Collections.Specialized; 
 	using System.ComponentModel.Design.Serialization;
	using System.Workflow.ComponentModel.Compiler;
    using System.Workflow.ComponentModel.Serialization;
 	using System.Collections.ObjectModel; 
	using System.Reflection;
    using System.Workflow.ComponentModel.Design; 
    using System.Runtime.Serialization.Formatters.Binary; 

 

	#region Class SecondaryViewProvider
	internal static class SecondaryViewProvider
 	{ 
        private const string EventHandlersRef = "System.Workflow.Activities.EventHandlersActivity, " + AssemblyRef.ActivitiesAssemblyRef;
        private const string EventHandlingScopeRef = "System.Workflow.Activities.EventHandlingScopeActivity, " + AssemblyRef.ActivitiesAssemblyRef; 
 
        internal static ReadOnlyCollection GetViews(StructuredCompositeActivityDesigner designer)
		{ 
 			Debug.Assert(designer.Activity != null);
 			if (designer.Activity == null)
				throw new ArgumentException("Component can not be null!");
 
 			bool locked = !designer.IsEditable;
 
			//Get all the possible view types 
			List viewTypes = new List();
 
            string displayName = ActivityToolboxItem.GetToolboxDisplayName(designer.Activity.GetType());
            viewTypes.Add(new object[] { designer.Activity.GetType(), DR.GetString(DR.ViewActivity, displayName) });

			//Only show the views in workflow designer or for nested activities 
 			if (designer.Activity.Site != null)
			{ 
 				WorkflowDesignerLoader loader = designer.Activity.Site.GetService(typeof(WorkflowDesignerLoader)) as WorkflowDesignerLoader; 
 				Type activityType = designer.Activity.GetType();
 
                if (loader == null ||
                    (typeof(CompositeActivity).IsAssignableFrom(activityType) &&
                    (!locked || FindActivity(designer, typeof(CancellationHandlerActivity)) != null)))
                    viewTypes.Add(new object[] { typeof(CancellationHandlerActivity), DR.GetString(DR.ViewCancelHandler) }); 

                if (loader == null || 
                    (typeof(CompositeActivity).IsAssignableFrom(activityType) && 
                    (!locked || FindActivity(designer, typeof(FaultHandlersActivity)) != null)))
                    viewTypes.Add(new object[] { typeof(FaultHandlersActivity), DR.GetString(DR.ViewExceptions) }); 

                if (loader == null ||
                    (designer.Activity is ICompensatableActivity && typeof(CompositeActivity).IsAssignableFrom(activityType) &&
                    (!locked || FindActivity(designer, typeof(CompensationHandlerActivity)) != null))) 
                    viewTypes.Add(new object[] { typeof(CompensationHandlerActivity), DR.GetString(DR.ViewCompensation) });
 
                if ( loader == null || 
		            (Type.GetType(EventHandlingScopeRef).IsAssignableFrom(activityType) &&
                    (!locked || FindActivity(designer, Type.GetType(EventHandlersRef)) != null))) 
                    viewTypes.Add(new object[] { Type.GetType(EventHandlersRef), DR.GetString(DR.ViewEvents) });
 			}

			//Now go through the view types and create views 
			List views = new List();
			for (int i = 0; i < viewTypes.Count; i++) 
 			{ 
				Type viewType = viewTypes[i][0] as Type;
 				DesignerView view = new SecondaryView(designer, i + 1, viewTypes[i][1] as string, viewType); 
 				views.Add(view);
			}

 			return views.AsReadOnly(); 
		}
 
        internal static IList GetActivityTypes(StructuredCompositeActivityDesigner designer) 
		{
			List activityTypes = new List(); 
 			ReadOnlyCollection views = designer.Views;
			for (int i = 1; i < views.Count; i++)
 			{
 				Type activityType = views[i].UserData[SecondaryView.UserDataKey_ActivityType] as Type; 
				activityTypes.Add(activityType);
 			} 
			return activityTypes.AsReadOnly(); 
		}
 
        internal static void OnViewRemoved(StructuredCompositeActivityDesigner designer, Type viewTypeRemoved)
		{
 			ReadOnlyCollection views = designer.Views;
			for (int i = 1; i < views.Count; i++) 
 			{
 				Type activityType = views[i].UserData[SecondaryView.UserDataKey_ActivityType] as Type; 
				if (viewTypeRemoved == activityType) 
 					views[i].UserData[SecondaryView.UserDataKey_Designer] = null;
			} 
		}

        internal static Activity FindActivity(StructuredCompositeActivityDesigner designer, Type activityType)
		{ 
 			Debug.Assert(activityType != null);
			CompositeActivity compositeActivity = designer.Activity as CompositeActivity; 
 			if (activityType == null || compositeActivity == null) 
 				return null;
 
			foreach (Activity activity in compositeActivity.Activities)
 			{
				if (activityType.IsAssignableFrom(activity.GetType()))
					return activity; 
			}
 
 			return null; 
		}
 	} 
 	#endregion

    #region Class SecondaryView
    internal sealed class SecondaryView : DesignerView 
    {
        internal static readonly Guid UserDataKey_ActivityType = new Guid("03C4103A-D6E9-46e9-B98E-149E145EC2C9"); 
        internal static readonly Guid UserDataKey_Designer = new Guid("2B72C7F7-DE4A-4e32-8EB4-9E1ED1C5E84E"); 

        private StructuredCompositeActivityDesigner parentDesigner; 

        internal SecondaryView(StructuredCompositeActivityDesigner parentDesigner, int id, string text, Type activityType)
            : base(id, text, ActivityToolboxItem.GetToolboxImage(activityType))
        { 
            this.parentDesigner = parentDesigner;
            UserData[UserDataKey_ActivityType] = activityType; 
            if (this.parentDesigner.Activity.GetType() == activityType) 
                UserData[UserDataKey_Designer] = this.parentDesigner;
        } 

        public override ActivityDesigner AssociatedDesigner
        {
            get 
            {
                ActivityDesigner mappedDesigner = UserData[UserDataKey_Designer] as ActivityDesigner; 
                if (mappedDesigner == null) 
                {
                    Type activityType = UserData[UserDataKey_ActivityType] as Type; 
                    if (activityType != null)
                    {
                        if (activityType != this.parentDesigner.Activity.GetType())
                        { 
                            Activity activity = SecondaryViewProvider.FindActivity(this.parentDesigner, activityType);
                            if (activity != null) 
                                mappedDesigner = ActivityDesigner.GetDesigner(activity); 
                        }
                        else 
                        {
                            mappedDesigner = this.parentDesigner;
                        }
 
                        UserData[UserDataKey_Designer] = mappedDesigner;
                    } 
                } 

                return mappedDesigner; 
            }
        }

        public override void OnActivate() 
        {
            if (AssociatedDesigner != null) 
                return; 

            Type activityType = UserData[UserDataKey_ActivityType] as Type; 
            Debug.Assert(activityType != null);

            CompositeActivity parentActivity = this.parentDesigner.Activity as CompositeActivity;
            if (activityType == null || parentActivity == null || !this.parentDesigner.IsEditable) 
                return;
 
            Activity activity = Activator.CreateInstance(activityType) as Activity; 
            try
            { 
                CompositeActivityDesigner.InsertActivities(this.parentDesigner, new HitTestInfo(this.parentDesigner, HitTestLocations.Designer), new List(new Activity[] { activity }).AsReadOnly(), SR.GetString(SR.AddingImplicitActivity));
            }
            catch (Exception e)
            { 
                if (e != CheckoutException.Canceled)
                { 
                    IUIService uiService = this.parentDesigner.Activity.Site.GetService(typeof(IUIService)) as IUIService; 
                    if (uiService != null)
                        uiService.ShowError(e.Message); 
                }
            }

            ActivityDesigner designer = ActivityDesigner.GetDesigner(activity); 
            UserData[UserDataKey_Designer] = designer;
        } 
    } 
    #endregion
} 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
#pragma warning disable 1634, 1691 
namespace System.Workflow.ComponentModel.Design
{
 	using System;
	using System.IO; 
	using System.Drawing;
	using System.CodeDom; 
 	using System.Diagnostics; 
	using System.Collections;
 	using System.Collections.Generic; 
 	using System.Windows.Forms;
	using System.ComponentModel;
 	using System.Globalization;
	using System.Drawing.Design; 
	using System.Drawing.Imaging;
	using System.Drawing.Drawing2D; 
 	using System.Windows.Forms.Design; 
	using System.ComponentModel.Design;
 	using System.Collections.Specialized; 
 	using System.ComponentModel.Design.Serialization;
	using System.Workflow.ComponentModel.Compiler;
    using System.Workflow.ComponentModel.Serialization;
 	using System.Collections.ObjectModel; 
	using System.Reflection;
    using System.Workflow.ComponentModel.Design; 
    using System.Runtime.Serialization.Formatters.Binary; 

 

	#region Class SecondaryViewProvider
	internal static class SecondaryViewProvider
 	{ 
        private const string EventHandlersRef = "System.Workflow.Activities.EventHandlersActivity, " + AssemblyRef.ActivitiesAssemblyRef;
        private const string EventHandlingScopeRef = "System.Workflow.Activities.EventHandlingScopeActivity, " + AssemblyRef.ActivitiesAssemblyRef; 
 
        internal static ReadOnlyCollection GetViews(StructuredCompositeActivityDesigner designer)
		{ 
 			Debug.Assert(designer.Activity != null);
 			if (designer.Activity == null)
				throw new ArgumentException("Component can not be null!");
 
 			bool locked = !designer.IsEditable;
 
			//Get all the possible view types 
			List viewTypes = new List();
 
            string displayName = ActivityToolboxItem.GetToolboxDisplayName(designer.Activity.GetType());
            viewTypes.Add(new object[] { designer.Activity.GetType(), DR.GetString(DR.ViewActivity, displayName) });

			//Only show the views in workflow designer or for nested activities 
 			if (designer.Activity.Site != null)
			{ 
 				WorkflowDesignerLoader loader = designer.Activity.Site.GetService(typeof(WorkflowDesignerLoader)) as WorkflowDesignerLoader; 
 				Type activityType = designer.Activity.GetType();
 
                if (loader == null ||
                    (typeof(CompositeActivity).IsAssignableFrom(activityType) &&
                    (!locked || FindActivity(designer, typeof(CancellationHandlerActivity)) != null)))
                    viewTypes.Add(new object[] { typeof(CancellationHandlerActivity), DR.GetString(DR.ViewCancelHandler) }); 

                if (loader == null || 
                    (typeof(CompositeActivity).IsAssignableFrom(activityType) && 
                    (!locked || FindActivity(designer, typeof(FaultHandlersActivity)) != null)))
                    viewTypes.Add(new object[] { typeof(FaultHandlersActivity), DR.GetString(DR.ViewExceptions) }); 

                if (loader == null ||
                    (designer.Activity is ICompensatableActivity && typeof(CompositeActivity).IsAssignableFrom(activityType) &&
                    (!locked || FindActivity(designer, typeof(CompensationHandlerActivity)) != null))) 
                    viewTypes.Add(new object[] { typeof(CompensationHandlerActivity), DR.GetString(DR.ViewCompensation) });
 
                if ( loader == null || 
		            (Type.GetType(EventHandlingScopeRef).IsAssignableFrom(activityType) &&
                    (!locked || FindActivity(designer, Type.GetType(EventHandlersRef)) != null))) 
                    viewTypes.Add(new object[] { Type.GetType(EventHandlersRef), DR.GetString(DR.ViewEvents) });
 			}

			//Now go through the view types and create views 
			List views = new List();
			for (int i = 0; i < viewTypes.Count; i++) 
 			{ 
				Type viewType = viewTypes[i][0] as Type;
 				DesignerView view = new SecondaryView(designer, i + 1, viewTypes[i][1] as string, viewType); 
 				views.Add(view);
			}

 			return views.AsReadOnly(); 
		}
 
        internal static IList GetActivityTypes(StructuredCompositeActivityDesigner designer) 
		{
			List activityTypes = new List(); 
 			ReadOnlyCollection views = designer.Views;
			for (int i = 1; i < views.Count; i++)
 			{
 				Type activityType = views[i].UserData[SecondaryView.UserDataKey_ActivityType] as Type; 
				activityTypes.Add(activityType);
 			} 
			return activityTypes.AsReadOnly(); 
		}
 
        internal static void OnViewRemoved(StructuredCompositeActivityDesigner designer, Type viewTypeRemoved)
		{
 			ReadOnlyCollection views = designer.Views;
			for (int i = 1; i < views.Count; i++) 
 			{
 				Type activityType = views[i].UserData[SecondaryView.UserDataKey_ActivityType] as Type; 
				if (viewTypeRemoved == activityType) 
 					views[i].UserData[SecondaryView.UserDataKey_Designer] = null;
			} 
		}

        internal static Activity FindActivity(StructuredCompositeActivityDesigner designer, Type activityType)
		{ 
 			Debug.Assert(activityType != null);
			CompositeActivity compositeActivity = designer.Activity as CompositeActivity; 
 			if (activityType == null || compositeActivity == null) 
 				return null;
 
			foreach (Activity activity in compositeActivity.Activities)
 			{
				if (activityType.IsAssignableFrom(activity.GetType()))
					return activity; 
			}
 
 			return null; 
		}
 	} 
 	#endregion

    #region Class SecondaryView
    internal sealed class SecondaryView : DesignerView 
    {
        internal static readonly Guid UserDataKey_ActivityType = new Guid("03C4103A-D6E9-46e9-B98E-149E145EC2C9"); 
        internal static readonly Guid UserDataKey_Designer = new Guid("2B72C7F7-DE4A-4e32-8EB4-9E1ED1C5E84E"); 

        private StructuredCompositeActivityDesigner parentDesigner; 

        internal SecondaryView(StructuredCompositeActivityDesigner parentDesigner, int id, string text, Type activityType)
            : base(id, text, ActivityToolboxItem.GetToolboxImage(activityType))
        { 
            this.parentDesigner = parentDesigner;
            UserData[UserDataKey_ActivityType] = activityType; 
            if (this.parentDesigner.Activity.GetType() == activityType) 
                UserData[UserDataKey_Designer] = this.parentDesigner;
        } 

        public override ActivityDesigner AssociatedDesigner
        {
            get 
            {
                ActivityDesigner mappedDesigner = UserData[UserDataKey_Designer] as ActivityDesigner; 
                if (mappedDesigner == null) 
                {
                    Type activityType = UserData[UserDataKey_ActivityType] as Type; 
                    if (activityType != null)
                    {
                        if (activityType != this.parentDesigner.Activity.GetType())
                        { 
                            Activity activity = SecondaryViewProvider.FindActivity(this.parentDesigner, activityType);
                            if (activity != null) 
                                mappedDesigner = ActivityDesigner.GetDesigner(activity); 
                        }
                        else 
                        {
                            mappedDesigner = this.parentDesigner;
                        }
 
                        UserData[UserDataKey_Designer] = mappedDesigner;
                    } 
                } 

                return mappedDesigner; 
            }
        }

        public override void OnActivate() 
        {
            if (AssociatedDesigner != null) 
                return; 

            Type activityType = UserData[UserDataKey_ActivityType] as Type; 
            Debug.Assert(activityType != null);

            CompositeActivity parentActivity = this.parentDesigner.Activity as CompositeActivity;
            if (activityType == null || parentActivity == null || !this.parentDesigner.IsEditable) 
                return;
 
            Activity activity = Activator.CreateInstance(activityType) as Activity; 
            try
            { 
                CompositeActivityDesigner.InsertActivities(this.parentDesigner, new HitTestInfo(this.parentDesigner, HitTestLocations.Designer), new List(new Activity[] { activity }).AsReadOnly(), SR.GetString(SR.AddingImplicitActivity));
            }
            catch (Exception e)
            { 
                if (e != CheckoutException.Canceled)
                { 
                    IUIService uiService = this.parentDesigner.Activity.Site.GetService(typeof(IUIService)) as IUIService; 
                    if (uiService != null)
                        uiService.ShowError(e.Message); 
                }
            }

            ActivityDesigner designer = ActivityDesigner.GetDesigner(activity); 
            UserData[UserDataKey_Designer] = designer;
        } 
    } 
    #endregion
} 

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

                        

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