private Action <IEnumerable <CategoryItemViewModel> > CreateAppender(Func <HierarchyItemViewModel> itemGetter)
        {
            return(categories =>
            {
                HierarchyItemViewModel item = itemGetter();

                if (item != null)
                {
                    List <CategoryItemViewModel> previousCategories = item.Categories;

                    item.Expanded = true;
                    item.Categories = categories.ToList();

                    item.Categories.ForEach(
                        cate =>
                    {
                        CategoryItemViewModel previousCategory = previousCategories.FirstOrDefault(pcate => pcate.Category.CategoryId == cate.Category.CategoryId);
                        if (previousCategory != null)
                        {
                            cate.Expanded = previousCategory.Expanded;
                            cate.Selected = previousCategory.Selected;
                            cate.Categories = previousCategory.Categories;
                        }
                    }
                        );
                }
            });
        }
        private void Collapse(HierarchyViewModel hierarchy, HierarchyPath hierarchyPath)
        {
            HierarchyItemViewModel item = this.FindItem(hierarchy, hierarchyPath);

            if (item != null)
            {
                item.Expanded = false;
                item.Categories.Clear();
            }
        }
        private void Select(HierarchyViewModel hierarchy, HierarchyPath hierarchyPath)
        {
            this.UnselectAll(hierarchy);

            HierarchyItemViewModel item = this.FindItem(hierarchy, hierarchyPath);

            if (item != null)
            {
                item.Selected = true;
            }
        }
Пример #4
0
        private String GetCode(HierarchyItemViewModel item)
        {
            if (item is CatalogItemViewModel)
            {
                return(((CatalogItemViewModel)item).Catalog.Code);
            }
            else if (item is CategoryItemViewModel)
            {
                return(((CategoryItemViewModel)item).Category.Code);
            }

            return(null);
        }
Пример #5
0
        private String GetPath(IEnumerable <HierarchyItemViewModel> items, HierarchyItemViewModel selectedItem)
        {
            HierarchyItemViewModel parentItem;

            if (items.Contains(selectedItem))
            {
                return(this.GetCode(selectedItem));
            }
            else if (selectedItem is CategoryItemViewModel && (parentItem = items.FirstOrDefault(i => this.Contains(i.Categories, selectedItem as CategoryItemViewModel))) != null)
            {
                return(String.Concat(this.GetCode(parentItem), this._catalogHierarchyServices.PathSeparator, this.GetPath(parentItem.Categories, selectedItem)));
            }

            return(null);
        }
        public AssetFolderViewModel GetOrCreateFolder(string path)
        {
            var directories = path.Split("/", StringSplitOptions.RemoveEmptyEntries);
            HierarchyItemViewModel hierarchyItem = this;

            foreach (var dir in directories)
            {
                var folder = hierarchyItem.Children.FirstOrDefault(i => i.Name == dir);
                if (folder == null)
                {
                    folder = new AssetFolderViewModel(dir);
                    hierarchyItem.Children.Add(folder);
                }
                hierarchyItem = folder;
            }
            return((AssetFolderViewModel)hierarchyItem);
        }
        private void EnsureSelection(CatalogHierarchyPart part, HierarchyViewModel hierarchy)
        {
            IEnumerable <HierarchyItemViewModel> selectables = (hierarchy.Count == 1 ? hierarchy.SelectMany(cata => cata.Categories) : hierarchy.Cast <HierarchyItemViewModel>()).ToList();

            if (part.GenerateUrls)
            {
                this.UnselectAll(hierarchy);
            }
            else if (!this.HasSelection(selectables))
            {
                HierarchyItemViewModel item = selectables.FirstOrDefault();

                if (item != null)
                {
                    item.Selected = true;
                }
            }
        }
        private HierarchyItemViewModel FindItem(HierarchyViewModel hierarchy, HierarchyPath hierarchyPath)
        {
            HierarchyItemViewModel item = hierarchy.FirstOrDefault(cata => cata.Catalog.Code.EqualsOrdinalIgnoreCase(hierarchyPath.Catalog));

            if (item != null)
            {
                foreach (String categoryCode in hierarchyPath.Categories)
                {
                    item = item.Categories.FirstOrDefault(cate => cate.Category.Code.EqualsOrdinalIgnoreCase(categoryCode));

                    if (item == null)
                    {
                        break;
                    }
                }
            }

            return(item);
        }
 private Action <IEnumerable <CategoryItemViewModel> > CreateAppender(HierarchyItemViewModel item)
 {
     return(this.CreateAppender(() => item));
 }