Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / VisualBasicSettingsHandler.cs / 1305376 / VisualBasicSettingsHandler.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Presentation { using System.ComponentModel; using Microsoft.VisualBasic.Activities; using System.Activities.Debugger; using System.Activities.Presentation.Model; using System.Runtime; using System.Linq; //the class does several things: //1. make sure a special property "Imports" (implemented using VisualBasicSettings attached properties) is added to the root object before it's loaded into ModelTree //2. make sure the "root workflow" of the root object always have the same VisualBasicSettings static class VisualBasicSettingsHandler { static public void PreviewLoadRoot(object sender, WorkflowDesigner.PreviewLoadEventArgs args) { VisualBasicSettings settings = VisualBasic.GetSettings(args.Instance); if (settings == null) { settings = new VisualBasicSettings(); VisualBasic.SetSettings(args.Instance, settings); } IDebuggableWorkflowTree root = args.Instance as IDebuggableWorkflowTree; if (root != null) { Activity rootActivity = root.GetWorkflowRoot(); if (rootActivity != null) { VisualBasic.SetSettings(rootActivity, settings); } args.Context.Services.Subscribe(manager => manager.Root.PropertyChanged += new PropertyChangedEventHandler(OnRootPropertyChanged)); } TypeDescriptor.AddProvider(new RootModelTypeDescriptionProvider(args.Instance), args.Instance); } static void OnRootPropertyChanged(object sender, PropertyChangedEventArgs e) { ModelItem rootModel = sender as ModelItem; Fx.Assert(rootModel != null, "sender item could not be null"); ModelProperty changedProperty = rootModel.Properties[e.PropertyName]; if (changedProperty == null) { return; } object changedPropertyValue = changedProperty.ComputedValue; if (changedPropertyValue == null) { return; } IDebuggableWorkflowTree root = rootModel.GetCurrentValue() as IDebuggableWorkflowTree; Fx.Assert(root != null, "root must be a IDebuggableWorkflowTree"); if (root.GetWorkflowRoot() == changedPropertyValue) { VisualBasicSettings settings = VisualBasic.GetSettings(root); VisualBasic.SetSettings(changedPropertyValue, settings); } } } class RootModelTypeDescriptionProvider : TypeDescriptionProvider { public RootModelTypeDescriptionProvider(object instance) : base(TypeDescriptor.GetProvider(instance)) { } public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance) { ICustomTypeDescriptor defaultDescriptor = base.GetTypeDescriptor(objectType, instance); return new RootModelTypeDescriptor(defaultDescriptor, instance); } } class RootModelTypeDescriptor : CustomTypeDescriptor { object root; NamespaceListPropertyDescriptor importDescriptor; public RootModelTypeDescriptor(ICustomTypeDescriptor parent, object root) : base(parent) { this.root = root; } PropertyDescriptor ImportDescriptor { get { if (this.importDescriptor == null) { this.importDescriptor = new NamespaceListPropertyDescriptor(this.root); } return this.importDescriptor; } } public override PropertyDescriptorCollection GetProperties() { return GetProperties(null); } public override PropertyDescriptorCollection GetProperties(Attribute[] attributes) { return new PropertyDescriptorCollection(base.GetProperties(attributes).Cast () .Union(new PropertyDescriptor[] { this.ImportDescriptor }).ToArray()); } } } // 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
- CheckedListBox.cs
- GrammarBuilderBase.cs
- XPathNavigatorKeyComparer.cs
- WindowsEditBox.cs
- ThreadAbortException.cs
- ConnectionPoolManager.cs
- SystemIPv4InterfaceProperties.cs
- WizardStepBase.cs
- DesigntimeLicenseContext.cs
- ListControlBuilder.cs
- ConfigXmlText.cs
- SizeKeyFrameCollection.cs
- OutputScopeManager.cs
- ProcessModelInfo.cs
- DelegateArgumentReference.cs
- GroupBoxAutomationPeer.cs
- BamlLocalizableResource.cs
- DesignTableCollection.cs
- BitmapEffect.cs
- ConversionValidationRule.cs
- WebPartUtil.cs
- PeoplePickerWrapper.cs
- JsonUriDataContract.cs
- CodeNamespace.cs
- IISMapPath.cs
- AttributeQuery.cs
- NativeMethods.cs
- FtpCachePolicyElement.cs
- HttpAsyncResult.cs
- SqlMultiplexer.cs
- StringSource.cs
- DetailsViewPageEventArgs.cs
- FusionWrap.cs
- DialogResultConverter.cs
- storepermission.cs
- ThreadAbortException.cs
- SQLDoubleStorage.cs
- TextDecorationCollection.cs
- NativeMethods.cs
- NetSectionGroup.cs
- SqlDataSourceCommandEventArgs.cs
- InterleavedZipPartStream.cs
- PersonalizationProviderCollection.cs
- DesignerForm.cs
- CompoundFileIOPermission.cs
- ByteStack.cs
- InputChannelBinder.cs
- NotifyParentPropertyAttribute.cs
- CharacterMetrics.cs
- EventMappingSettings.cs
- BitmapEffectDrawingContextState.cs
- DictionarySectionHandler.cs
- StringUtil.cs
- LayeredChannelFactory.cs
- InvokePattern.cs
- WorkflowItemPresenter.cs
- UrlPath.cs
- SkipStoryboardToFill.cs
- GregorianCalendarHelper.cs
- OdbcRowUpdatingEvent.cs
- X509Certificate2Collection.cs
- CleanUpVirtualizedItemEventArgs.cs
- SafeArchiveContext.cs
- PartitionResolver.cs
- MetadataArtifactLoaderFile.cs
- DbConnectionStringBuilder.cs
- wmiprovider.cs
- WebBrowserPermission.cs
- VisualTreeUtils.cs
- Axis.cs
- DataSourceCollectionBase.cs
- ReliableReplySessionChannel.cs
- FixedSOMFixedBlock.cs
- Parser.cs
- RijndaelManagedTransform.cs
- DoubleAnimationBase.cs
- EntityParameter.cs
- ExpandCollapseProviderWrapper.cs
- TreeNodeCollectionEditorDialog.cs
- UIAgentMonitorHandle.cs
- StringPropertyBuilder.cs
- ContainerVisual.cs
- SafeFileMappingHandle.cs
- EventsTab.cs
- StructuredType.cs
- Scalars.cs
- FormView.cs
- PagesSection.cs
- Soap12ProtocolReflector.cs
- SiteOfOriginContainer.cs
- ListViewTableCell.cs
- AvTraceDetails.cs
- XmlCodeExporter.cs
- followingquery.cs
- BitmapPalette.cs
- MarkedHighlightComponent.cs
- DataTableExtensions.cs
- DataGridViewRowsAddedEventArgs.cs
- ColumnClickEvent.cs
- TryExpression.cs