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
- PointKeyFrameCollection.cs
- localization.cs
- CodePageUtils.cs
- AuthenticationModuleElementCollection.cs
- AxisAngleRotation3D.cs
- WS2007FederationHttpBindingElement.cs
- HelpKeywordAttribute.cs
- OleDbPermission.cs
- TextViewSelectionProcessor.cs
- TargetConverter.cs
- CodeNamespaceImport.cs
- _DisconnectOverlappedAsyncResult.cs
- Accessible.cs
- WSAddressing10ProblemHeaderQNameFault.cs
- SvcFileManager.cs
- ActivityExecutionContextCollection.cs
- UpdateRecord.cs
- sortedlist.cs
- SchemaTableColumn.cs
- MsmqMessageSerializationFormat.cs
- DeriveBytes.cs
- DateTimeUtil.cs
- util.cs
- XmlElementAttribute.cs
- Size.cs
- AudioDeviceOut.cs
- DataGridBoolColumn.cs
- WebBrowserHelper.cs
- DataObjectEventArgs.cs
- CodeSnippetStatement.cs
- PassportPrincipal.cs
- Typography.cs
- HierarchicalDataSourceControl.cs
- ExeContext.cs
- ScrollableControl.cs
- ListCommandEventArgs.cs
- IssuerInformation.cs
- XslException.cs
- DecimalAnimation.cs
- XmlSignatureManifest.cs
- TableFieldsEditor.cs
- NativeMethods.cs
- Bitmap.cs
- ComponentSerializationService.cs
- LogStream.cs
- PerformanceCounterPermission.cs
- LoginUtil.cs
- DoubleCollectionConverter.cs
- MailFileEditor.cs
- CustomPopupPlacement.cs
- RegistrationServices.cs
- ResourceDescriptionAttribute.cs
- StateMachineWorkflowDesigner.cs
- XmlEncoding.cs
- InvalidWMPVersionException.cs
- CodeDomSerializationProvider.cs
- WebPartsPersonalizationAuthorization.cs
- StringExpressionSet.cs
- PropertiesTab.cs
- XmlSchemaInfo.cs
- SecurityTokenException.cs
- CompilationRelaxations.cs
- ElementsClipboardData.cs
- WizardPanelChangingEventArgs.cs
- MouseCaptureWithinProperty.cs
- TextRenderingModeValidation.cs
- XmlSchemaExternal.cs
- HttpServerChannel.cs
- CAGDesigner.cs
- EventToken.cs
- LogWriteRestartAreaAsyncResult.cs
- Path.cs
- ChangeDirector.cs
- Font.cs
- BeginEvent.cs
- PromptEventArgs.cs
- BuildResultCache.cs
- MessageLogTraceRecord.cs
- StrokeNodeEnumerator.cs
- TemplateContent.cs
- Rect.cs
- ListViewInsertEventArgs.cs
- CommandManager.cs
- TcpClientChannel.cs
- MSAAEventDispatcher.cs
- StateDesigner.Layouts.cs
- SharedPerformanceCounter.cs
- CommunicationException.cs
- Base64Encoding.cs
- InstanceContextManager.cs
- WindowsTreeView.cs
- DetailsViewUpdateEventArgs.cs
- securitymgrsite.cs
- CommandConverter.cs
- ReflectionTypeLoadException.cs
- LineUtil.cs
- ScriptDescriptor.cs
- TouchesOverProperty.cs
- PixelShader.cs
- CodeCatchClause.cs