Exemplo n.º 1
0
        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);
                        }
                    }
                }
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
 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;
        }
Exemplo n.º 6
0
        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);
        }
Exemplo n.º 7
0
        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);
                }
            }
        }
Exemplo n.º 8
0
        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();
            }
        }
Exemplo n.º 9
0
        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);
        }
Exemplo n.º 10
0
        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);
        }
Exemplo n.º 11
0
 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);
             }
         }
     }
 }
Exemplo n.º 12
0
        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);
        }