Esempio n. 1
0
        /// <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);
        }
Esempio n. 2
0
        /// <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);
        }
Esempio n. 3
0
        public void RemoveEmptyRootCategory(BrowserRootElement rootEle)
        {
            if (!ContainsCategory(rootEle.Name))
            {
                return;
            }

            BrowserRootCategories.Remove(rootEle);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        /// <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);
            }
        }
Esempio n. 6
0
 public void RemoveEmptyCategories()
 {
     this.BrowserRootCategories = new ObservableCollection <BrowserRootElement>(BrowserRootCategories.Where(x => x.Items.Any() || x.Name == "Top Result"));
 }