Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WF / Activities / Designers / InvokeWebServiceDesigner.cs / 1305376 / InvokeWebServiceDesigner.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.Design; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Design; using System.Runtime.Serialization; using System.Workflow.ComponentModel.Compiler; using System.ComponentModel.Design.Serialization; using System.Collections.Specialized; using System.Xml; using System.Web.Services.Protocols; using System.Windows.Forms.Design; using System.Security.Permissions; using System.Workflow.Activities.Common; #region Class InvokeWebServiceToolboxItem [Serializable] internal sealed class InvokeWebServiceToolboxItem: ActivityToolboxItem { public InvokeWebServiceToolboxItem(Type type) : base(type) { } private InvokeWebServiceToolboxItem(SerializationInfo info, StreamingContext context) { base.Deserialize(info, context); } public override IComponent[] CreateComponentsWithUI(IDesignerHost host) { Uri url = null; Type proxyClass = null; IExtendedUIService extUIService = host.GetService(typeof(IExtendedUIService)) as IExtendedUIService; if (extUIService != null) extUIService.AddWebReference(out url, out proxyClass); IComponent[] components = base.CreateComponentsWithUI(host); if (components.GetLength(0) > 0) { InvokeWebServiceActivity webService = components[0] as InvokeWebServiceActivity; if (webService != null) webService.ProxyClass = proxyClass; } return components; } } #endregion #region Class InvokeWebServiceDesigner [ActivityDesignerTheme(typeof(InvokeWebServiceDesignerTheme))] internal sealed class InvokeWebServiceDesigner: ActivityDesigner { #region Members, Constructor and Destructor private string url = null; #endregion #region Properties and Methods protected override void PreFilterProperties(IDictionary properties) { base.PreFilterProperties(properties); if (properties["URL"] == null) properties["URL"] = new WebServiceUrlPropertyDescriptor(Activity.Site, TypeDescriptor.CreateProperty(this.GetType(), "URL", typeof(string), DesignOnlyAttribute.Yes, MergablePropertyAttribute.No)); // ITypeProvider typeProvider = (ITypeProvider)GetService(typeof(ITypeProvider)); if (typeProvider == null) throw new InvalidOperationException(SR.GetString(SR.General_MissingService, typeof(ITypeProvider).FullName)); InvokeWebServiceActivity invokeWebService = Activity as InvokeWebServiceActivity; invokeWebService.GetParameterPropertyDescriptors(properties); } [SRCategory(SR.Activity)] [SRDescription(SR.URLDescr)] [Editor(typeof(WebServicePickerEditor), typeof(UITypeEditor))] [RefreshProperties(RefreshProperties.All)] public string URL { get { if (this.url == null) { InvokeWebServiceActivity invokeWebServiceDecl = Activity as InvokeWebServiceActivity; IExtendedUIService extUIService = (IExtendedUIService)Activity.Site.GetService(typeof(IExtendedUIService)); if (extUIService != null && invokeWebServiceDecl.ProxyClass != null) { Uri uri = extUIService.GetUrlForProxyClass(invokeWebServiceDecl.ProxyClass); this.url = (uri != null) ? uri.ToString() : string.Empty; } } return this.url; } set { if (this.url != value) { this.url = value; IExtendedUIService extUIService = (IExtendedUIService)Activity.Site.GetService(typeof(IExtendedUIService)); if (extUIService == null) throw new InvalidOperationException(SR.GetString(SR.General_MissingService, typeof(IExtendedUIService).FullName)); //Create the designer transaction DesignerTransaction trans = null; IDesignerHost host = Activity.Site.GetService(typeof(IDesignerHost)) as IDesignerHost; if (host != null) trans = host.CreateTransaction(SR.GetString(SR.ChangingVariable)); try { PropertyDescriptorUtils.SetPropertyValue(Activity.Site, TypeDescriptor.GetProperties(Activity)["ProxyClass"], Activity, string.IsNullOrEmpty(this.url) ? null : extUIService.GetProxyClassForUrl(new Uri(this.url))); if (trans != null) trans.Commit(); } finally { if (trans != null) ((IDisposable)trans).Dispose(); } } } } protected override void OnActivityChanged(ActivityChangedEventArgs e) { base.OnActivityChanged(e); if (e.Member != null) { if (e.Member.Name == "ProxyClass") { if (Activity.Site != null) { InvokeWebServiceActivity invokeWebServiceDecl = e.Activity as InvokeWebServiceActivity; 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 (invokeWebServiceDecl.ProxyClass == null) { this.url = null; } else { Uri uri = extUIService.GetUrlForProxyClass(invokeWebServiceDecl.ProxyClass); this.url = (uri != null) ? uri.ToString() : string.Empty; } } } if ((e.Member.Name == "MethodName" || e.Member.Name == "TargetWorkflow") && e.Activity is InvokeWebServiceActivity) (e.Activity as InvokeWebServiceActivity).ParameterBindings.Clear(); if (e.Member.Name == "ProxyClass" || e.Member.Name == "MethodName") TypeDescriptor.Refresh(e.Activity); } } #endregion } #endregion #region InvokeWebServiceDesignerTheme internal sealed class InvokeWebServiceDesignerTheme : ActivityDesignerTheme { public InvokeWebServiceDesignerTheme(WorkflowTheme theme) : base(theme) { this.ForeColor = Color.FromArgb(0xFF, 0x00, 0x00, 0x00); this.BorderColor = Color.FromArgb(0xFF, 0x94, 0xB6, 0xF7); this.BorderStyle = DashStyle.Solid; this.BackColorStart = Color.FromArgb(0xFF, 0xFF, 0xFF, 0xFF); this.BackColorEnd = Color.FromArgb(0xFF, 0xA5, 0xC3, 0xF7); this.BackgroundStyle = LinearGradientMode.Horizontal; } } #endregion #region Class WebServiceUrlPropertyDescriptor internal sealed class WebServiceUrlPropertyDescriptor : DynamicPropertyDescriptor { internal WebServiceUrlPropertyDescriptor(IServiceProvider serviceProvider, PropertyDescriptor pd) : base(serviceProvider, pd) { } public override bool IsReadOnly { get { return true; } } } #endregion [PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")] internal sealed class WebServicePickerEditor : UITypeEditor { private IWindowsFormsEditorService editorService; public WebServicePickerEditor() { } public override object EditValue(ITypeDescriptorContext typeDescriptorContext, IServiceProvider serviceProvider, object o) { object returnVal = o; this.editorService = (IWindowsFormsEditorService)serviceProvider.GetService(typeof(IWindowsFormsEditorService)); IExtendedUIService extUIService = (IExtendedUIService)serviceProvider.GetService(typeof(IExtendedUIService)); if (editorService != null && extUIService != null) { Uri url = null; Type proxyClass = null; if (DialogResult.OK == extUIService.AddWebReference(out url, out proxyClass)) { returnVal = (url != null) ? url.ToString() : string.Empty; typeDescriptorContext.PropertyDescriptor.SetValue(typeDescriptorContext.Instance, returnVal as string); } } return returnVal; } public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext typeDescriptorContext) { return UITypeEditorEditStyle.Modal; } } } // 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.Design; using System.Drawing; using System.Drawing.Drawing2D; using System.Windows.Forms; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Design; using System.Runtime.Serialization; using System.Workflow.ComponentModel.Compiler; using System.ComponentModel.Design.Serialization; using System.Collections.Specialized; using System.Xml; using System.Web.Services.Protocols; using System.Windows.Forms.Design; using System.Security.Permissions; using System.Workflow.Activities.Common; #region Class InvokeWebServiceToolboxItem [Serializable] internal sealed class InvokeWebServiceToolboxItem: ActivityToolboxItem { public InvokeWebServiceToolboxItem(Type type) : base(type) { } private InvokeWebServiceToolboxItem(SerializationInfo info, StreamingContext context) { base.Deserialize(info, context); } public override IComponent[] CreateComponentsWithUI(IDesignerHost host) { Uri url = null; Type proxyClass = null; IExtendedUIService extUIService = host.GetService(typeof(IExtendedUIService)) as IExtendedUIService; if (extUIService != null) extUIService.AddWebReference(out url, out proxyClass); IComponent[] components = base.CreateComponentsWithUI(host); if (components.GetLength(0) > 0) { InvokeWebServiceActivity webService = components[0] as InvokeWebServiceActivity; if (webService != null) webService.ProxyClass = proxyClass; } return components; } } #endregion #region Class InvokeWebServiceDesigner [ActivityDesignerTheme(typeof(InvokeWebServiceDesignerTheme))] internal sealed class InvokeWebServiceDesigner: ActivityDesigner { #region Members, Constructor and Destructor private string url = null; #endregion #region Properties and Methods protected override void PreFilterProperties(IDictionary properties) { base.PreFilterProperties(properties); if (properties["URL"] == null) properties["URL"] = new WebServiceUrlPropertyDescriptor(Activity.Site, TypeDescriptor.CreateProperty(this.GetType(), "URL", typeof(string), DesignOnlyAttribute.Yes, MergablePropertyAttribute.No)); // ITypeProvider typeProvider = (ITypeProvider)GetService(typeof(ITypeProvider)); if (typeProvider == null) throw new InvalidOperationException(SR.GetString(SR.General_MissingService, typeof(ITypeProvider).FullName)); InvokeWebServiceActivity invokeWebService = Activity as InvokeWebServiceActivity; invokeWebService.GetParameterPropertyDescriptors(properties); } [SRCategory(SR.Activity)] [SRDescription(SR.URLDescr)] [Editor(typeof(WebServicePickerEditor), typeof(UITypeEditor))] [RefreshProperties(RefreshProperties.All)] public string URL { get { if (this.url == null) { InvokeWebServiceActivity invokeWebServiceDecl = Activity as InvokeWebServiceActivity; IExtendedUIService extUIService = (IExtendedUIService)Activity.Site.GetService(typeof(IExtendedUIService)); if (extUIService != null && invokeWebServiceDecl.ProxyClass != null) { Uri uri = extUIService.GetUrlForProxyClass(invokeWebServiceDecl.ProxyClass); this.url = (uri != null) ? uri.ToString() : string.Empty; } } return this.url; } set { if (this.url != value) { this.url = value; IExtendedUIService extUIService = (IExtendedUIService)Activity.Site.GetService(typeof(IExtendedUIService)); if (extUIService == null) throw new InvalidOperationException(SR.GetString(SR.General_MissingService, typeof(IExtendedUIService).FullName)); //Create the designer transaction DesignerTransaction trans = null; IDesignerHost host = Activity.Site.GetService(typeof(IDesignerHost)) as IDesignerHost; if (host != null) trans = host.CreateTransaction(SR.GetString(SR.ChangingVariable)); try { PropertyDescriptorUtils.SetPropertyValue(Activity.Site, TypeDescriptor.GetProperties(Activity)["ProxyClass"], Activity, string.IsNullOrEmpty(this.url) ? null : extUIService.GetProxyClassForUrl(new Uri(this.url))); if (trans != null) trans.Commit(); } finally { if (trans != null) ((IDisposable)trans).Dispose(); } } } } protected override void OnActivityChanged(ActivityChangedEventArgs e) { base.OnActivityChanged(e); if (e.Member != null) { if (e.Member.Name == "ProxyClass") { if (Activity.Site != null) { InvokeWebServiceActivity invokeWebServiceDecl = e.Activity as InvokeWebServiceActivity; 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 (invokeWebServiceDecl.ProxyClass == null) { this.url = null; } else { Uri uri = extUIService.GetUrlForProxyClass(invokeWebServiceDecl.ProxyClass); this.url = (uri != null) ? uri.ToString() : string.Empty; } } } if ((e.Member.Name == "MethodName" || e.Member.Name == "TargetWorkflow") && e.Activity is InvokeWebServiceActivity) (e.Activity as InvokeWebServiceActivity).ParameterBindings.Clear(); if (e.Member.Name == "ProxyClass" || e.Member.Name == "MethodName") TypeDescriptor.Refresh(e.Activity); } } #endregion } #endregion #region InvokeWebServiceDesignerTheme internal sealed class InvokeWebServiceDesignerTheme : ActivityDesignerTheme { public InvokeWebServiceDesignerTheme(WorkflowTheme theme) : base(theme) { this.ForeColor = Color.FromArgb(0xFF, 0x00, 0x00, 0x00); this.BorderColor = Color.FromArgb(0xFF, 0x94, 0xB6, 0xF7); this.BorderStyle = DashStyle.Solid; this.BackColorStart = Color.FromArgb(0xFF, 0xFF, 0xFF, 0xFF); this.BackColorEnd = Color.FromArgb(0xFF, 0xA5, 0xC3, 0xF7); this.BackgroundStyle = LinearGradientMode.Horizontal; } } #endregion #region Class WebServiceUrlPropertyDescriptor internal sealed class WebServiceUrlPropertyDescriptor : DynamicPropertyDescriptor { internal WebServiceUrlPropertyDescriptor(IServiceProvider serviceProvider, PropertyDescriptor pd) : base(serviceProvider, pd) { } public override bool IsReadOnly { get { return true; } } } #endregion [PermissionSetAttribute(SecurityAction.LinkDemand, Name = "FullTrust")] internal sealed class WebServicePickerEditor : UITypeEditor { private IWindowsFormsEditorService editorService; public WebServicePickerEditor() { } public override object EditValue(ITypeDescriptorContext typeDescriptorContext, IServiceProvider serviceProvider, object o) { object returnVal = o; this.editorService = (IWindowsFormsEditorService)serviceProvider.GetService(typeof(IWindowsFormsEditorService)); IExtendedUIService extUIService = (IExtendedUIService)serviceProvider.GetService(typeof(IExtendedUIService)); if (editorService != null && extUIService != null) { Uri url = null; Type proxyClass = null; if (DialogResult.OK == extUIService.AddWebReference(out url, out proxyClass)) { returnVal = (url != null) ? url.ToString() : string.Empty; typeDescriptorContext.PropertyDescriptor.SetValue(typeDescriptorContext.Instance, returnVal as string); } } return returnVal; } public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext typeDescriptorContext) { return UITypeEditorEditStyle.Modal; } } } // 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
- ThrowHelper.cs
- PrintPreviewGraphics.cs
- Point.cs
- DataColumn.cs
- HtmlContainerControl.cs
- DesignTimeParseData.cs
- WebColorConverter.cs
- Message.cs
- DesignTimeParseData.cs
- GroupBox.cs
- PathGeometry.cs
- SerializationInfoEnumerator.cs
- SafeRightsManagementQueryHandle.cs
- TimeZone.cs
- TransactionTraceIdentifier.cs
- TypeDescriptionProvider.cs
- InvalidDataException.cs
- VideoDrawing.cs
- MaskedTextProvider.cs
- ScrollEvent.cs
- Maps.cs
- NoneExcludedImageIndexConverter.cs
- Stack.cs
- PropertyGridDesigner.cs
- ParameterBuilder.cs
- RepeaterCommandEventArgs.cs
- XmlSchemaComplexType.cs
- FixedSOMTable.cs
- ServiceBuildProvider.cs
- StorageEntityContainerMapping.cs
- Route.cs
- LinqDataSourceValidationException.cs
- Authorization.cs
- DataSourceExpression.cs
- MeasurementDCInfo.cs
- BitmapMetadataEnumerator.cs
- DataShape.cs
- DateRangeEvent.cs
- AnonymousIdentificationSection.cs
- DataGridViewRowHeaderCell.cs
- ScriptingScriptResourceHandlerSection.cs
- FormatStringEditor.cs
- HandlerBase.cs
- oledbconnectionstring.cs
- _SslState.cs
- ConnectionStringSettingsCollection.cs
- UpdateEventArgs.cs
- SqlCachedBuffer.cs
- httpserverutility.cs
- WpfWebRequestHelper.cs
- WebPartDisplayModeCancelEventArgs.cs
- PixelFormatConverter.cs
- QuaternionAnimation.cs
- IteratorDescriptor.cs
- PointConverter.cs
- XmlNavigatorFilter.cs
- MethodSet.cs
- XmlIterators.cs
- ClientSession.cs
- CodeComment.cs
- IntellisenseTextBox.designer.cs
- StyleModeStack.cs
- XomlCompiler.cs
- PrimitiveCodeDomSerializer.cs
- CanonicalizationDriver.cs
- SqlStream.cs
- XmlTextWriter.cs
- TogglePattern.cs
- WindowsFormsSectionHandler.cs
- SqlUdtInfo.cs
- SimpleMailWebEventProvider.cs
- XmlWriterTraceListener.cs
- TableColumn.cs
- ContainerVisual.cs
- ElementNotEnabledException.cs
- QilPatternFactory.cs
- HtmlPageAdapter.cs
- UserControlCodeDomTreeGenerator.cs
- WebPartVerbCollection.cs
- DependencyObjectType.cs
- AsymmetricKeyExchangeFormatter.cs
- ZipIOBlockManager.cs
- SoapMessage.cs
- IconBitmapDecoder.cs
- BitmapVisualManager.cs
- HeaderedItemsControl.cs
- TrackingDataItemValue.cs
- Filter.cs
- XamlParser.cs
- DataObjectEventArgs.cs
- DataMemberAttribute.cs
- BitmapEffectDrawing.cs
- AttributeProviderAttribute.cs
- InstancePersistenceException.cs
- TreeBuilderXamlTranslator.cs
- FontFamily.cs
- ListViewItem.cs
- EnumUnknown.cs
- SecurityHelper.cs
- EasingKeyFrames.cs