Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.WorkflowServices / System / Workflow / ComponentModel / Design / FindSimilarActivitiesVerb.cs / 1305376 / FindSimilarActivitiesVerb.cs
//------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------
namespace System.Workflow.ComponentModel.Design
{
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.Design;
using System.Runtime;
using System.ServiceModel;
using System.Workflow.ComponentModel;
//
// This the the class that implements the Search by menu item displayed on the activityDesigner
// this is responsible for finding the matching activity designers and displaying them using
// the acticvitydesigner hightlighter.
//
internal class FindSimilarActivitiesVerb : ActivityDesignerVerb where TActivity : Activity
{
List matchingActivityDesigner;
ActivityComparer matchMaker;
ActivityDesigner owner;
public FindSimilarActivitiesVerb(ActivityDesigner designer, ActivityComparer matchMaker, string displayText)
: base(designer, DesignerVerbGroup.Misc, displayText, new EventHandler(OnInvoke))
{
Fx.Assert(designer != null,
"Received null for designer parameter to FindSimilarActivitiesVerb ctor.");
Fx.Assert(matchMaker != null,
"Received null for matchMaker parameter to FindSimilarActivitiesVerb ctor.");
this.owner = designer;
this.matchMaker = matchMaker;
}
private static void OnInvoke(object source, EventArgs e)
{
FindSimilarActivitiesVerb designerVerb = source as FindSimilarActivitiesVerb;
ActivityDesigner activityDesigner = designerVerb.owner;
List highlightedDesigners = designerVerb.GetMatchingActivityDesigners(activityDesigner);
ActivityDesignerHighlighter hightlighter = new ActivityDesignerHighlighter(activityDesigner);
hightlighter.Highlight(highlightedDesigners);
}
private ActivityDesigner GetDesigner(Activity activity)
{
IDesignerHost designerHost = this.GetService(typeof(IDesignerHost)) as IDesignerHost;
return designerHost.GetDesigner(activity as IComponent) as ActivityDesigner;
}
private List GetMatchingActivityDesigners(ActivityDesigner activityDesigner)
{
CompositeActivityDesigner rootDesigner = DesignerPainter.GetRootDesigner(activityDesigner);
matchingActivityDesigner = new List();
Walker activityTreeWalker = new Walker();
activityTreeWalker.FoundActivity += new WalkerEventHandler(OnWalkerFoundActivity);
activityTreeWalker.Walk(rootDesigner.Activity);
return matchingActivityDesigner;
}
private object GetService(Type serviceType)
{
if (serviceType == null)
{
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("serviceType");
}
if (owner.Activity != null && owner.Activity.Site != null)
{
return owner.Activity.Site.GetService(serviceType);
}
else
{
return null;
}
}
private void OnWalkerFoundActivity(Walker walker, WalkerEventArgs eventArgs)
{
TActivity foundActivity = eventArgs.CurrentActivity as TActivity;
if (foundActivity != null)
{
if (this.matchMaker((TActivity) owner.Activity, foundActivity))
{
matchingActivityDesigner.Add(GetDesigner(eventArgs.CurrentActivity));
}
}
}
}
}
// 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
- Permission.cs
- TickBar.cs
- XmlILConstructAnalyzer.cs
- UnSafeCharBuffer.cs
- BitmapPalettes.cs
- RowVisual.cs
- DataSourceSelectArguments.cs
- EventSourceCreationData.cs
- EpmContentSerializerBase.cs
- DuplicateWaitObjectException.cs
- ExpressionBuilder.cs
- LexicalChunk.cs
- OleTxTransactionInfo.cs
- ResolveMatchesMessageCD1.cs
- MenuItemStyle.cs
- DXD.cs
- DynamicDataResources.Designer.cs
- TextDecorationUnitValidation.cs
- EnlistmentTraceIdentifier.cs
- FactoryGenerator.cs
- relpropertyhelper.cs
- BamlCollectionHolder.cs
- OrderingQueryOperator.cs
- StringCollectionEditor.cs
- ObjectToIdCache.cs
- Int16KeyFrameCollection.cs
- ResolvedKeyFrameEntry.cs
- EntityContainerAssociationSetEnd.cs
- EdgeModeValidation.cs
- Calendar.cs
- ModelItemCollection.cs
- PackWebRequest.cs
- UIElement3D.cs
- DbConnectionStringBuilder.cs
- Helper.cs
- UserPersonalizationStateInfo.cs
- DataServiceRequest.cs
- StaticSiteMapProvider.cs
- FrameworkElementFactoryMarkupObject.cs
- ObjectFactoryCodeDomTreeGenerator.cs
- JapaneseLunisolarCalendar.cs
- Size.cs
- BindingValueChangedEventArgs.cs
- DbReferenceCollection.cs
- System.Data_BID.cs
- AssemblyNameProxy.cs
- MarshalByValueComponent.cs
- Light.cs
- ApplicationProxyInternal.cs
- ScriptServiceAttribute.cs
- LogicalCallContext.cs
- Transform3DGroup.cs
- LocalFileSettingsProvider.cs
- CompositeDispatchFormatter.cs
- ZipIOFileItemStream.cs
- BrushValueSerializer.cs
- XmlHierarchicalDataSourceView.cs
- PartialCachingAttribute.cs
- BaseInfoTable.cs
- JoinTreeNode.cs
- ChannelParameterCollection.cs
- XmlStreamStore.cs
- ConnectionInterfaceCollection.cs
- GlobalDataBindingHandler.cs
- TextBox.cs
- securitycriticaldataformultiplegetandset.cs
- XmlSchemaSimpleContent.cs
- ConfigurationLocationCollection.cs
- ProviderException.cs
- TextEditorThreadLocalStore.cs
- TextServicesDisplayAttributePropertyRanges.cs
- Validator.cs
- Pen.cs
- WindowsToolbarItemAsMenuItem.cs
- BinHexDecoder.cs
- ExtendedProtectionPolicy.cs
- DefinitionBase.cs
- XpsResourceDictionary.cs
- InvokeFunc.cs
- ActiveDocumentEvent.cs
- DependencyObject.cs
- SettingsPropertyValueCollection.cs
- HttpListenerPrefixCollection.cs
- Ray3DHitTestResult.cs
- ResourceDisplayNameAttribute.cs
- DataGridTable.cs
- Int16AnimationBase.cs
- WpfWebRequestHelper.cs
- BrowserTree.cs
- XmlComment.cs
- SimpleHandlerBuildProvider.cs
- MimeTypePropertyAttribute.cs
- COM2EnumConverter.cs
- Slider.cs
- ProgressBar.cs
- ListViewItem.cs
- IntranetCredentialPolicy.cs
- SafeProcessHandle.cs
- CompareValidator.cs
- Events.cs