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; } }
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); }
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)); }