e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
82 lines
3.1 KiB
C#
82 lines
3.1 KiB
C#
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.StateFinalizationActivityDescription)]
|
|
[Designer(typeof(StateFinalizationDesigner), typeof(IDesigner))]
|
|
[ToolboxItem(typeof(ActivityToolboxItem))]
|
|
[ToolboxBitmap(typeof(StateFinalizationActivity), "Resources.StateFinalizationActivity.png")]
|
|
[ActivityValidator(typeof(StateFinalizationValidator))]
|
|
[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 StateFinalizationActivity : SequenceActivity
|
|
{
|
|
public StateFinalizationActivity()
|
|
{
|
|
}
|
|
|
|
public StateFinalizationActivity(string name)
|
|
: base(name)
|
|
{
|
|
}
|
|
}
|
|
|
|
[System.Runtime.InteropServices.ComVisible(false)]
|
|
internal sealed class StateFinalizationValidator : CompositeActivityValidator
|
|
{
|
|
public override ValidationErrorCollection Validate(ValidationManager manager, object obj)
|
|
{
|
|
ValidationErrorCollection validationErrors = base.Validate(manager, obj);
|
|
|
|
StateFinalizationActivity stateFinalization = obj as StateFinalizationActivity;
|
|
if (stateFinalization == null)
|
|
throw new ArgumentException(SR.GetString(SR.Error_UnexpectedArgumentType, typeof(StateFinalizationActivity).FullName), "obj");
|
|
|
|
StateActivity state = stateFinalization.Parent as StateActivity;
|
|
if (state == null)
|
|
{
|
|
validationErrors.Add(new ValidationError(SR.GetError_StateFinalizationParentNotState(), ErrorNumbers.Error_StateHandlerParentNotState));
|
|
return validationErrors;
|
|
}
|
|
|
|
foreach (Activity activity in state.EnabledActivities)
|
|
{
|
|
StateFinalizationActivity childStateFinalization = activity as StateFinalizationActivity;
|
|
if (childStateFinalization != null)
|
|
{
|
|
if (childStateFinalization == stateFinalization)
|
|
continue;
|
|
|
|
validationErrors.Add(new ValidationError(
|
|
SR.GetError_MultipleStateFinalizationActivities(), ErrorNumbers.Error_MultipleStateFinalizationActivities));
|
|
break;
|
|
}
|
|
}
|
|
|
|
if (StateMachineHelpers.ContainsEventActivity(stateFinalization))
|
|
{
|
|
validationErrors.Add(new ValidationError(SR.GetError_EventActivityNotValidInStateFinalization(), ErrorNumbers.Error_EventActivityNotValidInStateHandler));
|
|
}
|
|
|
|
return validationErrors;
|
|
}
|
|
}
|
|
}
|