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
- HostProtectionPermission.cs
- VariableQuery.cs
- BindingCollection.cs
- FunctionDescription.cs
- EditorZoneBase.cs
- BufferedReceiveElement.cs
- SpecularMaterial.cs
- WebPartAuthorizationEventArgs.cs
- Style.cs
- HttpCachePolicyElement.cs
- PageThemeParser.cs
- XmlSecureResolver.cs
- OdbcException.cs
- CodeCompiler.cs
- QuadraticBezierSegment.cs
- ProxyWebPart.cs
- ProxyFragment.cs
- XmlBinaryReader.cs
- ActivityUtilities.cs
- SchemaMapping.cs
- TextChange.cs
- WsdlInspector.cs
- CodeMemberMethod.cs
- PageAdapter.cs
- ServicePointManager.cs
- BinaryWriter.cs
- ToolStripDropDownMenu.cs
- CreateParams.cs
- UpdateManifestForBrowserApplication.cs
- SqlUnionizer.cs
- CachedFontFace.cs
- StdRegProviderWrapper.cs
- MetadataUtilsSmi.cs
- WebReferencesBuildProvider.cs
- ScaleTransform3D.cs
- LinearQuaternionKeyFrame.cs
- DoubleAnimationUsingPath.cs
- URL.cs
- Scanner.cs
- MouseBinding.cs
- XmlTextEncoder.cs
- ExpressionConverter.cs
- ActivityExecutorSurrogate.cs
- XsltConvert.cs
- ObjectListCommandEventArgs.cs
- ArgumentDirectionHelper.cs
- FlagsAttribute.cs
- GridViewSortEventArgs.cs
- SettingsProperty.cs
- SymbolType.cs
- CounterCreationData.cs
- XmlSchemaComplexContent.cs
- LogEntryDeserializer.cs
- GetResponse.cs
- SqlFacetAttribute.cs
- contentDescriptor.cs
- RenderDataDrawingContext.cs
- SerializerDescriptor.cs
- Helper.cs
- ToolStripHighContrastRenderer.cs
- initElementDictionary.cs
- PolyQuadraticBezierSegment.cs
- BitmapCache.cs
- ApplicationGesture.cs
- EncodingNLS.cs
- ParserHooks.cs
- ByteStream.cs
- DataServiceContext.cs
- CacheMemory.cs
- AlternationConverter.cs
- ExpressionBuilderContext.cs
- FocusManager.cs
- SHA256CryptoServiceProvider.cs
- TextTreeNode.cs
- EditableRegion.cs
- AspNetCacheProfileAttribute.cs
- ImageClickEventArgs.cs
- Convert.cs
- HostingPreferredMapPath.cs
- WebServiceParameterData.cs
- ScalarConstant.cs
- HtmlPanelAdapter.cs
- PagerSettings.cs
- OracleColumn.cs
- FilterRepeater.cs
- CqlErrorHelper.cs
- Run.cs
- WebCategoryAttribute.cs
- CodeLabeledStatement.cs
- MouseOverProperty.cs
- XPathSingletonIterator.cs
- RemotingService.cs
- DocComment.cs
- GridViewColumnCollectionChangedEventArgs.cs
- HostedHttpRequestAsyncResult.cs
- PageTrueTypeFont.cs
- RawStylusInput.cs
- PlanCompiler.cs
- ComponentChangingEvent.cs
- InkCanvasSelection.cs