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); }
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); }
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; }
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); }
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()); }