Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Activities / Designers / StateDesigner.TransitionInfo.cs / 1305376 / StateDesigner.TransitionInfo.cs
namespace System.Workflow.Activities
{
using System;
using System.Text;
using System.Reflection;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.CodeDom;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing.Design;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Design;
using System.Runtime.Serialization;
internal partial class StateDesigner : FreeformActivityDesigner
{
internal class TransitionInfo
{
private SetStateActivity _setState;
private CompositeActivity _eventHandler;
private StateActivity _targetState;
private StateDesignerConnector _connector;
internal TransitionInfo(SetStateActivity setState, CompositeActivity eventHandler)
{
if (setState == null)
throw new ArgumentNullException("setState");
if (eventHandler == null)
throw new ArgumentNullException("eventHandler");
_setState = setState;
_eventHandler = eventHandler;
}
internal SetStateActivity SetState
{
get
{
return _setState;
}
}
internal CompositeActivity EventHandler
{
get
{
return _eventHandler;
}
}
internal StateActivity SourceState
{
get
{
if (_eventHandler == null)
return null;
StateActivity sourceState = _eventHandler.Parent as StateActivity;
return sourceState;
}
}
internal StateActivity TargetState
{
get
{
return _targetState;
}
set
{
_targetState = value;
}
}
internal StateDesignerConnector Connector
{
get
{
return _connector;
}
set
{
_connector = value;
}
}
internal bool Matches(StateDesignerConnector stateDesignerConnector)
{
if (stateDesignerConnector == null)
throw new ArgumentNullException("stateDesignerConnector");
if (this.Connector != null &&
this.Connector == stateDesignerConnector)
return true;
// this transitioninfo is incomplete,
// therefore, it cannot match an existing connector
if (this.SetState == null ||
this.SourceState == null ||
this.TargetState == null ||
this.EventHandler == null)
return false;
if (this.SetState.QualifiedName != stateDesignerConnector.SetStateName)
return false;
if (this.SourceState.QualifiedName != stateDesignerConnector.SourceStateName)
return false;
if (this.TargetState.QualifiedName != stateDesignerConnector.TargetStateName ||
stateDesignerConnector.Target.AssociatedDesigner.Activity.QualifiedName != stateDesignerConnector.TargetStateName)
return false;
if (this.EventHandler.QualifiedName != stateDesignerConnector.EventHandlerName)
return false;
return true;
}
internal static ReadOnlyCollection ParseStateMachine(StateActivity rootState)
{
List transitions = new List();
Dictionary states = new Dictionary();
Queue processingQueue = new Queue();
processingQueue.Enqueue(rootState);
while (processingQueue.Count > 0)
{
StateActivity state = processingQueue.Dequeue();
states[state.QualifiedName] = state;
foreach (Activity childActivity in state.Activities)
{
StateActivity childState = childActivity as StateActivity;
if (childState == null)
{
CompositeActivity compositeChild = childActivity as CompositeActivity;
if (compositeChild != null)
ParseEventHandler(compositeChild, transitions);
}
else
{
processingQueue.Enqueue(childState);
}
}
}
foreach (TransitionInfo transitionInfo in transitions)
{
StateActivity targetState;
string targetStateName = transitionInfo.SetState.TargetStateName;
if (!String.IsNullOrEmpty(targetStateName))
{
states.TryGetValue(transitionInfo.SetState.TargetStateName, out targetState);
transitionInfo.TargetState = targetState;
}
}
return transitions.AsReadOnly();
}
private static void ParseEventHandler(CompositeActivity eventHandler, List transitions)
{
Queue processingQueue = new Queue();
processingQueue.Enqueue(eventHandler);
while (processingQueue.Count > 0)
{
Activity activity = processingQueue.Dequeue();
SetStateActivity setState = activity as SetStateActivity;
if (setState != null)
{
TransitionInfo transitionInfo = new TransitionInfo(setState, eventHandler);
transitions.Add(transitionInfo);
}
else
{
CompositeActivity compositeActivity = activity as CompositeActivity;
if (compositeActivity != null)
{
foreach (Activity childActivity in compositeActivity.Activities)
{
processingQueue.Enqueue(childActivity);
}
}
}
}
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
namespace System.Workflow.Activities
{
using System;
using System.Text;
using System.Reflection;
using System.Collections;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.CodeDom;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Drawing.Design;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Diagnostics;
using System.IO;
using System.Windows.Forms;
using System.Workflow.ComponentModel;
using System.Workflow.ComponentModel.Design;
using System.Runtime.Serialization;
internal partial class StateDesigner : FreeformActivityDesigner
{
internal class TransitionInfo
{
private SetStateActivity _setState;
private CompositeActivity _eventHandler;
private StateActivity _targetState;
private StateDesignerConnector _connector;
internal TransitionInfo(SetStateActivity setState, CompositeActivity eventHandler)
{
if (setState == null)
throw new ArgumentNullException("setState");
if (eventHandler == null)
throw new ArgumentNullException("eventHandler");
_setState = setState;
_eventHandler = eventHandler;
}
internal SetStateActivity SetState
{
get
{
return _setState;
}
}
internal CompositeActivity EventHandler
{
get
{
return _eventHandler;
}
}
internal StateActivity SourceState
{
get
{
if (_eventHandler == null)
return null;
StateActivity sourceState = _eventHandler.Parent as StateActivity;
return sourceState;
}
}
internal StateActivity TargetState
{
get
{
return _targetState;
}
set
{
_targetState = value;
}
}
internal StateDesignerConnector Connector
{
get
{
return _connector;
}
set
{
_connector = value;
}
}
internal bool Matches(StateDesignerConnector stateDesignerConnector)
{
if (stateDesignerConnector == null)
throw new ArgumentNullException("stateDesignerConnector");
if (this.Connector != null &&
this.Connector == stateDesignerConnector)
return true;
// this transitioninfo is incomplete,
// therefore, it cannot match an existing connector
if (this.SetState == null ||
this.SourceState == null ||
this.TargetState == null ||
this.EventHandler == null)
return false;
if (this.SetState.QualifiedName != stateDesignerConnector.SetStateName)
return false;
if (this.SourceState.QualifiedName != stateDesignerConnector.SourceStateName)
return false;
if (this.TargetState.QualifiedName != stateDesignerConnector.TargetStateName ||
stateDesignerConnector.Target.AssociatedDesigner.Activity.QualifiedName != stateDesignerConnector.TargetStateName)
return false;
if (this.EventHandler.QualifiedName != stateDesignerConnector.EventHandlerName)
return false;
return true;
}
internal static ReadOnlyCollection ParseStateMachine(StateActivity rootState)
{
List transitions = new List();
Dictionary states = new Dictionary();
Queue processingQueue = new Queue();
processingQueue.Enqueue(rootState);
while (processingQueue.Count > 0)
{
StateActivity state = processingQueue.Dequeue();
states[state.QualifiedName] = state;
foreach (Activity childActivity in state.Activities)
{
StateActivity childState = childActivity as StateActivity;
if (childState == null)
{
CompositeActivity compositeChild = childActivity as CompositeActivity;
if (compositeChild != null)
ParseEventHandler(compositeChild, transitions);
}
else
{
processingQueue.Enqueue(childState);
}
}
}
foreach (TransitionInfo transitionInfo in transitions)
{
StateActivity targetState;
string targetStateName = transitionInfo.SetState.TargetStateName;
if (!String.IsNullOrEmpty(targetStateName))
{
states.TryGetValue(transitionInfo.SetState.TargetStateName, out targetState);
transitionInfo.TargetState = targetState;
}
}
return transitions.AsReadOnly();
}
private static void ParseEventHandler(CompositeActivity eventHandler, List transitions)
{
Queue processingQueue = new Queue();
processingQueue.Enqueue(eventHandler);
while (processingQueue.Count > 0)
{
Activity activity = processingQueue.Dequeue();
SetStateActivity setState = activity as SetStateActivity;
if (setState != null)
{
TransitionInfo transitionInfo = new TransitionInfo(setState, eventHandler);
transitions.Add(transitionInfo);
}
else
{
CompositeActivity compositeActivity = activity as CompositeActivity;
if (compositeActivity != null)
{
foreach (Activity childActivity in compositeActivity.Activities)
{
processingQueue.Enqueue(childActivity);
}
}
}
}
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ValidateNames.cs
- ControlCollection.cs
- DetailsViewRowCollection.cs
- smtpconnection.cs
- RequestCachingSection.cs
- RequestNavigateEventArgs.cs
- AccessedThroughPropertyAttribute.cs
- ContractSearchPattern.cs
- XamlTemplateSerializer.cs
- BulletedList.cs
- StartUpEventArgs.cs
- Utils.cs
- DocobjHost.cs
- ValidationErrorEventArgs.cs
- NamedObject.cs
- DataSet.cs
- ProgressBarAutomationPeer.cs
- Rect3D.cs
- ServiceOperation.cs
- ActivityUtilities.cs
- BrowsableAttribute.cs
- IDispatchConstantAttribute.cs
- Point3DAnimationBase.cs
- SiteOfOriginContainer.cs
- processwaithandle.cs
- __TransparentProxy.cs
- PropertyStore.cs
- InternalsVisibleToAttribute.cs
- XmlHelper.cs
- DocumentOrderQuery.cs
- FixedStringLookup.cs
- MediaCommands.cs
- Resources.Designer.cs
- ProfileManager.cs
- FirstMatchCodeGroup.cs
- NavigationFailedEventArgs.cs
- DeadCharTextComposition.cs
- RadioButtonBaseAdapter.cs
- TemplateBaseAction.cs
- DefaultIfEmptyQueryOperator.cs
- MergeFilterQuery.cs
- EventItfInfo.cs
- WindowsTokenRoleProvider.cs
- TerminatorSinks.cs
- DataGridViewRowCollection.cs
- CodeAttributeArgumentCollection.cs
- EntityDataSourceEntitySetNameItem.cs
- SqlBulkCopyColumnMappingCollection.cs
- WebBaseEventKeyComparer.cs
- ZipIOLocalFileDataDescriptor.cs
- UIElement.cs
- OperationResponse.cs
- Point4D.cs
- glyphs.cs
- ArgumentValueSerializer.cs
- SecurityIdentifierElementCollection.cs
- UpdatePanel.cs
- ProviderCollection.cs
- FactoryGenerator.cs
- XmlSchemaCompilationSettings.cs
- EUCJPEncoding.cs
- Wildcard.cs
- DataSourceHelper.cs
- SnapLine.cs
- TableRowCollection.cs
- IntSecurity.cs
- TrackBarDesigner.cs
- SafeRightsManagementSessionHandle.cs
- SignedXml.cs
- ReliableSession.cs
- XmlSerializationReader.cs
- BinaryFormatter.cs
- CodeArrayCreateExpression.cs
- WebScriptMetadataMessage.cs
- CodeConditionStatement.cs
- WebBrowserHelper.cs
- SecurityBindingElement.cs
- NonParentingControl.cs
- WebServiceHandlerFactory.cs
- SerTrace.cs
- BufferBuilder.cs
- PrivilegeNotHeldException.cs
- HandlerBase.cs
- CompoundFileDeflateTransform.cs
- BamlStream.cs
- SafeSecurityHandles.cs
- HttpResponseHeader.cs
- ObservableDictionary.cs
- DTCTransactionManager.cs
- WebPartEventArgs.cs
- Bits.cs
- Utils.cs
- ContentValidator.cs
- OledbConnectionStringbuilder.cs
- DataControlCommands.cs
- ReversePositionQuery.cs
- XomlCompiler.cs
- TypedRowHandler.cs
- XmlText.cs
- Polygon.cs