Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.WorkflowServices / System / Workflow / Activities / ChannelTokenTypeConverter.cs / 1305376 / ChannelTokenTypeConverter.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Workflow.Activities { using System; using System.Xml; using System.ComponentModel; using System.ComponentModel.Design; using System.ComponentModel.Design.Serialization; using System.Reflection; using System.Collections; using System.Collections.Generic; using System.Collections.Specialized; using System.Diagnostics; using System.Runtime.Serialization; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Design; using System.Workflow.ComponentModel.Serialization; using System.Workflow.Runtime; using System.Globalization; internal sealed class ChannelTokenTypeConverter : ExpandableObjectConverter { public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType) { return (sourceType == typeof(string)); } public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType) { return (destinationType == typeof(string)); } public override object ConvertFrom(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value) { object convertedValue = null; string endpointName = value as String; if (!String.IsNullOrEmpty(endpointName)) { foreach (object obj in GetStandardValues(context)) { ChannelToken endpoint = obj as ChannelToken; if (endpoint != null && endpoint.Name == endpointName) { convertedValue = endpoint; break; } } if (convertedValue == null) { convertedValue = new ChannelToken(endpointName); } } return convertedValue; } public override object ConvertTo(ITypeDescriptorContext context, System.Globalization.CultureInfo culture, object value, Type destinationType) { object convertedValue = null; ChannelToken endpoint = value as ChannelToken; if (destinationType == typeof(string) && endpoint != null) { convertedValue = endpoint.Name; } return convertedValue; } public override PropertyDescriptorCollection GetProperties(ITypeDescriptorContext context, object value, Attribute[] attributes) { PropertyDescriptorCollection properties = base.GetProperties(context, value, attributes); ArrayList props = new ArrayList(properties); return new PropertyDescriptorCollection((PropertyDescriptor[]) props.ToArray(typeof(PropertyDescriptor))); } public override StandardValuesCollection GetStandardValues(ITypeDescriptorContext context) { ArrayList values = new ArrayList(); Activity activity = context.Instance as Activity; if (activity != null) { foreach (Activity preceedingActivity in GetPreceedingActivities(activity)) { PropertyDescriptor endpointProperty = TypeDescriptor.GetProperties(preceedingActivity)["ChannelToken"] as PropertyDescriptor; if (endpointProperty != null) { ChannelToken endpoint = endpointProperty.GetValue(preceedingActivity) as ChannelToken; if (endpoint != null && !values.Contains(endpoint)) { values.Add(endpoint); } } } } return new StandardValuesCollection(values); } public override bool GetStandardValuesExclusive(ITypeDescriptorContext context) { return false; } public override bool GetStandardValuesSupported(ITypeDescriptorContext context) { return true; } private IEnumerable GetContainedActivities(CompositeActivity activity) { if (!activity.Enabled) { yield break; } foreach (Activity containedActivity in activity.Activities) { if (containedActivity.Enabled) { yield return containedActivity; if (containedActivity is CompositeActivity) { foreach (Activity nestedActivity in GetContainedActivities((CompositeActivity) containedActivity)) { if (nestedActivity.Enabled) { yield return nestedActivity; } } } } } yield break; } private IEnumerable GetPreceedingActivities(Activity startActivity) { Activity currentActivity = null; StackactivityStack = new Stack (); activityStack.Push(startActivity); while ((currentActivity = activityStack.Pop()) != null) { if (currentActivity.Parent != null) { foreach (Activity siblingActivity in currentActivity.Parent.Activities) { if (siblingActivity == currentActivity) { continue; } if (siblingActivity.Enabled) { yield return siblingActivity; if (siblingActivity is CompositeActivity) { foreach (Activity containedActivity in GetContainedActivities((CompositeActivity) siblingActivity)) { yield return containedActivity; } } } } } activityStack.Push(currentActivity.Parent); } yield break; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- DesignerLabelAdapter.cs
- GrammarBuilderWildcard.cs
- EntityDataSourceWrapperCollection.cs
- UriTemplateTrieLocation.cs
- FileStream.cs
- followingquery.cs
- PartialToken.cs
- PageAction.cs
- TextDecorationCollection.cs
- DataComponentGenerator.cs
- Imaging.cs
- ProbeMatchesApril2005.cs
- XamlGridLengthSerializer.cs
- XmlNodeReader.cs
- CodeCastExpression.cs
- InkPresenterAutomationPeer.cs
- SafeCertificateStore.cs
- MailDefinition.cs
- WaitHandle.cs
- WorkflowInstanceSuspendedRecord.cs
- GenericTypeParameterBuilder.cs
- DoubleLinkList.cs
- NegationPusher.cs
- wmiprovider.cs
- SystemWebSectionGroup.cs
- CompilerGlobalScopeAttribute.cs
- XmlCompatibilityReader.cs
- TitleStyle.cs
- WindowsToolbarItemAsMenuItem.cs
- RawMouseInputReport.cs
- Shape.cs
- DataChangedEventManager.cs
- LineVisual.cs
- CompletedAsyncResult.cs
- basevalidator.cs
- MarkupProperty.cs
- SystemIcons.cs
- Int64.cs
- TemplateInstanceAttribute.cs
- ToolStripArrowRenderEventArgs.cs
- GroupBoxAutomationPeer.cs
- IncomingWebResponseContext.cs
- CodeTypeReference.cs
- NativeCppClassAttribute.cs
- MsmqOutputSessionChannel.cs
- WmlPanelAdapter.cs
- StateMachineSubscriptionManager.cs
- ParseChildrenAsPropertiesAttribute.cs
- ClientSponsor.cs
- DictionaryTraceRecord.cs
- Error.cs
- SecurityAppliedMessage.cs
- CodeTypeDelegate.cs
- IsolatedStorage.cs
- AstTree.cs
- safemediahandle.cs
- CheckBoxBaseAdapter.cs
- _SpnDictionary.cs
- ScrollChangedEventArgs.cs
- DiffuseMaterial.cs
- SocketInformation.cs
- shaperfactoryquerycacheentry.cs
- DiscardableAttribute.cs
- SystemWebCachingSectionGroup.cs
- ProtocolInformationReader.cs
- DesignerObjectListAdapter.cs
- DocumentPageViewAutomationPeer.cs
- errorpatternmatcher.cs
- SourceItem.cs
- XmlFormatExtensionPointAttribute.cs
- _NegoStream.cs
- ImageSourceConverter.cs
- BitmapPalette.cs
- ComboBoxAutomationPeer.cs
- RotateTransform3D.cs
- Root.cs
- RtfNavigator.cs
- TagPrefixCollection.cs
- VisualStyleInformation.cs
- X509ThumbprintKeyIdentifierClause.cs
- HostedHttpContext.cs
- DataGridColumnHeader.cs
- Variant.cs
- XmlQualifiedNameTest.cs
- ColumnResizeUndoUnit.cs
- StylusDevice.cs
- RegexRunnerFactory.cs
- GeometryModel3D.cs
- DbSourceParameterCollection.cs
- COM2FontConverter.cs
- AutomationPeer.cs
- DataRowView.cs
- PrivacyNoticeBindingElement.cs
- GridViewDeleteEventArgs.cs
- SuppressMessageAttribute.cs
- TimeSpanValidator.cs
- System.Data_BID.cs
- DataKey.cs
- ObjectAnimationUsingKeyFrames.cs
- BrushConverter.cs