Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Activities / Designers / InvokeMethodActivityDesigner.cs / 1305376 / InvokeMethodActivityDesigner.cs
namespace System.Workflow.Activities { using System; using System.Text; using System.Reflection; using System.Collections; using System.CodeDom; using System.ComponentModel; using System.ComponentModel.Design; using System.Drawing; using System.Drawing.Drawing2D; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Design; using System.Workflow.ComponentModel.Compiler; using System.Workflow.Activities.Common; #region Class CallExternalMethodActivityDesigner [ActivityDesignerTheme(typeof(InvokeMethodDesignerTheme))] internal class CallExternalMethodActivityDesigner : ActivityDesigner { protected override void PreFilterProperties(IDictionary properties) { base.PreFilterProperties(properties); CallExternalMethodActivity invokeMethod = Activity as CallExternalMethodActivity; object corrRefProperty = properties["CorrelationToken"]; AddRemoveCorrelationToken(invokeMethod.InterfaceType, properties, corrRefProperty); Type type = invokeMethod.InterfaceType; if (type == null) return; AddRemoveCorrelationToken(type, properties, corrRefProperty); invokeMethod.GetParameterPropertyDescriptors(properties); } private void AddRemoveCorrelationToken(Type interfaceType, IDictionary properties, object corrRefProperty) { if (interfaceType != null) { object[] corrProvAttribs = interfaceType.GetCustomAttributes(typeof(CorrelationProviderAttribute), false); object[] corrParamAttribs = interfaceType.GetCustomAttributes(typeof(CorrelationParameterAttribute), false); if (corrProvAttribs.Length != 0 || corrParamAttribs.Length != 0) { if (!properties.Contains("CorrelationToken")) properties.Add("CorrelationToken", corrRefProperty); return; } } if (properties.Contains("CorrelationToken")) properties.Remove("CorrelationToken"); } protected override void OnActivityChanged(ActivityChangedEventArgs e) { base.OnActivityChanged(e); if (e.Member != null) { if (e.Member.Name == "InterfaceType") { if (Activity.Site != null) { Type interfaceType = e.NewValue as Type; if (interfaceType != null) new ExternalDataExchangeInterfaceTypeFilterProvider(Activity.Site).CanFilterType(interfaceType, true); CallExternalMethodActivity invokeActivity = e.Activity as CallExternalMethodActivity; PropertyDescriptorUtils.SetPropertyValue(Activity.Site, TypeDescriptor.GetProperties(Activity)["MethodName"], Activity, String.Empty); IExtendedUIService extUIService = (IExtendedUIService)Activity.Site.GetService(typeof(IExtendedUIService)); if (extUIService == null) throw new Exception(SR.GetString(SR.General_MissingService, typeof(IExtendedUIService).FullName)); } } if ((e.Member.Name == "MethodName") && e.Activity is CallExternalMethodActivity) (e.Activity as CallExternalMethodActivity).ParameterBindings.Clear(); if (e.Member.Name == "InterfaceType" || e.Member.Name == "MethodName" || e.Member.Name == "CorrelationToken") TypeDescriptor.Refresh(e.Activity); } } } #endregion #region InvokeMethodDesignerTheme internal sealed class InvokeMethodDesignerTheme : ActivityDesignerTheme { public InvokeMethodDesignerTheme(WorkflowTheme theme) : base(theme) { this.ForeColor = Color.FromArgb(0xFF, 0x00, 0x00, 0x00); this.BorderColor = Color.FromArgb(0xFF, 0x73, 0x79, 0xA5); this.BorderStyle = DashStyle.Solid; this.BackColorStart = Color.FromArgb(0xFF, 0xDF, 0xE8, 0xFF); this.BackColorEnd = Color.FromArgb(0xFF, 0x95, 0xB3, 0xFF); this.BackgroundStyle = LinearGradientMode.Horizontal; } } #endregion } // 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.CodeDom; using System.ComponentModel; using System.ComponentModel.Design; using System.Drawing; using System.Drawing.Drawing2D; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Design; using System.Workflow.ComponentModel.Compiler; using System.Workflow.Activities.Common; #region Class CallExternalMethodActivityDesigner [ActivityDesignerTheme(typeof(InvokeMethodDesignerTheme))] internal class CallExternalMethodActivityDesigner : ActivityDesigner { protected override void PreFilterProperties(IDictionary properties) { base.PreFilterProperties(properties); CallExternalMethodActivity invokeMethod = Activity as CallExternalMethodActivity; object corrRefProperty = properties["CorrelationToken"]; AddRemoveCorrelationToken(invokeMethod.InterfaceType, properties, corrRefProperty); Type type = invokeMethod.InterfaceType; if (type == null) return; AddRemoveCorrelationToken(type, properties, corrRefProperty); invokeMethod.GetParameterPropertyDescriptors(properties); } private void AddRemoveCorrelationToken(Type interfaceType, IDictionary properties, object corrRefProperty) { if (interfaceType != null) { object[] corrProvAttribs = interfaceType.GetCustomAttributes(typeof(CorrelationProviderAttribute), false); object[] corrParamAttribs = interfaceType.GetCustomAttributes(typeof(CorrelationParameterAttribute), false); if (corrProvAttribs.Length != 0 || corrParamAttribs.Length != 0) { if (!properties.Contains("CorrelationToken")) properties.Add("CorrelationToken", corrRefProperty); return; } } if (properties.Contains("CorrelationToken")) properties.Remove("CorrelationToken"); } protected override void OnActivityChanged(ActivityChangedEventArgs e) { base.OnActivityChanged(e); if (e.Member != null) { if (e.Member.Name == "InterfaceType") { if (Activity.Site != null) { Type interfaceType = e.NewValue as Type; if (interfaceType != null) new ExternalDataExchangeInterfaceTypeFilterProvider(Activity.Site).CanFilterType(interfaceType, true); CallExternalMethodActivity invokeActivity = e.Activity as CallExternalMethodActivity; PropertyDescriptorUtils.SetPropertyValue(Activity.Site, TypeDescriptor.GetProperties(Activity)["MethodName"], Activity, String.Empty); IExtendedUIService extUIService = (IExtendedUIService)Activity.Site.GetService(typeof(IExtendedUIService)); if (extUIService == null) throw new Exception(SR.GetString(SR.General_MissingService, typeof(IExtendedUIService).FullName)); } } if ((e.Member.Name == "MethodName") && e.Activity is CallExternalMethodActivity) (e.Activity as CallExternalMethodActivity).ParameterBindings.Clear(); if (e.Member.Name == "InterfaceType" || e.Member.Name == "MethodName" || e.Member.Name == "CorrelationToken") TypeDescriptor.Refresh(e.Activity); } } } #endregion #region InvokeMethodDesignerTheme internal sealed class InvokeMethodDesignerTheme : ActivityDesignerTheme { public InvokeMethodDesignerTheme(WorkflowTheme theme) : base(theme) { this.ForeColor = Color.FromArgb(0xFF, 0x00, 0x00, 0x00); this.BorderColor = Color.FromArgb(0xFF, 0x73, 0x79, 0xA5); this.BorderStyle = DashStyle.Solid; this.BackColorStart = Color.FromArgb(0xFF, 0xDF, 0xE8, 0xFF); this.BackColorEnd = Color.FromArgb(0xFF, 0x95, 0xB3, 0xFF); this.BackgroundStyle = LinearGradientMode.Horizontal; } } #endregion } // 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
- XsltSettings.cs
- RunWorkerCompletedEventArgs.cs
- TextBoxView.cs
- VarRemapper.cs
- VideoDrawing.cs
- WmlValidatorAdapter.cs
- FactoryMaker.cs
- NetDispatcherFaultException.cs
- DataGridViewAutoSizeModeEventArgs.cs
- KeyValuePairs.cs
- IIS7WorkerRequest.cs
- SimpleWebHandlerParser.cs
- URLMembershipCondition.cs
- TextPenaltyModule.cs
- LocalIdKeyIdentifierClause.cs
- SafeHandles.cs
- ReadOnlyActivityGlyph.cs
- RadioButton.cs
- ChangeBlockUndoRecord.cs
- PointConverter.cs
- EntryWrittenEventArgs.cs
- ColumnWidthChangedEvent.cs
- COAUTHIDENTITY.cs
- ButtonBaseAutomationPeer.cs
- SettingsPropertyWrongTypeException.cs
- PropertyCollection.cs
- SchemaImporterExtensionElementCollection.cs
- ChineseLunisolarCalendar.cs
- codemethodreferenceexpression.cs
- ListViewAutomationPeer.cs
- FreezableOperations.cs
- ParameterDataSourceExpression.cs
- DropDownButton.cs
- WebPartTransformer.cs
- DetailsViewPagerRow.cs
- ConnectionProviderAttribute.cs
- Stackframe.cs
- Privilege.cs
- SQLBytes.cs
- BasePattern.cs
- SpecialFolderEnumConverter.cs
- UriScheme.cs
- PeerPresenceInfo.cs
- EncryptedPackageFilter.cs
- FileBasedResourceGroveler.cs
- ChannelTracker.cs
- PageCache.cs
- MultiView.cs
- PersonalizationStateInfoCollection.cs
- CodeAttributeArgumentCollection.cs
- UrlAuthFailedErrorFormatter.cs
- CLRBindingWorker.cs
- CodeSnippetStatement.cs
- ScriptingSectionGroup.cs
- TreeNode.cs
- TypeViewSchema.cs
- _ListenerRequestStream.cs
- ModulesEntry.cs
- Permission.cs
- CharConverter.cs
- FontConverter.cs
- PropertyNames.cs
- TemplatedWizardStep.cs
- XmlDocumentSurrogate.cs
- DisplayClaim.cs
- LayoutEvent.cs
- OleDbStruct.cs
- SurrogateEncoder.cs
- DoneReceivingAsyncResult.cs
- SqlDataSourceConfigureSelectPanel.cs
- StackOverflowException.cs
- PointLightBase.cs
- TdsParser.cs
- TextDecoration.cs
- SyncOperationState.cs
- UnwrappedTypesXmlSerializerManager.cs
- ToolStripItem.cs
- GPRECTF.cs
- FrameworkReadOnlyPropertyMetadata.cs
- CommandDesigner.cs
- SettingsPropertyCollection.cs
- DataPagerCommandEventArgs.cs
- NameSpaceExtractor.cs
- CompilerInfo.cs
- TaiwanLunisolarCalendar.cs
- SqlParameterizer.cs
- WebEventTraceProvider.cs
- OdbcHandle.cs
- StringUtil.cs
- SqlCacheDependencyDatabase.cs
- OuterGlowBitmapEffect.cs
- SymmetricAlgorithm.cs
- DrawingGroup.cs
- DataRow.cs
- XmlEntity.cs
- PackagePartCollection.cs
- TabControlEvent.cs
- UITypeEditor.cs
- UniqueEventHelper.cs
- SqlNamer.cs