Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- BoolExpr.cs
- DataGridViewCellCollection.cs
- RegisterResponseInfo.cs
- DataControlField.cs
- SQLSingleStorage.cs
- MatrixTransform3D.cs
- WeakHashtable.cs
- XmlDocumentSchema.cs
- WindowsListViewSubItem.cs
- DetailsViewPagerRow.cs
- BindingMAnagerBase.cs
- FamilyTypeface.cs
- SuppressMessageAttribute.cs
- ExpandedWrapper.cs
- CodeConditionStatement.cs
- XmlNodeChangedEventManager.cs
- XsltOutput.cs
- CompositeScriptReference.cs
- BufferAllocator.cs
- EmptyStringExpandableObjectConverter.cs
- MouseActionValueSerializer.cs
- WindowsGraphics2.cs
- GlobalizationAssembly.cs
- PageClientProxyGenerator.cs
- RtType.cs
- ValidationService.cs
- COM2ComponentEditor.cs
- MetadataArtifactLoaderCompositeResource.cs
- DocumentDesigner.cs
- CustomAttributeSerializer.cs
- WizardStepBase.cs
- CommandBindingCollection.cs
- SmiXetterAccessMap.cs
- SingleKeyFrameCollection.cs
- Camera.cs
- DataSpaceManager.cs
- RectValueSerializer.cs
- GradientStop.cs
- FreezableDefaultValueFactory.cs
- Collection.cs
- VerificationAttribute.cs
- WFItemsToSpacerVisibility.cs
- DynamicEndpointElement.cs
- XPathConvert.cs
- VisualTreeHelper.cs
- input.cs
- PluralizationService.cs
- PolyLineSegmentFigureLogic.cs
- Transform3D.cs
- SQLInt64.cs
- IdentifierService.cs
- CorrelationActionMessageFilter.cs
- EventSinkHelperWriter.cs
- StatusBarAutomationPeer.cs
- ChangeBlockUndoRecord.cs
- HttpCachePolicyElement.cs
- RichTextBox.cs
- EmptyElement.cs
- RuntimeConfigurationRecord.cs
- UserControlCodeDomTreeGenerator.cs
- Visitor.cs
- ErrorFormatterPage.cs
- UpdateRecord.cs
- ServiceReference.cs
- SqlConnectionFactory.cs
- RSAPKCS1SignatureDeformatter.cs
- SpeechRecognitionEngine.cs
- HtmlInputHidden.cs
- DeclarativeCatalogPart.cs
- DocumentXmlWriter.cs
- ShutDownListener.cs
- _NegoState.cs
- DataGridViewHeaderCell.cs
- AliasedExpr.cs
- RecognizerBase.cs
- NameValueConfigurationElement.cs
- MarshalByValueComponent.cs
- ServiceMetadataContractBehavior.cs
- UidManager.cs
- TypedDataSourceCodeGenerator.cs
- HasCopySemanticsAttribute.cs
- StatusBarPanelClickEvent.cs
- DataGridViewAccessibleObject.cs
- TypeSystemProvider.cs
- WebConfigManager.cs
- PaintValueEventArgs.cs
- XmlNamedNodeMap.cs
- PrimarySelectionAdorner.cs
- FormClosingEvent.cs
- SecurityElement.cs
- HashStream.cs
- SQLBytesStorage.cs
- COM2PictureConverter.cs
- DesignerAutoFormatCollection.cs
- NumberSubstitution.cs
- RelatedCurrencyManager.cs
- FileSecurity.cs
- FileIOPermission.cs
- SeekableMessageNavigator.cs
- MulticastDelegate.cs