Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / NetFx40 / Tools / System.Activities.Presentation / System / Activities / Presentation / Model / MorphHelper.cs / 1305376 / MorphHelper.cs
//---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Presentation.Model { using System; using System.Activities.Presentation.Internal.PropertyEditing; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Activities.Presentation; using System.Diagnostics.CodeAnalysis; using System.Runtime; public delegate object PropertyValueMorphHelper(ModelItem originalValue, ModelProperty newModelProperty); public static class MorphHelper { [SuppressMessage(FxCop.Category.Naming, FxCop.Rule.IdentifiersShouldBeSpelledCorrectly, Justification = "Morph is the right word here")] static DictionarymorphExtensions = new Dictionary (); [SuppressMessage(FxCop.Category.Naming, FxCop.Rule.IdentifiersShouldBeSpelledCorrectly, Justification = "Morph is the right word here")] public static void AddPropertyValueMorphHelper(Type propertyType, PropertyValueMorphHelper extension) { if (propertyType == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("propertyType")); } if (extension == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("extension")); } morphExtensions[propertyType] = extension; } [SuppressMessage(FxCop.Category.Naming, FxCop.Rule.IdentifiersShouldBeSpelledCorrectly, Justification = "Morph is the right word here")] public static PropertyValueMorphHelper GetPropertyValueMorphHelper(Type propertyType) { if (propertyType == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("propertyType")); } PropertyValueMorphHelper extension = null; morphExtensions.TryGetValue(propertyType, out extension); if (extension == null && propertyType.IsGenericType) { morphExtensions.TryGetValue(propertyType.GetGenericTypeDefinition(), out extension); } return extension; } [SuppressMessage(FxCop.Category.Naming, FxCop.Rule.IdentifiersShouldBeSpelledCorrectly, Justification = "Morph is the right word here")] // This updates back links public static void MorphObject(ModelItem oldModelItem, ModelItem newModelitem) { if (oldModelItem == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("oldModelItem")); } if (newModelitem == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("newModelitem")); } var collectionParents = from parent in oldModelItem.Parents where parent is ModelItemCollection select (ModelItemCollection)parent; foreach (ModelItemCollection collectionParent in collectionParents.ToList()) { int index = collectionParent.IndexOf(oldModelItem); collectionParent.Remove(oldModelItem); collectionParent.Insert(index, newModelitem); } foreach (ModelProperty modelProperty in oldModelItem.Sources.ToList()) { modelProperty.SetValue(newModelitem); } } [SuppressMessage(FxCop.Category.Naming, FxCop.Rule.IdentifiersShouldBeSpelledCorrectly, Justification = "Morph is the right word here")] // this updates forward links public static void MorphProperties(ModelItem oldModelItem, ModelItem newModelitem) { if (oldModelItem == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("oldModelItem")); } if (newModelitem == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("newModelitem")); } foreach (ModelProperty modelProperty in oldModelItem.Properties) { ModelProperty propertyInNewModelItem = newModelitem.Properties[modelProperty.Name]; if (propertyInNewModelItem != null) { Console.WriteLine(propertyInNewModelItem.Name); if (CanCopyProperty(modelProperty, propertyInNewModelItem)) { if (propertyInNewModelItem.PropertyType.Equals(modelProperty.PropertyType)) { propertyInNewModelItem.SetValue(modelProperty.Value); modelProperty.SetValue(null); } else // See if there is morph helper for this type. { PropertyValueMorphHelper extension = GetPropertyValueMorphHelper(modelProperty.PropertyType); if (extension != null) { propertyInNewModelItem.SetValue(extension(modelProperty.Value, propertyInNewModelItem)); modelProperty.SetValue(null); } } } } } } static bool CanCopyProperty(ModelProperty modelProperty, ModelProperty propertyInNewModelItem) { bool canCopyProperty = false; DesignerSerializationVisibilityAttribute designerSerializationVisibility = ExtensibilityAccessor.GetAttribute (modelProperty.Attributes); if (modelProperty.Value == null) { canCopyProperty = false; } else if (designerSerializationVisibility != null && designerSerializationVisibility.Visibility != DesignerSerializationVisibility.Visible) { canCopyProperty = false; } else if (propertyInNewModelItem != null && !propertyInNewModelItem.IsAttached && !propertyInNewModelItem.IsReadOnly) { canCopyProperty = true; } return canCopyProperty; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //---------------------------------------------------------------- // Copyright (c) Microsoft Corporation. All rights reserved. //--------------------------------------------------------------- namespace System.Activities.Presentation.Model { using System; using System.Activities.Presentation.Internal.PropertyEditing; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Activities.Presentation; using System.Diagnostics.CodeAnalysis; using System.Runtime; public delegate object PropertyValueMorphHelper(ModelItem originalValue, ModelProperty newModelProperty); public static class MorphHelper { [SuppressMessage(FxCop.Category.Naming, FxCop.Rule.IdentifiersShouldBeSpelledCorrectly, Justification = "Morph is the right word here")] static Dictionary morphExtensions = new Dictionary (); [SuppressMessage(FxCop.Category.Naming, FxCop.Rule.IdentifiersShouldBeSpelledCorrectly, Justification = "Morph is the right word here")] public static void AddPropertyValueMorphHelper(Type propertyType, PropertyValueMorphHelper extension) { if (propertyType == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("propertyType")); } if (extension == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("extension")); } morphExtensions[propertyType] = extension; } [SuppressMessage(FxCop.Category.Naming, FxCop.Rule.IdentifiersShouldBeSpelledCorrectly, Justification = "Morph is the right word here")] public static PropertyValueMorphHelper GetPropertyValueMorphHelper(Type propertyType) { if (propertyType == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("propertyType")); } PropertyValueMorphHelper extension = null; morphExtensions.TryGetValue(propertyType, out extension); if (extension == null && propertyType.IsGenericType) { morphExtensions.TryGetValue(propertyType.GetGenericTypeDefinition(), out extension); } return extension; } [SuppressMessage(FxCop.Category.Naming, FxCop.Rule.IdentifiersShouldBeSpelledCorrectly, Justification = "Morph is the right word here")] // This updates back links public static void MorphObject(ModelItem oldModelItem, ModelItem newModelitem) { if (oldModelItem == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("oldModelItem")); } if (newModelitem == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("newModelitem")); } var collectionParents = from parent in oldModelItem.Parents where parent is ModelItemCollection select (ModelItemCollection)parent; foreach (ModelItemCollection collectionParent in collectionParents.ToList()) { int index = collectionParent.IndexOf(oldModelItem); collectionParent.Remove(oldModelItem); collectionParent.Insert(index, newModelitem); } foreach (ModelProperty modelProperty in oldModelItem.Sources.ToList()) { modelProperty.SetValue(newModelitem); } } [SuppressMessage(FxCop.Category.Naming, FxCop.Rule.IdentifiersShouldBeSpelledCorrectly, Justification = "Morph is the right word here")] // this updates forward links public static void MorphProperties(ModelItem oldModelItem, ModelItem newModelitem) { if (oldModelItem == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("oldModelItem")); } if (newModelitem == null) { throw FxTrace.Exception.AsError(new ArgumentNullException("newModelitem")); } foreach (ModelProperty modelProperty in oldModelItem.Properties) { ModelProperty propertyInNewModelItem = newModelitem.Properties[modelProperty.Name]; if (propertyInNewModelItem != null) { Console.WriteLine(propertyInNewModelItem.Name); if (CanCopyProperty(modelProperty, propertyInNewModelItem)) { if (propertyInNewModelItem.PropertyType.Equals(modelProperty.PropertyType)) { propertyInNewModelItem.SetValue(modelProperty.Value); modelProperty.SetValue(null); } else // See if there is morph helper for this type. { PropertyValueMorphHelper extension = GetPropertyValueMorphHelper(modelProperty.PropertyType); if (extension != null) { propertyInNewModelItem.SetValue(extension(modelProperty.Value, propertyInNewModelItem)); modelProperty.SetValue(null); } } } } } } static bool CanCopyProperty(ModelProperty modelProperty, ModelProperty propertyInNewModelItem) { bool canCopyProperty = false; DesignerSerializationVisibilityAttribute designerSerializationVisibility = ExtensibilityAccessor.GetAttribute (modelProperty.Attributes); if (modelProperty.Value == null) { canCopyProperty = false; } else if (designerSerializationVisibility != null && designerSerializationVisibility.Visibility != DesignerSerializationVisibility.Visible) { canCopyProperty = false; } else if (propertyInNewModelItem != null && !propertyInNewModelItem.IsAttached && !propertyInNewModelItem.IsReadOnly) { canCopyProperty = true; } return canCopyProperty; } } } // 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
- RangeValuePatternIdentifiers.cs
- CurrencyManager.cs
- DisplayInformation.cs
- ObjectToIdCache.cs
- MouseOverProperty.cs
- InputLangChangeEvent.cs
- StringArrayConverter.cs
- NamespaceInfo.cs
- AccessorTable.cs
- DebuggerAttributes.cs
- ComPlusTypeLoader.cs
- DSASignatureDeformatter.cs
- CachedFontFamily.cs
- EdmMember.cs
- AssociationSetMetadata.cs
- CqlIdentifiers.cs
- FixedPosition.cs
- MetadataUtil.cs
- CustomExpressionEventArgs.cs
- EndPoint.cs
- PointAnimation.cs
- WizardForm.cs
- BinaryParser.cs
- NegatedCellConstant.cs
- PropertyDescriptorCollection.cs
- XsdCachingReader.cs
- ImmComposition.cs
- SmiContext.cs
- CollectionAdapters.cs
- PersonalizationState.cs
- SubstitutionList.cs
- SerialErrors.cs
- UTF32Encoding.cs
- CustomError.cs
- SchemaTypeEmitter.cs
- EntityDataSourceStatementEditor.cs
- RIPEMD160.cs
- Int16.cs
- CheckedListBox.cs
- ConstructorBuilder.cs
- SinglePageViewer.cs
- AccessKeyManager.cs
- TextTrailingCharacterEllipsis.cs
- UrlEncodedParameterWriter.cs
- QuaternionValueSerializer.cs
- HuffmanTree.cs
- UrlPath.cs
- MatrixAnimationUsingPath.cs
- SerializableAttribute.cs
- TemplateParser.cs
- MeasureData.cs
- HostingEnvironmentSection.cs
- ListItem.cs
- HyperlinkAutomationPeer.cs
- PropertyChangeTracker.cs
- PrivateFontCollection.cs
- DesignerDataSourceView.cs
- DataGridViewDataConnection.cs
- SegmentInfo.cs
- ToolStripDropDown.cs
- ObjectQueryState.cs
- SequenceNumber.cs
- UrlPropertyAttribute.cs
- WindowsListViewSubItem.cs
- NegotiateStream.cs
- WebRequestModuleElement.cs
- BulletedListEventArgs.cs
- FileDialog.cs
- FileSecurity.cs
- Duration.cs
- UnknownWrapper.cs
- WebConfigurationManager.cs
- DataSourceHelper.cs
- TextCollapsingProperties.cs
- _NegoState.cs
- CodeArrayIndexerExpression.cs
- XmlChildEnumerator.cs
- DetailsViewModeEventArgs.cs
- DataGridAddNewRow.cs
- IndentedTextWriter.cs
- WhitespaceSignificantCollectionAttribute.cs
- ConnectionInterfaceCollection.cs
- XPathBuilder.cs
- HtmlButton.cs
- FilePrompt.cs
- XmlEncoding.cs
- CodeTypeReferenceExpression.cs
- RelatedEnd.cs
- TreeIterator.cs
- ThreadPoolTaskScheduler.cs
- ProfilePropertyMetadata.cs
- RightsManagementInformation.cs
- _Win32.cs
- ChangeTracker.cs
- DummyDataSource.cs
- AppDomainProtocolHandler.cs
- LateBoundBitmapDecoder.cs
- ClassHandlersStore.cs
- ApplicationTrust.cs
- AccessControlList.cs