private ThemeContentProvider.SystemThemeContentProvider GetCachedThemeContent(Dictionary <ThemeContentProvider.PlatformSpecificDocumentReference, ThemeContentProvider.SystemThemeContentProvider> themeCache, ThemeManager manager, IProjectContext projectContext, DocumentReference reference, IAssembly themeAssembly, string themeAssemblyPath, ITextBufferService textBufferService)
        {
            ThemeContentProvider.PlatformSpecificDocumentReference key = new ThemeContentProvider.PlatformSpecificDocumentReference(reference, projectContext != null ? projectContext.TargetFramework : (FrameworkName)null);
            ThemeContentProvider.SystemThemeContentProvider        themeContentProvider;
            if (!themeCache.TryGetValue(key, out themeContentProvider))
            {
                Encoding    encoding;
                ITextBuffer textBuffer = themeAssembly != null?ThemeManager.LoadResource(themeAssembly, themeAssemblyPath, textBufferService, out encoding) : ThemeContentProvider.LoadReference(reference, textBufferService, out encoding);

                IDocumentLocator documentLocator = DocumentReferenceLocator.GetDocumentLocator(reference);
                IDocumentContext userContext     = projectContext == null ? (IDocumentContext)null : (IDocumentContext) new DocumentContext(projectContext, documentLocator);
                XamlDocument     theme           = manager.GetTheme(documentLocator, themeAssembly != null, userContext, textBuffer, encoding);
                if (theme != null)
                {
                    bool flag1 = false;
                    try
                    {
                        if (projectContext != null)
                        {
                            if (!projectContext.IsCapabilitySet(PlatformCapability.IsWpf))
                            {
                                if (themeAssembly != null)
                                {
                                    bool flag2 = false;
                                    foreach (IAssembly assembly in (projectContext.Platform.Metadata as PlatformTypes).DefaultAssemblyReferences)
                                    {
                                        if (assembly == themeAssembly)
                                        {
                                            flag2 = true;
                                            break;
                                        }
                                    }
                                    if (flag2)
                                    {
                                        flag1 = true;
                                        AnimationEditor.ConvertFromToAnimations(theme.RootNode);
                                    }
                                }
                            }
                        }
                    }
                    catch
                    {
                        if (flag1)
                        {
                            theme = manager.GetTheme(documentLocator, themeAssembly != null, userContext, textBuffer, encoding);
                        }
                    }
                    themeContentProvider = new ThemeContentProvider.SystemThemeContentProvider(this.designerContext, theme);
                    themeCache[key]      = themeContentProvider;
                }
            }
            return(themeContentProvider);
        }
Beispiel #2
0
 internal static IProject GetProject(IProjectManager projectManager, IDocumentContext projectItemDocumentContext)
 {
     if (projectItemDocumentContext != null && DocumentReferenceLocator.GetDocumentReference(projectItemDocumentContext) != (DocumentReference)null && projectManager.CurrentSolution != null)
     {
         DocumentReference documentReference = DocumentReferenceLocator.GetDocumentReference(projectItemDocumentContext);
         foreach (IProject project in projectManager.CurrentSolution.Projects)
         {
             if (project.FindItem(documentReference) != null)
             {
                 return(project);
             }
         }
     }
     return((IProject)null);
 }
Beispiel #3
0
        private void TryAddItem(IProjectItem projectItem)
        {
            IProjectContext projectContext = (IProjectContext)ProjectXamlContext.GetProjectContext(projectItem.Project);

            if (projectContext == null)
            {
                return;
            }
            IProjectDocument document1 = projectContext.GetDocument(DocumentReferenceLocator.GetDocumentLocator(projectItem.DocumentReference));

            if (document1 != null && document1.DocumentType == ProjectDocumentType.ResourceDictionary && this.FindProvider(projectItem) == null)
            {
                IDocument document2 = projectItem.Document;
                this.ProjectResourceAssetAggregator.AddProvider((AssetProvider) new ResourceDictionaryAssetProvider(this.DesignerContext.ResourceManager.GetContentProviderForResourceDictionary(projectItem)));
            }
            this.ProjectAssetProvider.NeedsUpdate = true;
        }
Beispiel #4
0
        public override bool IsValidStartupItem(IProjectItem projectItem)
        {
            if (this.IsControlLibrary)
            {
                return(base.IsValidStartupItem(projectItem));
            }
            ProjectXamlContext projectContext = ProjectXamlContext.GetProjectContext((IProject)this);

            if (projectItem != null && projectContext != null)
            {
                IProjectDocument document = projectContext.GetDocument(DocumentReferenceLocator.GetDocumentLocator(projectItem.DocumentReference));
                if (document != null && document.DocumentType == ProjectDocumentType.Page)
                {
                    return(true);
                }
            }
            return(false);
        }
Beispiel #5
0
        private void OnViewXamlCommand()
        {
            List <DocumentNode> itemsDocumentNodes = this.GetSelectedItemsDocumentNodes();

            if (itemsDocumentNodes == null || itemsDocumentNodes.Count <= 0)
            {
                return;
            }
            IProjectItem projectItem = (IProjectItem)null;

            foreach (IProject project in this.projectManager.CurrentSolution.Projects)
            {
                projectItem = project.FindItem(DocumentReferenceLocator.GetDocumentReference(itemsDocumentNodes[0].Context));
                if (projectItem != null)
                {
                    break;
                }
            }
            SceneView sceneView = projectItem.OpenView(true) as SceneView;

            if (sceneView == null)
            {
                return;
            }
            DocumentNode rootNode = itemsDocumentNodes[0].DocumentRoot.RootNode;

            if (itemsDocumentNodes.Count == 1 && itemsDocumentNodes[0] == rootNode)
            {
                sceneView.EnsureXamlEditorVisible();
            }
            else
            {
                if (itemsDocumentNodes.Contains(rootNode))
                {
                    itemsDocumentNodes.Remove(rootNode);
                }
                GoToXamlCommand.GoToXaml(sceneView.ViewModel.XamlDocument, itemsDocumentNodes);
            }
        }
 private void CreateProviders(IPlatform platform)
 {
     this.themeManager = new UserThemeManager(platform);
     foreach (IDocumentLocator documentLocator in (IEnumerable <IDocumentLocator>) this.themeManager.Themes)
     {
         this.AddProvider((AssetProvider) new UserThemeAssetProvider(this.designerContext, (ThemeManager)this.themeManager, DocumentReferenceLocator.GetDocumentReference(documentLocator)));
     }
 }
 protected override bool UpdateAssets()
 {
     if (this.originalDocumentProvider == null)
     {
         Encoding encoding;
         this.originalDocumentProvider = new ResourceDictionaryContentProvider(this.designerContext, this.themeManager.GetTheme(DocumentReferenceLocator.GetDocumentLocator(this.documentReference), false, (IDocumentContext)null, ThemeContentProvider.LoadReference(this.documentReference, this.designerContext.TextBufferService, out encoding), encoding));
         this.ContentProvider          = this.GetProvider(this.designerContext.ActiveProject);
     }
     return(base.UpdateAssets());
 }