private void ChangeActiveTaxonomy(TaxonomyItem newTaxonomyItem) { // handle the case where no taxonomy is selected // this can happen when all taxonomies are closed if (newTaxonomyItem == null) { Namespaces.Clear(); CurrentDirectory = ""; return; } var taxonomy = newTaxonomyItem.Taxonomy.Value; Namespaces.Clear(); foreach (var ns in taxonomy.AllNamespaces()) { var namespaceItem = new NamespaceItem(ns); foreach (var tag in taxonomy.TagsInNamespace(ns)) { namespaceItem.Tags.Add(tag); } Namespaces.Add(namespaceItem); } CurrentDirectory = taxonomy.RootPath; }
// text: tag in the format 'namespace:tag' public void AddTag(string text) { var split = text.Trim().Split(':'); var ns = new Namespace(split[0]); var tagName = new TagName(split[1]); var taxonomy = CurrentTaxonomy.Taxonomy.Value; var tag = taxonomy.AddTag(ns, tagName); NamespaceItem namespaceItem = namespaces.FirstOrDefault(ni => ni.Namespace == ns); if (namespaceItem == null) { namespaceItem = new NamespaceItem(ns); namespaces.Add(namespaceItem); } namespaceItem.Tags.Add(tag); }