Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.WorkflowServices / System / Workflow / Activities / ReceiveActivityDesigner.cs / 1305376 / ReceiveActivityDesigner.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.Workflow.Activities
{
using System.Collections;
using System.ComponentModel;
using System.Workflow.ComponentModel.Design;
using System.Drawing;
using System.Reflection;
using System.Workflow.ComponentModel;
using System.ComponentModel.Design;
using System.Workflow.Activities.Design;
using System.ServiceModel;
using System.Workflow.ComponentModel.Compiler;
using System.Windows.Forms;
[ActivityDesignerTheme(typeof(ReceiveActivityDesignerTheme))]
class ReceiveActivityDesigner : SequenceDesigner
{
static ActivityComparer matchByContractCallback;
static ActivityComparer matchByOperationCallback;
public override Size MinimumSize
{
get
{
return new Size(170, 80);
}
}
public override string Text
{
get
{
if (this.ReceiveActivity.ServiceOperationInfo != null)
{
string operationName = this.ReceiveActivity.ServiceOperationInfo.Name;
if (!String.IsNullOrEmpty(operationName))
{
return operationName;
}
}
return base.Text;
}
}
protected override ActivityDesignerVerbCollection Verbs
{
get
{
ActivityDesignerVerbCollection verbs = new ActivityDesignerVerbCollection();
foreach (ActivityDesignerVerb verb in base.Verbs)
{
verbs.Add(verb);
}
ActivityDesignerVerb findSimilarOperationsVerb = new FindSimilarActivitiesVerb(
this, MatchByOperationCallback, SR2.GetString(SR2.ShowActivitiesWithSameOperation));
verbs.Add(findSimilarOperationsVerb);
ActivityDesignerVerb findSimilarContractVerb = new FindSimilarActivitiesVerb(
this, MatchByContractCallback, SR2.GetString(SR2.ShowActivitiesWithSameContract));
verbs.Add(findSimilarContractVerb);
return verbs;
}
}
static ActivityComparer MatchByContractCallback
{
get
{
if (matchByContractCallback == null)
{
matchByContractCallback = new ActivityComparer(MatchByContract);
}
return matchByContractCallback;
}
}
static ActivityComparer MatchByOperationCallback
{
get
{
if (matchByOperationCallback == null)
{
matchByOperationCallback = new ActivityComparer(MatchByOperation);
}
return matchByOperationCallback;
}
}
ReceiveActivity ReceiveActivity
{
get { return this.Activity as ReceiveActivity; }
}
internal static bool MatchByContract(OperationInfoBase source, OperationInfoBase target)
{
if ((source == null) || (target == null))
{
return false;
}
string sourceContract = source.GetContractFullName(null);
string targetContract = target.GetContractFullName(null);
return MatchNames(sourceContract, targetContract);
}
internal static bool MatchByOperation(OperationInfoBase source, OperationInfoBase target)
{
if (!MatchByContract(source, target))
{
return false;
}
return MatchNames(source.Name, target.Name);
}
protected override void Initialize(Activity activity)
{
base.Initialize(activity);
IExtenderListService extenderListService = (IExtenderListService) GetService(typeof(IExtenderListService));
if (extenderListService != null)
{
bool foundExtender = false;
foreach (IExtenderProvider extenderProvider in extenderListService.GetExtenderProviders())
{
if (extenderProvider.GetType() == typeof(WorkflowServiceAttributesPropertyProviderExtender))
{
foundExtender = true;
}
}
if (!foundExtender)
{
IExtenderProviderService extenderProviderService = (IExtenderProviderService) GetService(typeof(IExtenderProviderService));
if (extenderProviderService != null)
{
extenderProviderService.AddExtenderProvider(new WorkflowServiceAttributesPropertyProviderExtender());
}
}
}
}
protected override void OnActivityChanged(ActivityChangedEventArgs e)
{
base.OnActivityChanged(e);
if (e.Member != null && e.Member.Name == ReceiveActivity.ServiceOperationInfoProperty.Name)
{
ReceiveActivity receiveActivity = e.Activity as ReceiveActivity;
if (receiveActivity != null)
{
receiveActivity.ParameterBindings.Clear();
}
TypeDescriptor.Refresh(e.Activity);
PerformLayout();
}
}
protected override void OnMouseDoubleClick(System.Windows.Forms.MouseEventArgs e)
{
// Do not allow editing if activity is locked
if (this.IsLocked)
{
return;
}
OperationInfoBase pickedServiceOperation = null;
if (ServiceOperationUIEditor.TryPickOperation(this.Activity.Site, this.Activity, this.ReceiveActivity.ServiceOperationInfo, out pickedServiceOperation))
{
PropertyDescriptorUtils.SetPropertyValue(this.Activity.Site, ServiceOperationHelpers.GetServiceOperationInfoPropertyDescriptor(this.Activity), this.Activity, pickedServiceOperation);
}
}
protected override void OnPaint(ActivityDesignerPaintEventArgs e)
{
base.OnPaint(e);
Rectangle incomingArrowRect = new Rectangle(this.Location.X - 2, this.Location.Y + 20, 24, 24);
Rectangle outgoingArrowRect = new Rectangle(this.Location.X + 22, this.Location.Y + this.Size.Height - 45, -24, 24);
e.Graphics.DrawImage(ImageResources.Arrow, incomingArrowRect);
bool isOneWay = false;
if (ReceiveActivity.ServiceOperationInfo != null)
{
// Refresh the referenced design time types in the serviceoperationInfo object properties;
//ServiceOperationHelpers.RefreshReferencedDesignTimeTypes(this.Activity.Site as IServiceProvider, operation);
isOneWay = this.ReceiveActivity.ServiceOperationInfo.GetIsOneWay(this.Activity.Site as IServiceProvider);
}
if (!isOneWay)
{
e.Graphics.DrawImage(ImageResources.Arrow, outgoingArrowRect);
}
}
protected override void PreFilterProperties(IDictionary properties)
{
base.PreFilterProperties(properties);
ReceiveActivity receiveActivity = this.Activity as ReceiveActivity;
if (receiveActivity != null)
{
receiveActivity.GetParameterPropertyDescriptors(properties);
}
}
static bool MatchByContract(ReceiveActivity source, ReceiveActivity target)
{
return MatchByContract(source.ServiceOperationInfo, target.ServiceOperationInfo);
}
static bool MatchByOperation(ReceiveActivity source, ReceiveActivity target)
{
return MatchByOperation(source.ServiceOperationInfo, target.ServiceOperationInfo);
}
static bool MatchNames(string sourceName, string targetName)
{
if (string.IsNullOrEmpty(sourceName) || string.IsNullOrEmpty(targetName))
{
return false;
}
return (sourceName == targetName);
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- EventDescriptor.cs
- PointCollection.cs
- DefaultTextStore.cs
- Timeline.cs
- Array.cs
- Encoding.cs
- SvcMapFile.cs
- EncoderReplacementFallback.cs
- DataGridHeaderBorder.cs
- XmlCustomFormatter.cs
- HandlerBase.cs
- DefaultConfirmation.cs
- IntranetCredentialPolicy.cs
- XmlArrayItemAttributes.cs
- TransactionInterop.cs
- GridView.cs
- FrameworkElementFactoryMarkupObject.cs
- ApplicationProxyInternal.cs
- AddIn.cs
- ImageInfo.cs
- WebPartsPersonalizationAuthorization.cs
- ScriptingWebServicesSectionGroup.cs
- X509ChainPolicy.cs
- MenuAdapter.cs
- UpdatableWrapper.cs
- EnvelopedPkcs7.cs
- SizeAnimationBase.cs
- HttpCapabilitiesEvaluator.cs
- Oid.cs
- BulletChrome.cs
- JsonEnumDataContract.cs
- recordstatefactory.cs
- SchemaElement.cs
- BufferModesCollection.cs
- Viewport2DVisual3D.cs
- ProcessProtocolHandler.cs
- MemberDescriptor.cs
- UserNameSecurityTokenAuthenticator.cs
- Crypto.cs
- StrongName.cs
- DrawingImage.cs
- ThumbAutomationPeer.cs
- FilterableAttribute.cs
- WebZone.cs
- HierarchicalDataBoundControl.cs
- FrameworkReadOnlyPropertyMetadata.cs
- graph.cs
- RecipientInfo.cs
- DateTimeConverter.cs
- COM2ExtendedUITypeEditor.cs
- WpfPayload.cs
- TextProviderWrapper.cs
- SiteMapDataSourceView.cs
- OneOfConst.cs
- HyperLinkField.cs
- DecimalConverter.cs
- CodeGenerationManager.cs
- ScrollItemProviderWrapper.cs
- CodeAttachEventStatement.cs
- ProfileInfo.cs
- BitmapEffect.cs
- DetailsViewPageEventArgs.cs
- ExpressionQuoter.cs
- ClientCultureInfo.cs
- IsolatedStorage.cs
- EntityContainerAssociationSet.cs
- FileSystemInfo.cs
- InheritanceRules.cs
- XmlComplianceUtil.cs
- NotifyIcon.cs
- PiiTraceSource.cs
- FlowDocument.cs
- MimePart.cs
- COM2EnumConverter.cs
- ContractNamespaceAttribute.cs
- TemplateKeyConverter.cs
- ListItemParagraph.cs
- OdbcStatementHandle.cs
- wgx_exports.cs
- _CookieModule.cs
- OptimizerPatterns.cs
- UnsafeNativeMethods.cs
- HtmlInputReset.cs
- StringArrayConverter.cs
- AppliesToBehaviorDecisionTable.cs
- UInt64Converter.cs
- OleDbSchemaGuid.cs
- FrameDimension.cs
- PipeStream.cs
- NavigatingCancelEventArgs.cs
- InputReferenceExpression.cs
- ClientSettingsStore.cs
- AppDomain.cs
- DictationGrammar.cs
- ReadOnlyActivityGlyph.cs
- MouseCaptureWithinProperty.cs
- SimpleParser.cs
- IisTraceListener.cs
- TdsParameterSetter.cs
- ObjectPersistData.cs