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
- OperatingSystemVersionCheck.cs
- _ConnectStream.cs
- BrowserDefinition.cs
- XMLUtil.cs
- CacheEntry.cs
- Int32KeyFrameCollection.cs
- FlowDocumentPageViewerAutomationPeer.cs
- FeatureSupport.cs
- ArrayExtension.cs
- EncoderBestFitFallback.cs
- MemberInfoSerializationHolder.cs
- TableHeaderCell.cs
- KeyValueInternalCollection.cs
- LinqDataSourceView.cs
- TextTreeNode.cs
- SectionUpdates.cs
- _SingleItemRequestCache.cs
- DataGridCell.cs
- CommonDialog.cs
- SqlDeflator.cs
- HMACSHA512.cs
- RectAnimationBase.cs
- FrameSecurityDescriptor.cs
- ControlValuePropertyAttribute.cs
- ConstructorNeedsTagAttribute.cs
- SimpleLine.cs
- ProfileModule.cs
- WebEvents.cs
- Container.cs
- RotateTransform.cs
- UnsafeNativeMethods.cs
- Int16.cs
- AttachedPropertyBrowsableForTypeAttribute.cs
- wgx_commands.cs
- ItemsPanelTemplate.cs
- ObjectContextServiceProvider.cs
- Timer.cs
- PtsContext.cs
- ChildTable.cs
- EnumBuilder.cs
- CqlErrorHelper.cs
- Variable.cs
- FixedPageAutomationPeer.cs
- DateTimeConstantAttribute.cs
- DisplayClaim.cs
- JsonEnumDataContract.cs
- HandleCollector.cs
- RtType.cs
- DataControlField.cs
- KernelTypeValidation.cs
- MethodBuilderInstantiation.cs
- ToolStripItemRenderEventArgs.cs
- SqlMethodAttribute.cs
- SchemeSettingElementCollection.cs
- TypeConverterHelper.cs
- StateWorkerRequest.cs
- SizeKeyFrameCollection.cs
- DataListItemEventArgs.cs
- DefaultParameterValueAttribute.cs
- SqlClientWrapperSmiStreamChars.cs
- DataGridAddNewRow.cs
- XmlAtomicValue.cs
- IsolatedStorageFilePermission.cs
- XmlChoiceIdentifierAttribute.cs
- SortDescription.cs
- StatusBarPanel.cs
- ElementHostAutomationPeer.cs
- NameSpaceExtractor.cs
- FontInfo.cs
- RegexWorker.cs
- ArraySet.cs
- OleDbCommandBuilder.cs
- WaitHandleCannotBeOpenedException.cs
- WorkflowQueue.cs
- ToolStripStatusLabel.cs
- ListManagerBindingsCollection.cs
- FileDetails.cs
- UidPropertyAttribute.cs
- ExpressionBuilderCollection.cs
- DBCommand.cs
- PrimarySelectionAdorner.cs
- RightsController.cs
- Point4D.cs
- PackageRelationshipSelector.cs
- PeerContact.cs
- TextEncodedRawTextWriter.cs
- XmlNode.cs
- DesignerEventService.cs
- DesignTimeTemplateParser.cs
- IdentityModelDictionary.cs
- NumberFormatter.cs
- Menu.cs
- GC.cs
- CommandValueSerializer.cs
- SchemaObjectWriter.cs
- EffectiveValueEntry.cs
- NumberEdit.cs
- CalendarDataBindingHandler.cs
- CallSite.cs
- FunctionMappingTranslator.cs