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
- TextSelection.cs
- Ref.cs
- WindowsStatic.cs
- SqlReferenceCollection.cs
- AttachInfo.cs
- Maps.cs
- LayoutUtils.cs
- PageRequestManager.cs
- DatagridviewDisplayedBandsData.cs
- LabelAutomationPeer.cs
- ScriptControl.cs
- BlurBitmapEffect.cs
- FontStyles.cs
- EventProviderClassic.cs
- SQLUtility.cs
- ApplicationTrust.cs
- ClientTarget.cs
- WindowsSpinner.cs
- MemoryMappedFile.cs
- CategoryList.cs
- ConnectorDragDropGlyph.cs
- TrustSection.cs
- EntityCommand.cs
- EntityParameterCollection.cs
- ListenerConfig.cs
- RenderingBiasValidation.cs
- SqlTrackingService.cs
- SkinBuilder.cs
- PageCache.cs
- DefaultAsyncDataDispatcher.cs
- Form.cs
- CharEntityEncoderFallback.cs
- QueryProcessor.cs
- panel.cs
- VariableDesigner.xaml.cs
- StructuredTypeEmitter.cs
- BCLDebug.cs
- StreamReader.cs
- SourceFilter.cs
- TypeDescriptionProviderAttribute.cs
- RangeValidator.cs
- AccessDataSource.cs
- ActivityBindForm.Designer.cs
- CombinedGeometry.cs
- CompilerHelpers.cs
- DatatypeImplementation.cs
- TypeToken.cs
- TemplatingOptionsDialog.cs
- xdrvalidator.cs
- Shared.cs
- TabControl.cs
- ScaleTransform3D.cs
- HashCryptoHandle.cs
- Ppl.cs
- CodeIterationStatement.cs
- TileModeValidation.cs
- FixUpCollection.cs
- ICollection.cs
- FormViewInsertedEventArgs.cs
- DoubleSumAggregationOperator.cs
- SessionStateContainer.cs
- XmlIgnoreAttribute.cs
- AttributeExtensions.cs
- ValidationError.cs
- MaskedTextBoxDesigner.cs
- CollectionChangedEventManager.cs
- EntitySqlQueryBuilder.cs
- XmlSchemaType.cs
- EndpointAddressElementBase.cs
- OdbcError.cs
- ManagementObject.cs
- DecoderFallbackWithFailureFlag.cs
- DataListItemCollection.cs
- TreeNodeClickEventArgs.cs
- Win32.cs
- DockProviderWrapper.cs
- FillErrorEventArgs.cs
- EditorAttribute.cs
- LoginCancelEventArgs.cs
- HitTestFilterBehavior.cs
- GridViewRowCollection.cs
- EncryptedData.cs
- BufferedGraphicsContext.cs
- IItemContainerGenerator.cs
- Model3DCollection.cs
- SoapFormatter.cs
- FlowLayout.cs
- DataBinding.cs
- SoapReflector.cs
- ServerValidateEventArgs.cs
- TreeIterator.cs
- ExternalCalls.cs
- ToolStripArrowRenderEventArgs.cs
- MethodExpression.cs
- RMPublishingDialog.cs
- DictionaryEntry.cs
- MsmqInputMessagePool.cs
- MetadataReference.cs
- StreamMarshaler.cs
- RoleService.cs