Ejemplo n.º 1
0
        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);
            }
        }
Ejemplo n.º 2
0
        public TChildType[] Write(BaseBindingList <TChildType> bindingList)
        {
            var array = new TChildType[bindingList.Count];

            bindingList.CopyTo(array, 0);
            return(array);
        }
Ejemplo n.º 3
0
        public override void CreateNullSelectable(BaseBindingList <TItemType> selectable)
        {
            var newItem = new TItemType {
                Name = ""
            };

            newItem.ClearWarnings();
            selectable.Add(newItem);
        }
Ejemplo n.º 4
0
 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) });
     }
 }
Ejemplo n.º 5
0
        public Parent1Child()
        {
            generator1 = new TChildKeyGenerator();

            bindingItems1    = new BaseBindingList <TChildType>();
            selectableItems1 = new BaseBindingList <TChildType>();

            bindingItems1.ListChanged += ParentListItem1Changed;
            if (generator1.NullSelectable)
            {
                generator1.CreateNullSelectable(selectableItems1);
            }
        }
Ejemplo n.º 6
0
        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();
        }
Ejemplo n.º 7
0
        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;
        }
Ejemplo n.º 8
0
        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>();
        }
Ejemplo n.º 9
0
        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);
            }
        }
Ejemplo n.º 10
0
 public TChildType Find(BaseBindingList <TChildType> bindingList, TChildKey key)
 {
     return(bindingList.FirstOrDefault(child => KeySelector.Invoke(child).CompareTo(key) == 0));
 }
Ejemplo n.º 11
0
 public abstract void CreateNullSelectable(BaseBindingList <TChildType> selectable);