/// <summary> /// Returns whether an item is a global template</summary> /// <param name="item">Item to test</param> /// <returns>True iff item is a global template</returns> public bool IsExternalTemplate(object item) { var domNode = item.As <DomNode>(); if (domNode == null) { return(false); } foreach (var node in domNode.Lineage) { TemplateFolder templateFolder = node.As <TemplateFolder>(); if (templateFolder != null && templateFolder.Url != null) { return(true); } } return(false); }
private bool ValidateNewFolderUri(TemplateFolder parentFolder, Uri uri) { if (uri == null) { return(false); } foreach (var templateFolder in parentFolder.Folders) { if (templateFolder.Url == uri) { return(false); //TODO: pop up warning dialog } if (!ValidateNewFolderUri(templateFolder, uri)) { return(false); } } return(true); }
/// <summary> /// Searches for a template by its GUID</summary> /// <param name="parentFolder">Template's parent folder to search through</param> /// <param name="guid">GUID to search for</param> /// <returns>Template matching given GUID</returns> public Template SearchForTemplateByGuid(TemplateFolder parentFolder, Guid guid) { foreach (var template in parentFolder.Templates) { if (template.Guid == guid) { return(template); } } foreach (var templateFolder in parentFolder.Folders) { var template = SearchForTemplateByGuid(templateFolder, guid); if (template != null) { return(template); } } return(null); }
/// <summary> /// Imports templates and template folders stored in an external file</summary> /// <param name="parentTemplateFolder">Template folder in which to import templates and template folders</param> /// <param name="fromParent">Root of templates to import</param> protected virtual void ImportTemplates(TemplateFolder parentTemplateFolder, DomNode fromParent) { // assume all templates and their containing folders are children of a root template folder foreach (var domNode in fromParent.LevelSubtree) // add top-level folders { if (domNode.Is <TemplateFolder>()) // this should be the root template folder of the imported DOM tree { foreach (var child in domNode.Children.ToArray()) { if (child.Is <TemplateFolder>()) { parentTemplateFolder.Folders.Add(child.Cast <TemplateFolder>()); } else if (child.Is <Template>()) { parentTemplateFolder.Templates.Add(child.Cast <Template>()); } } break; } } }
private bool ValidateNewFolderUri(TemplateFolder parentFolder, Uri uri) { if (uri == null) return false; foreach (var templateFolder in parentFolder.Folders) { if (templateFolder.Url == uri) return false; if (!ValidateNewFolderUri(templateFolder, uri)) return false; } return true; }
public Template SearchForTemplateByGuid(TemplateFolder parentFolder, Guid guid) { foreach (var template in parentFolder.Templates) { if (template.Guid == guid) { return template; } } foreach (var templateFolder in parentFolder.Folders) { var template = SearchForTemplateByGuid(templateFolder, guid); if (template != null) return template; } return null; }
protected virtual void ImportTemplates(TemplateFolder parentTemplateFolder, DomNode fromParent) { // assume all templates and their containing folders are children of a root template folder foreach (var domNode in fromParent.LevelSubtree) // add top-level folders { if (domNode.Is<TemplateFolder>()) // this should be the root template folder of the imported DOM tree { foreach (var child in domNode.Children.ToArray()) { if (child.Is<TemplateFolder>()) { parentTemplateFolder.Folders.Add(child.Cast<TemplateFolder>()); } else if (child.Is<Template>()) { parentTemplateFolder.Templates.Add(child.Cast<Template>()); } } break; } } }