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
- LookupNode.cs
- Pkcs7Recipient.cs
- TdsParserStateObject.cs
- XmlEncoding.cs
- InternalSafeNativeMethods.cs
- DataBindEngine.cs
- Control.cs
- AutoResetEvent.cs
- PaperSize.cs
- NTAccount.cs
- ManipulationPivot.cs
- XmlSchemaElement.cs
- HostedElements.cs
- _HTTPDateParse.cs
- ToolStripRendererSwitcher.cs
- ExceptionUtil.cs
- TableParagraph.cs
- SharedUtils.cs
- InvalidOperationException.cs
- FileVersionInfo.cs
- DbProviderFactory.cs
- TypefaceCollection.cs
- FaultHandlingFilter.cs
- XmlQualifiedNameTest.cs
- CriticalHandle.cs
- BuildTopDownAttribute.cs
- CodeTypeReference.cs
- SoapFormatter.cs
- MobileTemplatedControlDesigner.cs
- PeerInputChannel.cs
- TextContainerChangedEventArgs.cs
- PeerChannelFactory.cs
- DefaultPropertyAttribute.cs
- PermissionToken.cs
- Bidi.cs
- comcontractssection.cs
- NetDataContractSerializer.cs
- TextBlock.cs
- SafeTimerHandle.cs
- PrePostDescendentsWalker.cs
- SamlAssertionKeyIdentifierClause.cs
- OleCmdHelper.cs
- DesignParameter.cs
- PermissionListSet.cs
- Size.cs
- HttpClientCertificate.cs
- DisplayNameAttribute.cs
- QilFunction.cs
- ThrowHelper.cs
- CreateUserWizardStep.cs
- CustomBindingElement.cs
- EditingCoordinator.cs
- HTMLTextWriter.cs
- PackagePart.cs
- NetworkInformationPermission.cs
- Binding.cs
- WindowsStreamSecurityBindingElement.cs
- SqlAggregateChecker.cs
- Helper.cs
- ExpandSegmentCollection.cs
- BaseValidatorDesigner.cs
- TextSearch.cs
- ObjectConverter.cs
- HttpRequestWrapper.cs
- APCustomTypeDescriptor.cs
- HyperLink.cs
- TableAdapterManagerGenerator.cs
- CanonicalizationDriver.cs
- CodeAttributeArgumentCollection.cs
- OdbcError.cs
- ToolStripItemImageRenderEventArgs.cs
- _MultipleConnectAsync.cs
- KeysConverter.cs
- ThemeDirectoryCompiler.cs
- BamlLocalizabilityResolver.cs
- ProcessModelSection.cs
- log.cs
- GridViewSortEventArgs.cs
- SmtpClient.cs
- InputReport.cs
- Selection.cs
- ResourceDisplayNameAttribute.cs
- indexingfiltermarshaler.cs
- SwitchAttribute.cs
- SessionParameter.cs
- LogPolicy.cs
- WebPartsPersonalization.cs
- InstanceDataCollectionCollection.cs
- SQLInt16Storage.cs
- JoinElimination.cs
- ServiceDocumentFormatter.cs
- OdbcParameterCollection.cs
- CustomErrorsSectionWrapper.cs
- CompareInfo.cs
- PropertyTabAttribute.cs
- ExcludeFromCodeCoverageAttribute.cs
- FixedFindEngine.cs
- SecurityVersion.cs
- XmlDataSource.cs
- TextBoxBase.cs