Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TemplateLookupAction.cs
- ByValueEqualityComparer.cs
- XmlSerializationWriter.cs
- BuildDependencySet.cs
- Literal.cs
- RenderData.cs
- SplayTreeNode.cs
- CompositeFontFamily.cs
- ThemeDirectoryCompiler.cs
- RegexCapture.cs
- PublisherIdentityPermission.cs
- Walker.cs
- PeerName.cs
- SymmetricCryptoHandle.cs
- WaitHandle.cs
- PenCursorManager.cs
- SecUtil.cs
- ObjectIDGenerator.cs
- Registry.cs
- Error.cs
- TreeViewImageIndexConverter.cs
- ToolStripPanelCell.cs
- EntityDataSourceViewSchema.cs
- ETagAttribute.cs
- PrintControllerWithStatusDialog.cs
- SQLStringStorage.cs
- XPathEmptyIterator.cs
- FullTextBreakpoint.cs
- GeneralTransform2DTo3D.cs
- FacetChecker.cs
- bindurihelper.cs
- HtmlLabelAdapter.cs
- ClientTarget.cs
- ResourceProviderFactory.cs
- HWStack.cs
- XmlEnumAttribute.cs
- SafeIUnknown.cs
- AdornerDecorator.cs
- SamlAction.cs
- RSAPKCS1SignatureFormatter.cs
- webclient.cs
- Size3DConverter.cs
- WebPartUtil.cs
- PathSegment.cs
- ItemsPresenter.cs
- WindowsImpersonationContext.cs
- BrowserCapabilitiesCompiler.cs
- SqlDataSourceWizardForm.cs
- StrokeNodeEnumerator.cs
- ConfigXmlWhitespace.cs
- EditorPartDesigner.cs
- _PooledStream.cs
- SystemWebCachingSectionGroup.cs
- WebPartEditorCancelVerb.cs
- MetadataCollection.cs
- WaitForChangedResult.cs
- RoutedCommand.cs
- ShimAsPublicXamlType.cs
- InputProcessorProfiles.cs
- EmptyEnumerator.cs
- RsaKeyIdentifierClause.cs
- EncodingInfo.cs
- Span.cs
- DocumentSequence.cs
- ClipboardProcessor.cs
- OdbcFactory.cs
- ChangePasswordDesigner.cs
- HtmlInputReset.cs
- StreamGeometryContext.cs
- MulticastDelegate.cs
- HtmlSelect.cs
- JpegBitmapDecoder.cs
- GlyphShapingProperties.cs
- CopyCodeAction.cs
- DataGridViewCellStyleChangedEventArgs.cs
- StringStorage.cs
- ApplicationActivator.cs
- XAMLParseException.cs
- NumericPagerField.cs
- VScrollProperties.cs
- StylusEventArgs.cs
- X509Extension.cs
- GeneralTransform3DTo2D.cs
- ProxyFragment.cs
- ClientClassGenerator.cs
- TextParagraphProperties.cs
- _ListenerResponseStream.cs
- ACL.cs
- VarRemapper.cs
- Quaternion.cs
- EndOfStreamException.cs
- ProfilePropertyNameValidator.cs
- DetailsViewInsertedEventArgs.cs
- TextElementCollection.cs
- DataGridViewRowConverter.cs
- HuffCodec.cs
- NamedElement.cs
- ResXResourceWriter.cs
- LiteralControl.cs
- SerializableTypeCodeDomSerializer.cs