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
- ContextProperty.cs
- RowUpdatingEventArgs.cs
- ArrayWithOffset.cs
- ChannelManager.cs
- NamedObject.cs
- RoleGroup.cs
- RawStylusInputReport.cs
- NamespaceEmitter.cs
- InputChannel.cs
- XmlWriterDelegator.cs
- PropertyPath.cs
- CharacterHit.cs
- SystemGatewayIPAddressInformation.cs
- COSERVERINFO.cs
- SQLRoleProvider.cs
- ResourceSet.cs
- __Error.cs
- DataSourceHelper.cs
- DeflateEmulationStream.cs
- CollectionDataContractAttribute.cs
- ApplicationSecurityInfo.cs
- serverconfig.cs
- NavigationHelper.cs
- BooleanExpr.cs
- ObfuscateAssemblyAttribute.cs
- StickyNoteAnnotations.cs
- StringHandle.cs
- COM2ExtendedTypeConverter.cs
- RichTextBoxAutomationPeer.cs
- ProfileProvider.cs
- Logging.cs
- CollectionBuilder.cs
- DependencyObjectType.cs
- RSAPKCS1KeyExchangeFormatter.cs
- WebScriptMetadataFormatter.cs
- RootBrowserWindowAutomationPeer.cs
- StyleCollection.cs
- SqlTypeConverter.cs
- XmlNavigatorStack.cs
- EventLogPermissionAttribute.cs
- XmlSignatureManifest.cs
- TextShapeableCharacters.cs
- SystemColors.cs
- CompilerTypeWithParams.cs
- EnvelopedPkcs7.cs
- StoreAnnotationsMap.cs
- DateTimeFormatInfo.cs
- _NestedMultipleAsyncResult.cs
- BoundPropertyEntry.cs
- _NegoStream.cs
- NodeLabelEditEvent.cs
- CompositeDuplexBindingElement.cs
- XPathScanner.cs
- initElementDictionary.cs
- ElementHost.cs
- MessageContractExporter.cs
- ServiceHttpModule.cs
- ImageFormat.cs
- QueuePathDialog.cs
- XmlComplianceUtil.cs
- PagesSection.cs
- Comparer.cs
- UdpRetransmissionSettings.cs
- MatchNoneMessageFilter.cs
- TreeNodeBinding.cs
- RC2.cs
- MarshalByValueComponent.cs
- StringSorter.cs
- SafeArrayRankMismatchException.cs
- NamespaceCollection.cs
- XmlSequenceWriter.cs
- ReadOnlyDataSource.cs
- FileAccessException.cs
- ConsoleTraceListener.cs
- cryptoapiTransform.cs
- Size.cs
- _emptywebproxy.cs
- ComboBoxAutomationPeer.cs
- SiteMapProvider.cs
- EntityKey.cs
- Thumb.cs
- NotCondition.cs
- HtmlImage.cs
- WaitHandleCannotBeOpenedException.cs
- StringToken.cs
- Int16Converter.cs
- PropertyInformationCollection.cs
- CTreeGenerator.cs
- StackBuilderSink.cs
- EmptyEnumerator.cs
- AttributeAction.cs
- DataTrigger.cs
- RequestQueue.cs
- Table.cs
- DbProviderManifest.cs
- ComponentCommands.cs
- TailCallAnalyzer.cs
- RtfControls.cs
- DrawingBrush.cs
- AuditLog.cs