Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx35 / System.WorkflowServices / System / Workflow / Activities / Design / ServiceOperationUIEditor.cs / 1305376 / ServiceOperationUIEditor.cs
//------------------------------------------------------------ // Copyright (c) Microsoft Corporation. All rights reserved. //----------------------------------------------------------- namespace System.Workflow.Activities.Design { using System; using System.Collections.Generic; using System.Text; using System.Drawing.Design; using System.ComponentModel; using System.ComponentModel.Design; using System.Windows.Forms.Design; using System.Workflow.ComponentModel; using System.Workflow.ComponentModel.Design; using System.Diagnostics; using System.ServiceModel; using System.Windows.Forms; internal class ServiceOperationUIEditor : UITypeEditor { public static bool TryPickOperation(IServiceProvider serviceProvider, Activity activity, OperationInfoBase currentOperation, out OperationInfoBase selectedOperation) { selectedOperation = null; bool isReceiveActivity = activity is ReceiveActivity; try { using (OperationPickerDialog operationPicker = new OperationPickerDialog(serviceProvider, isReceiveActivity)) { Walker activityTreeWalker = new Walker(); Type allowedActivityType = null; if (isReceiveActivity) { allowedActivityType = typeof(ReceiveActivity); } else { allowedActivityType = typeof(SendActivity); } activityTreeWalker.FoundActivity += delegate(Walker walker, WalkerEventArgs eventArgs) { Activity foundActivity = eventArgs.CurrentActivity; if (!(allowedActivityType.IsAssignableFrom(foundActivity.GetType()))) { return; } if (!foundActivity.Enabled) { return; } if (foundActivity is ReceiveActivity) { ReceiveActivity reciveActivity = foundActivity as ReceiveActivity; if (reciveActivity.ServiceOperationInfo != null) { operationPicker.AddServiceOperation(reciveActivity.ServiceOperationInfo, reciveActivity); } } if (foundActivity is SendActivity) { SendActivity sendActivity = foundActivity as SendActivity; if (sendActivity.ServiceOperationInfo != null) { operationPicker.AddServiceOperation(sendActivity.ServiceOperationInfo, sendActivity); } } }; activityTreeWalker.Walk(activity.RootActivity); OperationInfoBase currentServiceOperationInfo = currentOperation as OperationInfoBase; if (currentServiceOperationInfo != null) { operationPicker.SelectedOperation = currentServiceOperationInfo; } DialogResult dialogResult = operationPicker.ShowDialog(); if ((operationPicker.SelectedOperation != null) && (dialogResult == DialogResult.OK) && !operationPicker.SelectedOperation.Equals(currentServiceOperationInfo)) { selectedOperation = operationPicker.SelectedOperation.Clone(); return true; } } } catch (Exception e) { DesignerHelpers.ShowMessage(serviceProvider, e.Message, DR.GetString(DR.WorkflowDesignerTitle), MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); throw; } return false; } public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { if (context == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("context"); } if (provider == null) { throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("provider"); } OperationInfoBase pickedServiceOperation = null; if (TryPickOperation(provider, (Activity) context.Instance, (OperationInfoBase) value, out pickedServiceOperation)) { return pickedServiceOperation; } else { return base.EditValue(context, provider, value); } } public override UITypeEditorEditStyle GetEditStyle(ITypeDescriptorContext context) { return UITypeEditorEditStyle.Modal; } } } // 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
- EncoderFallback.cs
- XmlUtilWriter.cs
- JumpList.cs
- DispatchOperationRuntime.cs
- WebBrowser.cs
- RoutingUtilities.cs
- XPathNavigator.cs
- CustomUserNameSecurityTokenAuthenticator.cs
- Rect.cs
- RelatedPropertyManager.cs
- DrawTreeNodeEventArgs.cs
- StringAnimationUsingKeyFrames.cs
- SafeArrayTypeMismatchException.cs
- ConcurrencyMode.cs
- AssemblyCache.cs
- WindowsGrip.cs
- DataRelation.cs
- Size.cs
- RawUIStateInputReport.cs
- MultiByteCodec.cs
- BaseDataListPage.cs
- SqlNodeTypeOperators.cs
- ModifiableIteratorCollection.cs
- OdbcError.cs
- Expressions.cs
- CreateUserWizard.cs
- SimpleNameService.cs
- NonVisualControlAttribute.cs
- EditingMode.cs
- NullableDoubleSumAggregationOperator.cs
- SqlFunctionAttribute.cs
- ConnectionPoolManager.cs
- MouseBinding.cs
- LineGeometry.cs
- FilteredXmlReader.cs
- SplineQuaternionKeyFrame.cs
- CodeTypeConstructor.cs
- LessThanOrEqual.cs
- SHA512.cs
- AttributeAction.cs
- List.cs
- QuaternionConverter.cs
- XmlArrayAttribute.cs
- AppDomainShutdownMonitor.cs
- TreeNodeCollection.cs
- PanelStyle.cs
- NoClickablePointException.cs
- XPathNavigatorReader.cs
- MemberInfoSerializationHolder.cs
- SmiMetaDataProperty.cs
- CodeRegionDirective.cs
- InvalidFilterCriteriaException.cs
- TextTreeRootNode.cs
- SchemaCollectionCompiler.cs
- ProcessModuleCollection.cs
- XsdDuration.cs
- HtmlUtf8RawTextWriter.cs
- EventSourceCreationData.cs
- ForceCopyBuildProvider.cs
- BitmapVisualManager.cs
- ListViewItemMouseHoverEvent.cs
- RowToFieldTransformer.cs
- Image.cs
- EdmFunction.cs
- HMACMD5.cs
- PeerDuplexChannel.cs
- Vertex.cs
- IdentityReference.cs
- ResourcesGenerator.cs
- Rect3D.cs
- DesignerView.cs
- StringArrayConverter.cs
- DataTableReaderListener.cs
- DetailsViewDeleteEventArgs.cs
- DrawingImage.cs
- DivideByZeroException.cs
- ItemContainerPattern.cs
- _ChunkParse.cs
- WhitespaceRule.cs
- Size3DValueSerializer.cs
- KnownTypesProvider.cs
- RelationshipManager.cs
- XsltException.cs
- GroupBox.cs
- BamlMapTable.cs
- Profiler.cs
- SqlConnectionHelper.cs
- SafeRegistryKey.cs
- FocusTracker.cs
- CodeTypeOfExpression.cs
- TypeGeneratedEventArgs.cs
- Drawing.cs
- InputProviderSite.cs
- SafeTokenHandle.cs
- HttpResponseInternalWrapper.cs
- ObjectListCommandCollection.cs
- ZoneButton.cs
- ConstraintStruct.cs
- ConfigurationManagerInternal.cs
- OraclePermissionAttribute.cs