You've already forked linux-packaging-mono
Imported Upstream version 4.0.0~alpha1
Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
This commit is contained in:
116
external/referencesource/System.Workflow.Activities/StateInitialization.cs
vendored
Normal file
116
external/referencesource/System.Workflow.Activities/StateInitialization.cs
vendored
Normal file
@ -0,0 +1,116 @@
|
||||
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.Workflow.Activities.Common;
|
||||
|
||||
#endregion
|
||||
|
||||
[SRDescription(SR.StateInitializationActivityDescription)]
|
||||
[Designer(typeof(StateInitializationDesigner), typeof(IDesigner))]
|
||||
[ToolboxItem(typeof(ActivityToolboxItem))]
|
||||
[ToolboxBitmap(typeof(StateInitializationActivity), "Resources.StateInitializationActivity.png")]
|
||||
[ActivityValidator(typeof(StateInitializationValidator))]
|
||||
[SRCategory(SR.Standard)]
|
||||
[System.Runtime.InteropServices.ComVisible(false)]
|
||||
[Obsolete("The System.Workflow.* types are deprecated. Instead, please use the new types from System.Activities.*")]
|
||||
public sealed class StateInitializationActivity : SequenceActivity
|
||||
{
|
||||
public StateInitializationActivity()
|
||||
{
|
||||
}
|
||||
|
||||
public StateInitializationActivity(string name)
|
||||
: base(name)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
[System.Runtime.InteropServices.ComVisible(false)]
|
||||
internal sealed class StateInitializationValidator : CompositeActivityValidator
|
||||
{
|
||||
public override ValidationErrorCollection Validate(ValidationManager manager, object obj)
|
||||
{
|
||||
ValidationErrorCollection validationErrors = base.Validate(manager, obj);
|
||||
|
||||
StateInitializationActivity stateInitialization = obj as StateInitializationActivity;
|
||||
if (stateInitialization == null)
|
||||
throw new ArgumentException(SR.GetString(SR.Error_UnexpectedArgumentType, typeof(StateInitializationActivity).FullName), "obj");
|
||||
|
||||
StateActivity state = stateInitialization.Parent as StateActivity;
|
||||
if (state == null)
|
||||
{
|
||||
validationErrors.Add(new ValidationError(SR.GetError_StateInitializationParentNotState(), ErrorNumbers.Error_StateHandlerParentNotState));
|
||||
return validationErrors;
|
||||
}
|
||||
|
||||
foreach (Activity activity in state.EnabledActivities)
|
||||
{
|
||||
StateInitializationActivity childStateInitialization = activity as StateInitializationActivity;
|
||||
if (childStateInitialization != null)
|
||||
{
|
||||
if (childStateInitialization == stateInitialization)
|
||||
continue;
|
||||
|
||||
validationErrors.Add(new ValidationError(
|
||||
SR.GetError_MultipleStateInitializationActivities(), ErrorNumbers.Error_MultipleStateInitializationActivities));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ValidateSetStateInsideStateInitialization(stateInitialization, state, validationErrors);
|
||||
|
||||
if (StateMachineHelpers.ContainsEventActivity(stateInitialization))
|
||||
{
|
||||
validationErrors.Add(new ValidationError(SR.GetError_EventActivityNotValidInStateInitialization(), ErrorNumbers.Error_EventActivityNotValidInStateHandler));
|
||||
}
|
||||
|
||||
return validationErrors;
|
||||
}
|
||||
|
||||
private void ValidateSetStateInsideStateInitialization(StateInitializationActivity stateInitialization, StateActivity state, ValidationErrorCollection validationErrors)
|
||||
{
|
||||
ValidateSetStateInsideStateInitializationCore(stateInitialization, state, validationErrors);
|
||||
}
|
||||
|
||||
private void ValidateSetStateInsideStateInitializationCore(CompositeActivity compositeActivity, StateActivity state, ValidationErrorCollection validationErrors)
|
||||
{
|
||||
foreach (Activity activity in compositeActivity.EnabledActivities)
|
||||
{
|
||||
CompositeActivity childCompositeActivity = activity as CompositeActivity;
|
||||
if (childCompositeActivity != null)
|
||||
{
|
||||
ValidateSetStateInsideStateInitializationCore(childCompositeActivity, state, validationErrors);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetStateActivity setState = activity as SetStateActivity;
|
||||
if (setState != null)
|
||||
{
|
||||
if (!String.IsNullOrEmpty(setState.TargetStateName))
|
||||
{
|
||||
if (setState.TargetStateName.Equals(state.QualifiedName))
|
||||
{
|
||||
validationErrors.Add(new ValidationError(
|
||||
SR.GetError_InvalidTargetStateInStateInitialization(), ErrorNumbers.Error_InvalidTargetStateInStateInitialization));
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user