public void Sort(BaseBindingList <TChildType> bindingList, BaseBindingList <TChildType> selectable) { if (bindingList.Count <= 1) { return; } var sortedItems = bindingList.OrderBy(KeySelector).ToArray(); var nbItem = bindingList.Count; for (var i = 0; i < nbItem; ++i) { var oldIndex = bindingList.IndexOf(sortedItems[i]); if (oldIndex == i) { continue; } var temp = bindingList[i]; bindingList[i] = sortedItems[i]; bindingList[oldIndex] = temp; bindingList.OnListChanged(new ListChangedEventArgs(ListChangedType.ItemMoved, i, oldIndex)); } if (Selectable) { UpdateSelectable(bindingList, selectable); } }
public TChildType[] Write(BaseBindingList <TChildType> bindingList) { var array = new TChildType[bindingList.Count]; bindingList.CopyTo(array, 0); return(array); }
public override void CreateNullSelectable(BaseBindingList <TItemType> selectable) { var newItem = new TItemType { Name = "" }; newItem.ClearWarnings(); selectable.Add(newItem); }
public void CheckKeys(BaseBindingList <TChildType> bindingList) { foreach (var child in bindingList) { var child1 = child; child.Assert(KeySelector(child), arg => bindingList.Count(aChild => KeySelector(child1).CompareTo(KeySelector(aChild)) == 0) == 1, KeyPropertyName, "\"{0}\" must be defined only once", new object[] { KeySelector(child) }); } }
public Parent1Child() { generator1 = new TChildKeyGenerator(); bindingItems1 = new BaseBindingList <TChildType>(); selectableItems1 = new BaseBindingList <TChildType>(); bindingItems1.ListChanged += ParentListItem1Changed; if (generator1.NullSelectable) { generator1.CreateNullSelectable(selectableItems1); } }
public void UpdateSelectable(BaseBindingList <TChildType> bindingList, BaseBindingList <TChildType> selectable) { var nbOldSelectable = selectable.Count; var nbNewSelectable = bindingList.Count + ((NullSelectable) ? 1 : 0); for (var i = 1; i < nbNewSelectable; ++i) { if (i < nbOldSelectable) { selectable[i] = bindingList[i - ((NullSelectable) ? 1 : 0)]; } else { selectable.Add(bindingList[i - ((NullSelectable) ? 1 : 0)]); } } for (var i = nbNewSelectable; i < nbOldSelectable; ++i) { selectable.RemoveAt(nbNewSelectable); } selectable.ResetBindings(); }
public void Read(BaseBindingList <TChildType> bindingList, BaseBindingList <TChildType> selectable, TChildType[] array, object parent) { if (Sorted) { array = array.OrderBy(KeySelector).ToArray(); } var lastRaiseListChangedEvents = bindingList.RaiseListChangedEvents; bindingList.RaiseListChangedEvents = false; selectable.RaiseListChangedEvents = false; bindingList.Clear(); foreach (var item in array) { item.Parent = parent; bindingList.Add(item); } if (Selectable) { UpdateSelectable(bindingList, selectable); } bindingList.RaiseListChangedEvents = lastRaiseListChangedEvents; selectable.RaiseListChangedEvents = lastRaiseListChangedEvents; }
public Parent7Child() { bindingItems1 = new BaseBindingList <TChildType1>(); selectableItems1 = new BaseBindingList <TChildType1>(); bindingItems2 = new BaseBindingList <TChildType2>(); selectableItems2 = new BaseBindingList <TChildType2>(); bindingItems3 = new BaseBindingList <TChildType3>(); selectableItems3 = new BaseBindingList <TChildType3>(); bindingItems4 = new BaseBindingList <TChildType4>(); selectableItems4 = new BaseBindingList <TChildType4>(); bindingItems5 = new BaseBindingList <TChildType5>(); selectableItems5 = new BaseBindingList <TChildType5>(); bindingItems6 = new BaseBindingList <TChildType6>(); selectableItems6 = new BaseBindingList <TChildType6>(); bindingItems7 = new BaseBindingList <TChildType7>(); selectableItems7 = new BaseBindingList <TChildType7>(); }
public Parent2Child() { generator1 = new TChildKeyGenerator1(); generator2 = new TChildKeyGenerator2(); bindingItems1 = new BaseBindingList <TChildType1>(); selectableItems1 = new BaseBindingList <TChildType1>(); bindingItems2 = new BaseBindingList <TChildType2>(); selectableItems2 = new BaseBindingList <TChildType2>(); bindingItems1.ListChanged += ParentListItem1Changed; if (generator1.NullSelectable) { generator1.CreateNullSelectable(selectableItems1); } bindingItems2.ListChanged += ParentListItem2Changed; if (generator2.NullSelectable) { generator2.CreateNullSelectable(selectableItems2); } }
public TChildType Find(BaseBindingList <TChildType> bindingList, TChildKey key) { return(bindingList.FirstOrDefault(child => KeySelector.Invoke(child).CompareTo(key) == 0)); }
public abstract void CreateNullSelectable(BaseBindingList <TChildType> selectable);