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
- CellPartitioner.cs
- EditorAttributeInfo.cs
- MultipartIdentifier.cs
- XmlSchemaSequence.cs
- XmlUtf8RawTextWriter.cs
- SQLChars.cs
- OLEDB_Util.cs
- OrderingInfo.cs
- NodeInfo.cs
- TextBoxAutoCompleteSourceConverter.cs
- User.cs
- CommandID.cs
- SafePointer.cs
- CaseInsensitiveComparer.cs
- sortedlist.cs
- basevalidator.cs
- AsyncPostBackErrorEventArgs.cs
- SecurityCriticalDataForSet.cs
- EmbeddedMailObject.cs
- ISAPIApplicationHost.cs
- DeflateEmulationStream.cs
- DiagnosticTrace.cs
- DoubleSumAggregationOperator.cs
- FrameSecurityDescriptor.cs
- UxThemeWrapper.cs
- DesignTimeVisibleAttribute.cs
- CodeParameterDeclarationExpressionCollection.cs
- GAC.cs
- IdnElement.cs
- ToolboxDataAttribute.cs
- UnsafeNativeMethods.cs
- JoinQueryOperator.cs
- EntitySqlException.cs
- DataServiceRequestOfT.cs
- CodeTypeMember.cs
- OdbcInfoMessageEvent.cs
- BoolExpression.cs
- PositiveTimeSpanValidator.cs
- InfoCardCryptoHelper.cs
- StackOverflowException.cs
- HttpConfigurationContext.cs
- BamlTreeMap.cs
- DataServiceConfiguration.cs
- TableNameAttribute.cs
- EffectiveValueEntry.cs
- X509WindowsSecurityToken.cs
- CheckPair.cs
- PagerSettings.cs
- IxmlLineInfo.cs
- RichTextBoxAutomationPeer.cs
- SchemaNamespaceManager.cs
- ReflectTypeDescriptionProvider.cs
- RuntimeVariableList.cs
- DurableTimerExtension.cs
- FileCodeGroup.cs
- AssociationTypeEmitter.cs
- OdbcErrorCollection.cs
- UnitControl.cs
- LifetimeServices.cs
- DesignerDataParameter.cs
- ColorInterpolationModeValidation.cs
- _Rfc2616CacheValidators.cs
- PageAsyncTask.cs
- PathSegment.cs
- AttachedProperty.cs
- KeyConstraint.cs
- SortQuery.cs
- SdlChannelSink.cs
- HttpCapabilitiesEvaluator.cs
- DataControlFieldCell.cs
- DataServiceRequestOfT.cs
- DataGridRow.cs
- LongValidatorAttribute.cs
- IdnMapping.cs
- ComboBox.cs
- XsdBuilder.cs
- DataGridViewSelectedRowCollection.cs
- COM2IVsPerPropertyBrowsingHandler.cs
- WinEventTracker.cs
- JavaScriptString.cs
- WizardStepBase.cs
- ThreadExceptionEvent.cs
- ProviderConnectionPointCollection.cs
- FixedFlowMap.cs
- Cloud.cs
- XmlEnumAttribute.cs
- OutgoingWebResponseContext.cs
- SmtpNetworkElement.cs
- DataObject.cs
- DataStreams.cs
- BaseDataList.cs
- Events.cs
- ProgressiveCrcCalculatingStream.cs
- ClientTargetCollection.cs
- PageMediaSize.cs
- TagPrefixInfo.cs
- ListItem.cs
- followingsibling.cs
- InlineCollection.cs
- SynchronizedMessageSource.cs