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 ReadOnlyCollectionParseStateMachine(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
- ThemeableAttribute.cs
- _NegotiateClient.cs
- AppDomainEvidenceFactory.cs
- NumberEdit.cs
- HttpApplicationStateWrapper.cs
- CodeDelegateCreateExpression.cs
- TextDecorationUnitValidation.cs
- HttpModuleActionCollection.cs
- invalidudtexception.cs
- TransactionBridgeSection.cs
- StorageMappingItemLoader.cs
- ScalarConstant.cs
- MissingManifestResourceException.cs
- CallbackHandler.cs
- LOSFormatter.cs
- OdbcCommand.cs
- NameValueSectionHandler.cs
- SystemIcmpV6Statistics.cs
- DataGridViewAutoSizeModeEventArgs.cs
- MarkupCompiler.cs
- InternalRelationshipCollection.cs
- HtmlInputFile.cs
- DetailsViewRow.cs
- XamlRtfConverter.cs
- ExtendedPropertyInfo.cs
- SQLRoleProvider.cs
- EntityModelSchemaGenerator.cs
- FrugalList.cs
- SQLString.cs
- WpfKnownMemberInvoker.cs
- TagPrefixAttribute.cs
- PersonalizationStateInfo.cs
- EpmContentDeSerializer.cs
- DiscoveryClientDuplexChannel.cs
- Setter.cs
- ResourcesGenerator.cs
- ToolStripItemBehavior.cs
- Bits.cs
- CustomPopupPlacement.cs
- unitconverter.cs
- Exception.cs
- MultitargetingHelpers.cs
- PointLightBase.cs
- View.cs
- DuplicateDetector.cs
- SafeMILHandle.cs
- MarkupExtensionParser.cs
- ReachDocumentSequenceSerializerAsync.cs
- _FtpControlStream.cs
- ObjectTokenCategory.cs
- _ListenerResponseStream.cs
- ApplicationServicesHostFactory.cs
- ValidatorCollection.cs
- DependencyObject.cs
- RemotingConfigParser.cs
- DataGridViewCellConverter.cs
- Directory.cs
- CommentGlyph.cs
- XmlSerializerNamespaces.cs
- HierarchicalDataBoundControlAdapter.cs
- IntegerCollectionEditor.cs
- IsolatedStorageSecurityState.cs
- SamlAssertionDirectKeyIdentifierClause.cs
- ListViewCommandEventArgs.cs
- wgx_render.cs
- ResolveNameEventArgs.cs
- DataGridViewCellConverter.cs
- ItemChangedEventArgs.cs
- EditorZoneBase.cs
- Stroke.cs
- _NTAuthentication.cs
- RawStylusInputReport.cs
- XmlTextReaderImpl.cs
- CounterCreationData.cs
- IPAddressCollection.cs
- DataServiceQuery.cs
- StackSpiller.Bindings.cs
- BlobPersonalizationState.cs
- RangeValidator.cs
- ClientScriptManagerWrapper.cs
- XNodeValidator.cs
- DesignerRegionMouseEventArgs.cs
- SqlPersistenceProviderFactory.cs
- IndexerReference.cs
- TextFormatterContext.cs
- MetadataCacheItem.cs
- MainMenu.cs
- DuplicateWaitObjectException.cs
- BamlTreeNode.cs
- DataGridViewRowEventArgs.cs
- TextEvent.cs
- RuleInfoComparer.cs
- InfiniteTimeSpanConverter.cs
- AuthenticateEventArgs.cs
- MasterPageCodeDomTreeGenerator.cs
- CellCreator.cs
- DebugTracing.cs
- sqlcontext.cs
- TextRangeEditLists.cs
- CalendarAutoFormatDialog.cs