/// <summary> /// Add a root category, assuming it doesn't already exist /// </summary> /// <param name="name"></param> /// <returns></returns> private BrowserRootElement AddRootCategory(string name) { var ele = new BrowserRootElement(name, BrowserRootCategories); BrowserRootCategories.Add(ele); return(ele); }
/// <summary> /// Add a root category, assuming it doesn't already exist /// </summary> /// <param name="name"></param> /// <returns></returns> internal BrowserRootElement AddRootCategoryToStart(string name) { var ele = new BrowserRootElement(name, BrowserRootCategories); BrowserRootCategories.Insert(0, ele); return(ele); }
public void RemoveEmptyRootCategory(BrowserRootElement rootEle) { if (!ContainsCategory(rootEle.Name)) { return; } BrowserRootCategories.Remove(rootEle); }
public BrowserItem GetCategoryByName(string categoryName) { var split = SplitCategoryName(categoryName); if (!split.Any()) { return(null); } var cat = (BrowserItem)BrowserRootCategories.FirstOrDefault(x => x.Name == split[0]); foreach (var splitName in split.GetRange(1, split.Count - 1)) { if (cat == null) { return(cat); } cat = TryGetSubCategory(cat, splitName); } return(cat); }
/// <summary> /// Remove a category and all its children from the browser and search. The category does /// not have to be empty. /// </summary> /// <param name="ele"></param> public void RemoveCategory(BrowserItem ele) { var nodes = ele.Items.Where(x => x is NodeSearchElement) .Cast <NodeSearchElement>().ToList(); var cats = ele.Items.Where(x => x is BrowserInternalElement) .Cast <BrowserInternalElement>().ToList(); nodes.Select(x => x.Name).ToList().ForEach(RemoveNode); cats.ToList().ForEach(RemoveCategory); ele.Items.Clear(); if (ele is BrowserRootElement) { BrowserRootCategories.Remove(ele as BrowserRootElement); } else if (ele is BrowserInternalElement) { (ele as BrowserInternalElement).Parent.Items.Remove(ele); } }
public void RemoveEmptyCategories() { this.BrowserRootCategories = new ObservableCollection <BrowserRootElement>(BrowserRootCategories.Where(x => x.Items.Any() || x.Name == "Top Result")); }