internal override void SetSite(DocumentCompositeNode parent, IProperty propertyKey, int childIndex) { base.SetSite(parent, propertyKey, childIndex); if (parent != null) { DocumentPrimitiveNode.UnsitedValue unsitedValue = this.value as DocumentPrimitiveNode.UnsitedValue; if (unsitedValue == null) { return; } TypeConverter typeConverter = this.ValueConverter; if (typeConverter == null) { if (DocumentPrimitiveNode.objectTypeConverter == null) { DocumentPrimitiveNode.objectTypeConverter = this.PlatformMetadata.GetTypeConverter((MemberInfo)typeof(object)); } typeConverter = DocumentPrimitiveNode.objectTypeConverter; } this.value = (IDocumentNodeValue) new DocumentNodeStringValue(typeConverter.ConvertToInvariantString(unsitedValue.Value)); } else { this.valueConverterProvider = (IMember)null; } }
public DocumentPrimitiveNode(IDocumentContext context, ITypeId typeId, IDocumentNodeValue value) : base(context, typeId) { if (value == null && !this.Type.SupportsNullValues) { throw new ArgumentException(ExceptionStringTable.DocumentNodeValueTypeValueIsNull); } this.value = value; }
public override DocumentNode Clone(IDocumentContext context) { IDocumentNodeValue documentNodeValue = this.value != null?this.value.Clone(context) : (IDocumentNodeValue)null; ITypeId typeId = (ITypeId)this.Type.Clone(context.TypeResolver); DocumentPrimitiveNode documentPrimitiveNode = new DocumentPrimitiveNode(context, typeId, documentNodeValue); if (this.SourceContext != null) { documentPrimitiveNode.SourceContext = this.SourceContext.FreezeText(true); } return((DocumentNode)documentPrimitiveNode); }
public DocumentPrimitiveNode CreateNode(ITypeId typeId, IDocumentNodeValue value) { typeId = (ITypeId)this.projectContext.ResolveType(typeId); DocumentNodeMemberValue documentNodeMemberValue = value as DocumentNodeMemberValue; if (documentNodeMemberValue != null) { IType type = documentNodeMemberValue.Member as IType; IPropertyId propertyId = documentNodeMemberValue.Member as IPropertyId; if (type != null) { return(new DocumentPrimitiveNode((IDocumentContext)this, typeId, (IDocumentNodeValue) new DocumentNodeMemberValue((IMember)this.projectContext.ResolveType((ITypeId)type)))); } if (propertyId != null) { return(new DocumentPrimitiveNode((IDocumentContext)this, typeId, (IDocumentNodeValue) new DocumentNodeMemberValue((IMember)this.projectContext.ResolveProperty(propertyId)))); } } return(new DocumentPrimitiveNode((IDocumentContext)this, typeId, value)); }
private DocumentNode ConvertSubtree(DocumentNode node, IDocumentContext sourcePlatformDocumentContext, IDocumentContext targetPlatformDocumentContext) { DocumentPrimitiveNode documentPrimitiveNode = node as DocumentPrimitiveNode; DocumentCompositeNode documentCompositeNode = node as DocumentCompositeNode; if (documentPrimitiveNode != null) { ITypeId typeId = (ITypeId)PlatformTypeHelper.ConvertTypeId((ITypeId)documentPrimitiveNode.Type, targetPlatformDocumentContext.TypeResolver.PlatformMetadata); object valueAsObject = DocumentPrimitiveNode.GetValueAsObject((DocumentNode)documentPrimitiveNode); if (valueAsObject != null) { return((DocumentNode) new DocumentPrimitiveNode(targetPlatformDocumentContext, typeId, this.ConvertInternal(valueAsObject, sourcePlatformDocumentContext, targetPlatformDocumentContext, PlatformConverter.ConvertToType.InstanceValue))); } IDocumentNodeValue documentNodeValue = DocumentPrimitiveNode.GetValueAsMember((DocumentNode)documentPrimitiveNode) != null || documentPrimitiveNode.Value == null ? (IDocumentNodeValue)null : documentPrimitiveNode.Value.Clone(targetPlatformDocumentContext); return((DocumentNode) new DocumentPrimitiveNode(targetPlatformDocumentContext, typeId, documentNodeValue)); } if (documentCompositeNode != null) { if (PlatformTypes.CompositeTransform.IsAssignableFrom((ITypeId)documentCompositeNode.Type)) { IPlatform platform = PlatformConverter.GetPlatform(sourcePlatformDocumentContext); if (platform != null) { TransformGroup transformGroup = platform.GeometryHelper.ConvertTransformToWpf((object)documentCompositeNode); if (PlatformConverter.IsPlatformValue((object)transformGroup, targetPlatformDocumentContext)) { return(targetPlatformDocumentContext.CreateNode(typeof(TransformGroup), (object)transformGroup)); } } } ITypeId typeId = (ITypeId)PlatformTypeHelper.ConvertTypeId((ITypeId)documentCompositeNode.Type, targetPlatformDocumentContext.TypeResolver.PlatformMetadata); if (!documentCompositeNode.TypeResolver.PlatformMetadata.IsNullType(typeId)) { DocumentCompositeNode node1 = targetPlatformDocumentContext.CreateNode(typeId); foreach (KeyValuePair <IProperty, DocumentNode> keyValuePair in (IEnumerable <KeyValuePair <IProperty, DocumentNode> >)documentCompositeNode.Properties) { IProperty property = this.ConvertPropertyKey(keyValuePair.Key, targetPlatformDocumentContext.TypeResolver.PlatformMetadata); if (property != null) { DocumentNode node2 = keyValuePair.Value; if (!PlatformTypes.FrameworkTemplate.IsAssignableFrom((ITypeId)node2.Type) && !PlatformTypes.Style.IsAssignableFrom((ITypeId)node2.Type)) { DocumentNode node3 = this.ConvertSubtree(node2, sourcePlatformDocumentContext, targetPlatformDocumentContext); if (node3 != null && (PlatformTypeHelper.GetPropertyType(property).IsAssignableFrom(node3.TargetType) || DocumentNodeUtilities.IsMarkupExtension(node3))) { node1.Properties[(IPropertyId)property] = node3; } } } } if (documentCompositeNode.SupportsChildren) { for (int index = 0; index < documentCompositeNode.Children.Count; ++index) { DocumentNode node2 = documentCompositeNode.Children[index]; node1.Children.Add(this.ConvertSubtree(node2, sourcePlatformDocumentContext, targetPlatformDocumentContext)); } } return((DocumentNode)node1); } } return((DocumentNode)null); }