EventDriven.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Activities / EventDriven.cs / 1305376 / EventDriven.cs

                            namespace System.Workflow.Activities 
{
    #region Imports

    using System; 
    using System.Text;
    using System.Reflection; 
    using System.Collections; 
    using System.Collections.Generic;
    using System.CodeDom; 
    using System.ComponentModel;
    using System.ComponentModel.Design;
    using System.Drawing;
    using System.Workflow.ComponentModel; 
    using System.Workflow.ComponentModel.Design;
    using System.Workflow.ComponentModel.Compiler; 
    using System.Collections.ObjectModel; 
    using System.Workflow.Activities.Common;
 
    #endregion

    [SRDescription(SR.EventDrivenActivityDescription)]
    [Designer(typeof(EventDrivenDesigner), typeof(IDesigner))] 
    [ToolboxItem(typeof(ActivityToolboxItem))]
    [ToolboxBitmap(typeof(EventDrivenActivity), "Resources.EventDriven.png")] 
    [ActivityValidator(typeof(EventDrivenValidator))] 
    [SRCategory(SR.Standard)]
    public sealed class EventDrivenActivity : SequenceActivity 
    {
        public EventDrivenActivity()
        {
        } 

        public EventDrivenActivity(string name) 
            : base(name) 
        {
        } 

        [Browsable(false)]
        [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
        public IEventActivity EventActivity 
        {
            get 
            { 
                ReadOnlyCollection enabledActivities = this.EnabledActivities;
                if (enabledActivities.Count == 0) 
                    return null;
                else
                    return enabledActivities[0] as IEventActivity;
            } 
        }
    } 
 
    internal sealed class EventDrivenValidator : CompositeActivityValidator
    { 
        public override ValidationErrorCollection Validate(ValidationManager manager, object obj)
        {
            ValidationErrorCollection validationErrors = base.Validate(manager, obj);
 
            EventDrivenActivity eventDriven = obj as EventDrivenActivity;
            if (eventDriven == null) 
                throw new ArgumentException(SR.GetString(SR.Error_UnexpectedArgumentType, typeof(EventDrivenActivity).FullName), "obj"); 

            // check parent 
            if (!(eventDriven.Parent is ListenActivity) &&
                !(eventDriven.Parent is EventHandlersActivity) &&
                !(eventDriven.Parent is StateActivity)
                ) 
                validationErrors.Add(new ValidationError(SR.GetError_EventDrivenParentNotListen(), ErrorNumbers.Error_EventDrivenParentNotListen));
 
            // validate Event property 
            string message = string.Empty;
            int errorNumber = -1; 
            Activity firstActivity = (eventDriven.EnabledActivities.Count > 0) ? eventDriven.EnabledActivities[0] : null;
            if (firstActivity == null)
            {
                message = SR.GetString(SR.Error_EventDrivenNoFirstActivity); 
                errorNumber = ErrorNumbers.Error_EventDrivenNoFirstActivity;
            } 
            else if (!(firstActivity is IEventActivity)) 
            {
                message = SR.GetError_EventDrivenInvalidFirstActivity(); 
                errorNumber = ErrorNumbers.Error_EventDrivenInvalidFirstActivity;
            }
            if (message.Length > 0)
                validationErrors.Add(new ValidationError(message, errorNumber)); 

            return validationErrors; 
        } 

        public override ValidationError ValidateActivityChange(Activity activity, ActivityChangeAction action) 
        {
            if (activity == null)
                throw new ArgumentNullException("activity");
            if (action == null) 
                throw new ArgumentNullException("action");
 
            RemovedActivityAction removedAction = action as RemovedActivityAction; 
            if (removedAction != null && removedAction.RemovedActivityIndex == 0)
            { 
                return new ValidationError(SR.GetString(SR.Error_EventActivityIsImmutable), ErrorNumbers.Error_DynamicActivity, false);
            }
            else
            { 
                AddedActivityAction addedAction = action as AddedActivityAction;
 
                if (addedAction != null && addedAction.Index == 0) 
                    return new ValidationError(SR.GetString(SR.Error_EventActivityIsImmutable), ErrorNumbers.Error_DynamicActivity, false);
            } 
            return base.ValidateActivityChange(activity, action);
        }
    }
} 

// 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