/// <summary> /// Calculate and sets the width of the items. /// </summary> /// <param name="items">Items.</param> /// <param name="forceUpdate">If set to <c>true</c> force update.</param> public override void CalculateItemsSizes(ObservableList <TItem> items, bool forceUpdate = true) { RemoveOldItems(items); if (Owner.PrecalculateItemSizes) { Owner.DefaultItemCopy.gameObject.SetActive(true); if (Owner.DefaultItemLayout == null) { Owner.DefaultItemLayout = Owner.DefaultItemCopy.GetComponent <LayoutGroup>(); Owner.DefaultItemNestedLayouts = Owner.DefaultItemCopy.GetComponentsInChildren <LayoutGroup>(); Array.Reverse(Owner.DefaultItemNestedLayouts); } if (forceUpdate) { items.ForEach(x => { ItemSizes[x] = CalculateComponentSize(x); }); } else { foreach (var item in items) { if (!ItemSizes.ContainsKey(item)) { ItemSizes[item] = CalculateComponentSize(item); } } } Owner.DefaultItemCopy.gameObject.SetActive(false); } else { if (forceUpdate) { items.ForEach(x => { ItemSizes[x] = Owner.ItemSize; }); } else { foreach (var item in items) { if (!ItemSizes.ContainsKey(item)) { ItemSizes[item] = Owner.ItemSize; } } } } }
/// <summary> /// Calculated selected indicies of new items . /// </summary> /// <returns>The selected indicies.</returns> /// <param name="newItems">New items.</param> List <int> NewSelectedIndicies(ObservableList <string> newItems) { var selected_indicies = new List <int>(); if (newItems.Count == 0) { return(selected_indicies); } //duplicated items should not be selected more than at start var new_items_copy = new List <string>(newItems); var selected_items = SelectedIndicies.Convert <int, string>(GetDataItem); selected_items = selected_items.Where(x => { var is_valid_item = newItems.Contains(x); if (is_valid_item) { new_items_copy.Remove(x); } return(is_valid_item); }).ToList(); newItems.ForEach((item, index) => { if (selected_items.Contains(item)) { selected_items.Remove(item); selected_indicies.Add(index); } }); return(selected_indicies); }
/// <summary> /// Calculate and sets the height of the items. /// </summary> /// <param name="items">Items.</param> /// <param name="forceUpdate">If set to <c>true</c> force update.</param> void CalculateItemsSizes(ObservableList <TItem> items, bool forceUpdate = true) { // remove old items ItemSizes.Keys.Except(items).ToArray().ForEach(x => ItemSizes.Remove(x)); if (defaultItemLayoutGroup == null) { DefaultItemCopy.gameObject.SetActive(true); defaultItemLayoutGroup = DefaultItemCopy.GetComponent <LayoutGroup>(); } if (forceUpdate) { DefaultItemCopy.gameObject.SetActive(true); items.ForEach(x => { ItemSizes[x] = CalculateComponentSize(x); }); DefaultItemCopy.gameObject.SetActive(false); } else { items.Except(ItemSizes.Keys).ForEach(x => { ItemSizes[x] = CalculateComponentSize(x); }); } }
void CollectionChanged() { if (nodes == null) { return; } nodes.ForEach(SetParent); }
/// <summary> /// Calculate and sets the height of the items. /// </summary> /// <param name="items">Items.</param> /// <param name="forceUpdate">If set to <c>true</c> force update.</param> void SetItemsHeight(ObservableList <TItem> items, bool forceUpdate = true) { items.ForEach(x => { if ((x.Height == 0) || forceUpdate) { x.Height = CalculateItemHeight(x); } }); }
/// <summary> /// Calculate and sets the width of the items. /// </summary> /// <param name="items">Items.</param> /// <param name="forceUpdate">If set to <c>true</c> force update.</param> void SetItemsWidth(ObservableList <TItem> items, bool forceUpdate = true) { items.ForEach(x => { if ((x.Width == 0) || forceUpdate) { x.Width = CalculateItemWidth(x); } }); }
/// <summary> /// Load subnodes data for specified nodes. /// </summary> /// <param name="nodes">Nodes.</param> public virtual void LoadNodes(ObservableList <TreeNode <FileSystemEntry> > nodes) { nodes.BeginUpdate(); try { nodes.ForEach(LoadNode); } finally { nodes.EndUpdate(); } }
/// <summary> /// Calculate and sets the height of the items. /// </summary> /// <param name="items">Items.</param> /// <param name="forceUpdate">If set to <c>true</c> force update.</param> void SetItemsHeight(ObservableList <TItem> items, bool forceUpdate = true) { if (defaultItemLayoutGroup == null) { DefaultItemCopy.gameObject.SetActive(true); defaultItemLayoutGroup = DefaultItemCopy.GetComponent <LayoutGroup>(); } DefaultItemCopy.gameObject.SetActive(true); items.ForEach(x => { if ((x.Height == 0) || forceUpdate) { x.Height = CalculateItemHeight(x); } }); DefaultItemCopy.gameObject.SetActive(false); }