public static IEnumerable <SceneNode> DataSourceItemEnumerator(SceneNode pivot) { BaseFrameworkElement baseFrameworkElement; ResourceDictionaryNode resourceDictionaryNode; ApplicationSceneNode applicationNode; ResourceDictionaryNode searchDictionary = (baseFrameworkElement = pivot as BaseFrameworkElement) == null ? ((resourceDictionaryNode = pivot as ResourceDictionaryNode) == null ? ((applicationNode = pivot as ApplicationSceneNode) == null ? (ResourceDictionaryNode)null : applicationNode.Resources) : resourceDictionaryNode) : baseFrameworkElement.Resources; if (searchDictionary != null) { foreach (DictionaryEntryNode dictionaryEntryNode in searchDictionary) { if (dictionaryEntryNode != null && dictionaryEntryNode.Value != null && BindingEditor.IsDataSource(dictionaryEntryNode.Value.DocumentNode)) { yield return((SceneNode)dictionaryEntryNode); } } foreach (ResourceDictionaryNode resourceDictionaryNode1 in (IEnumerable <ResourceDictionaryNode>)searchDictionary.MergedDictionaries) { foreach (DictionaryEntryNode dictionaryEntryNode in resourceDictionaryNode1) { if (dictionaryEntryNode != null && dictionaryEntryNode.Value != null && BindingEditor.IsDataSource(dictionaryEntryNode.Value.DocumentNode)) { yield return((SceneNode)dictionaryEntryNode); } } } } }
public static SceneNode CreateValueConverter(SceneViewModel viewModel) { AddValueConverterDialog valueConverterDialog = new AddValueConverterDialog(viewModel); bool?nullable = valueConverterDialog.ShowDialog(); if ((!nullable.GetValueOrDefault() ? 0 : (nullable.HasValue ? true : false)) != 0) { Type objectType = valueConverterDialog.ObjectType; string name = valueConverterDialog.ValueConverterResourceKey; if (objectType != (Type)null) { viewModel.ProjectContext.GetType(objectType); SceneNode sceneNode = viewModel.CreateSceneNode(objectType); SceneNode rootNode = viewModel.RootNode; if (rootNode != null) { Microsoft.Expression.DesignSurface.Utility.ResourceHelper.EnsureResourceDictionaryNode(rootNode); ResourceDictionaryNode resourceDictionaryNode = ResourceManager.ProvideResourcesForElement(rootNode); if (resourceDictionaryNode != null) { if (string.IsNullOrEmpty(name)) { name = objectType.Name; } string uniqueResourceKey = resourceDictionaryNode.GetUniqueResourceKey(name); DictionaryEntryNode dictionaryEntryNode = DictionaryEntryNode.Factory.Instantiate((object)uniqueResourceKey, sceneNode); resourceDictionaryNode.Insert(0, dictionaryEntryNode); return((SceneNode)dictionaryEntryNode); } } } } return((SceneNode)null); }
private void AddSceneNodeValueConverters(SceneNode sceneNode, List <ValueConverterModel> converters, List <SceneDocument> visitedDocuments) { ResourceDictionaryNode resourceDictionary = ResourceManager.ProvideResourcesForElement(sceneNode); if (resourceDictionary == null) { return; } this.AddValueConverters(resourceDictionary, converters, visitedDocuments); }
internal static void AddResource(DictionaryEntryNode resourceToAdd, ResourceDictionaryNode destinationDictionary, int insertionIndex) { if (insertionIndex >= 0 && insertionIndex < destinationDictionary.Count) { destinationDictionary.Insert(insertionIndex, resourceToAdd); } else { destinationDictionary.Add(resourceToAdd); } }
public override void EnsureResourceDictionaryNode() { ApplicationSceneNode applicationSceneNode = this.ViewModel.RootNode as ApplicationSceneNode; if (applicationSceneNode == null || applicationSceneNode.Resources != null) { return; } ResourceDictionaryNode resourceDictionaryNode = ResourceDictionaryNode.Factory.Instantiate(this.ViewModel); applicationSceneNode.Resources = resourceDictionaryNode; }
public override void EnsureResourceDictionaryNode() { if (this.ResourceDictionaryNode != null) { return; } IPropertyId resourcesProperty = this.node.Type.Metadata.ResourcesProperty; if (resourcesProperty == null) { return; } ResourceDictionaryNode resourceDictionaryNode = ResourceDictionaryNode.Factory.Instantiate(this.ViewModel); this.node.SetValueAsSceneNode(resourcesProperty, (SceneNode)resourceDictionaryNode); }
private static IEnumerable <SceneNode> ResourceEntryEnumerator(SceneNode target) { ResourceDictionaryNode resourceDictionaryNode = target as ResourceDictionaryNode; if (resourceDictionaryNode != null) { foreach (ResourceDictionaryNode resourceDictionaryNode1 in (IEnumerable <ResourceDictionaryNode>)resourceDictionaryNode.MergedDictionaries) { yield return((SceneNode)resourceDictionaryNode1); } foreach (SceneNode sceneNode in (IEnumerable <SceneNode>)target.GetChildren()) { yield return(sceneNode); } } }
public override void InteractiveDelete() { ResourceDictionaryNode resourceDictionaryNode = (ResourceDictionaryNode)this.Container.ViewModel.GetSceneNode((DocumentNode)this.dictionary); if (this.DesignerContext.MessageDisplayService.ShowMessage(new MessageBoxArgs() { Message = StringTable.RemovingLinkToExternalDictionaryWarningMessage, Button = MessageBoxButton.YesNo, Image = MessageBoxImage.Exclamation }) != MessageBoxResult.Yes) { return; } using (SceneEditTransaction editTransaction = this.Container.ViewModel.CreateEditTransaction(StringTable.UndoUnitDeleteResource)) { this.Container.ResourceDictionaryNode.MergedDictionaries.Remove(resourceDictionaryNode); editTransaction.Commit(); } }
internal static ResourceDictionaryNode EnsureResourceDictionaryNode(SceneNode targetNode) { ResourceDictionaryNode resourceDictionaryNode = targetNode as ResourceDictionaryNode; IPropertyId resourcesProperty = targetNode.Metadata.ResourcesProperty; if (resourcesProperty != null) { DocumentNodePath valueAsDocumentNode = targetNode.GetLocalValueAsDocumentNode(resourcesProperty); if (valueAsDocumentNode == null || !(valueAsDocumentNode.Node is DocumentCompositeNode) || !PlatformTypes.ResourceDictionary.IsAssignableFrom((ITypeId)valueAsDocumentNode.Node.Type)) { resourceDictionaryNode = (ResourceDictionaryNode)targetNode.ViewModel.CreateSceneNode(PlatformTypes.ResourceDictionary); targetNode.SetLocalValue(resourcesProperty, resourceDictionaryNode.DocumentNode); } else { resourceDictionaryNode = (ResourceDictionaryNode)targetNode.ViewModel.GetSceneNode(valueAsDocumentNode.Node); } } return(resourceDictionaryNode); }
internal static int AddResources(IList <ResourceEvaluation> referencedResources, IList <SceneNode> referringElements, ResourceConflictResolution conflictResolution, SceneNode destination, int insertionIndex) { SceneViewModel viewModel = destination.ViewModel; ResourceDictionaryNode destinationDictionary = ResourceHelper.EnsureResourceDictionaryNode(destination); int num = insertionIndex; foreach (ResourceEvaluation resourceEvaluation in (IEnumerable <ResourceEvaluation>)referencedResources) { DictionaryEntryNode resourceToAdd = (DictionaryEntryNode)null; switch (resourceEvaluation.ConflictType) { case ResourceEvaluationResult.NoExistingResource: resourceToAdd = resourceEvaluation.OriginalResource; goto case 1; case ResourceEvaluationResult.IdenticalResourceExists: case ResourceEvaluationResult.IdenticalResourceIsMasked: if (resourceToAdd != null) { ResourceHelper.AddResource(resourceToAdd, destinationDictionary, insertionIndex); ++insertionIndex; continue; } continue; case ResourceEvaluationResult.ConflictingResourceExists: resourceToAdd = ResourceHelper.ResolveResourceConflict(resourceEvaluation, referringElements, destination, conflictResolution); goto case 1; case ResourceEvaluationResult.ConflictingResourceIsMasked: resourceToAdd = ResourceHelper.ResolveResourceConflict(resourceEvaluation, referringElements, destination, conflictResolution); goto case 1; default: throw new InvalidEnumArgumentException("ConflictType", (int)resourceEvaluation.ConflictType, typeof(ResourceEvaluationResult)); } } return(insertionIndex - num); }
private void AddValueConverters(ResourceDictionaryNode resourceDictionary, List <ValueConverterModel> converters, List <SceneDocument> visitedDocuments) { foreach (DictionaryEntryNode dictionaryEntryNode in resourceDictionary) { ValueConverterModel valueConverter = ValueConverterModelFactory.CreateValueConverterModel((SceneNode)dictionaryEntryNode); if (valueConverter != null && converters.Find((Predicate <ValueConverterModel>)(vc => vc.DisplayName == valueConverter.DisplayName)) == null) { converters.Add(valueConverter); } } foreach (ResourceDictionaryNode resourceDictionaryNode in (IEnumerable <ResourceDictionaryNode>)resourceDictionary.MergedDictionaries) { string designTimeSource = resourceDictionaryNode.DesignTimeSource; if (!string.IsNullOrEmpty(designTimeSource)) { IProjectDocument projectDocument = this.TargetElement.ProjectContext.OpenDocument(designTimeSource); if (projectDocument != null) { this.AddDocumentConverters(projectDocument.Document as SceneDocument, converters, visitedDocuments); } } } }
internal static void AddPrimaryResource(ResourceEvaluation evaluatedPrimaryResource, IList <SceneNode> referringElements, ResourceConflictResolution conflictResolution, SceneNode destination, int insertionIndex) { SceneViewModel viewModel = destination.ViewModel; ResourceDictionaryNode destinationDictionary = ResourceHelper.EnsureResourceDictionaryNode(destination); DictionaryEntryNode resourceToAdd; switch (evaluatedPrimaryResource.ConflictType) { case ResourceEvaluationResult.NoExistingResource: resourceToAdd = evaluatedPrimaryResource.OriginalResource; break; case ResourceEvaluationResult.IdenticalResourceExists: resourceToAdd = ResourceHelper.ResolveResourceConflict(evaluatedPrimaryResource, referringElements, destination, conflictResolution); break; case ResourceEvaluationResult.IdenticalResourceIsMasked: resourceToAdd = evaluatedPrimaryResource.OriginalResource; break; case ResourceEvaluationResult.ConflictingResourceExists: resourceToAdd = ResourceHelper.ResolveResourceConflict(evaluatedPrimaryResource, referringElements, destination, conflictResolution); break; case ResourceEvaluationResult.ConflictingResourceIsMasked: resourceToAdd = evaluatedPrimaryResource.OriginalResource; break; default: throw new InvalidEnumArgumentException("ConflictType", (int)evaluatedPrimaryResource.ConflictType, typeof(ResourceEvaluationResult)); } if (resourceToAdd == null) { return; } ResourceHelper.AddResource(resourceToAdd, destinationDictionary, insertionIndex); }