protected void InitializeTree() { _tree = new ItemsList(); TreeItem item = new TreeItem("Name", "First item"); CreateChildren(item, 2, 3); _tree.Add(item); item = new TreeItem("Name", "Second item"); CreateChildren(item, 2, 4); _tree.Add(item); item = new TreeItem("Name", "Third item"); CreateChildren(item, 2, 5); _tree.Add(item); }
protected void CreateChildren(TreeItem item, int level, int maxLevel) { if (level > maxLevel) return; TreeItem childItem = new TreeItem("Name", "First item, level " + level); CreateChildren(childItem, level + 1, maxLevel); item.SubItems.Add(childItem); childItem = new TreeItem("Name", "Second item, level " + level); CreateChildren(childItem, level + 1, maxLevel); item.SubItems.Add(childItem); childItem = new TreeItem("Name", "Third item, level " + level); CreateChildren(childItem, level + 1, maxLevel); item.SubItems.Add(childItem); }
protected void AddResources(IEnumerable<ResourcePathMetadata> resources, ItemsList items) { List<ResourcePathMetadata> resourcesMetadata = new List<ResourcePathMetadata>(resources); resourcesMetadata.Sort((a, b) => a.ResourceName.CompareTo(b.ResourceName)); foreach (ResourcePathMetadata resourceMetadata in resourcesMetadata) { TreeItem directoryItem = new TreeItem(Consts.KEY_NAME, resourceMetadata.ResourceName); directoryItem.AdditionalProperties[Consts.KEY_RESOURCE_PATH] = resourceMetadata.ResourcePath; directoryItem.SetLabel(Consts.KEY_PATH, resourceMetadata.HumanReadablePath); if (ChoosenResourcePath == resourceMetadata.ResourcePath) directoryItem.Selected = true; directoryItem.SelectedProperty.Attach(OnTreePathSelectionChanged); directoryItem.AdditionalProperties[Consts.KEY_EXPANSION] = new ExpansionHelper(directoryItem, this); items.Add(directoryItem); } }
public ExpansionHelper(TreeItem directoryItem, PathBrowserService parent) { _parent = parent; _directoryItem = directoryItem; _isExpandedProperty.Attach(OnExpandedChanged); }
public void RefreshOrClearSubPathItems(TreeItem pathItem, bool clearSubItems) { if (clearSubItems) { pathItem.SubItems.Clear(); pathItem.SubItems.FireChange(); } else RefreshResourceProviderPathList(pathItem.SubItems, (ResourcePath) pathItem.AdditionalProperties[Consts.KEY_RESOURCE_PATH]); }
protected void BuildCategoriesTree(ItemsList contents, TreeItem parentItem, ICollection<string> categories, ICollection<string> allSelectedCategories, IDictionary<string, ICollection<string>> categories2Children, IDictionary<string, MediaCategory> allCategories) { contents.Clear(); List<string> categoriesSorted = new List<string>(categories); categoriesSorted.Sort(); foreach (string mediaCategory in categoriesSorted) { TreeItem categoryItem = new TreeItem(Consts.KEY_NAME, mediaCategory); categoryItem.AdditionalProperties[Consts.KEY_MEDIA_CATEGORY] = allCategories[mediaCategory]; categoryItem.AdditionalProperties[Consts.KEY_PARENT_ITEM] = parentItem; if (allSelectedCategories.Contains(mediaCategory)) categoryItem.Selected = true; PropertyChangedHandler handler = (property, oldValue) => OnMediaCategoryItemSelectionChanged(categoryItem); categoryItem.SelectedProperty.Attach(handler); categoryItem.AdditionalProperties["HandlerStrongReference"] = handler; // SelectedProperty only manages weak references to its handlers -> avoid handler to be removed ICollection<string> childCategories; if (!categories2Children.TryGetValue(mediaCategory, out childCategories)) childCategories = new List<string>(); BuildCategoriesTree(categoryItem.SubItems, categoryItem, childCategories, allSelectedCategories, categories2Children, allCategories); contents.Add(categoryItem); } }
protected void RefreshResourceProviderPathList(ItemsList items, ResourcePath path) { items.Clear(); IEnumerable<ResourcePathMetadata> res = GetChildDirectoriesData(path); if (res != null) { List<ResourcePathMetadata> directories = new List<ResourcePathMetadata>(res); directories.Sort((a, b) => a.ResourceName.CompareTo(b.ResourceName)); foreach (ResourcePathMetadata childDirectory in directories) { TreeItem directoryItem = new TreeItem(Consts.KEY_NAME, childDirectory.ResourceName); directoryItem.AdditionalProperties[Consts.KEY_RESOURCE_PATH] = childDirectory.ResourcePath; directoryItem.SetLabel(Consts.KEY_PATH, childDirectory.HumanReadablePath); if (ChoosenResourcePath == childDirectory.ResourcePath) directoryItem.Selected = true; directoryItem.SelectedProperty.Attach(OnTreePathSelectionChanged); directoryItem.AdditionalProperties[Consts.KEY_EXPANSION] = new ExpansionHelper(directoryItem, this); items.Add(directoryItem); } } items.FireChange(); }
public ExpansionHelper(TreeItem directoryItem, SharesProxy parent) { _parent = parent; _directoryItem = directoryItem; _isExpandedProperty.Attach(OnExpandedChanged); }
void OnMediaCategoryItemSelectionChanged(TreeItem changedItem) { if (changedItem.Selected) SelectMediaCategoryHierarchy(changedItem); else DeselectMediaCategoryHierarchy(changedItem); UpdateMediaCategories(GetSelectedMediaCategories(_allMediaCategoriesTree)); }
static void DeselectMediaCategoryHierarchy(TreeItem item) { item.Selected = false; foreach (TreeItem childItem in item.SubItems) DeselectMediaCategoryHierarchy(childItem); }
static void SelectMediaCategoryHierarchy(TreeItem item) { item.Selected = true; TreeItem parent = (TreeItem)item.AdditionalProperties[Consts.KEY_PARENT_ITEM]; if (parent == null) return; SelectMediaCategoryHierarchy(parent); }