Exemple #1
0
        public virtual void Organise(DragablzItemsControl requestor, Size measureBounds, IEnumerable <DragablzItem> items)
        {
            if (items == null)
            {
                throw new ArgumentNullException("items");
            }

            OrganiseInternal(
                requestor,
                measureBounds,
                items.Select((di, idx) => new Tuple <int, DragablzItem>(idx, di))
                .OrderBy(tuple => tuple,
                         MultiComparer <Tuple <int, DragablzItem> > .Ascending(tuple => _getLocation(tuple.Item2))
                         .ThenAscending(tuple => tuple.Item1))
                .Select(tuple => tuple.Item2));
        }
Exemple #2
0
        public static void Main(string[] args)
        {
            List <City> cities = CityDataImporter.LoadData();

            // TODO Swap out comparers as desired
            //IComparer<City> comparer = new PopulationComparer();
            MultiComparer multcomp = new MultiComparer();

            multcomp.Comparers.Add(new StateComparer());
            multcomp.Comparers.Add(new AreaComparer());

            cities.Sort(multcomp);

            PrintCities(cities);

            Console.ReadLine();
        }
Exemple #3
0
        public void ShouldCompareByTimeAndValue()
        {
            // given
            var list = new List <TestObj>
            {
                new TestObj {
                    Value = 10, Time = new DateTime(2015, 9, 15, 10, 0, 0)
                },
                new TestObj {
                    Value = 7, Time = new DateTime(2015, 9, 15, 11, 0, 0)
                },
                new TestObj {
                    Value = 6, Time = new DateTime(2015, 9, 15, 11, 0, 0)
                },
                new TestObj {
                    Value = 8, Time = new DateTime(2015, 9, 15, 8, 0, 0)
                },
                new TestObj {
                    Value = 3, Time = new DateTime(2015, 9, 15, 15, 0, 0)
                }
            };
            var comparer = MultiComparer.Of(
                new TimeComparer(),
                new ValueComparer());

            // when
            var sorted = list.SortBy(comparer);

            // then
            Check.That(sorted).ContainsExactly(
                new TestObj {
                Value = 8, Time = new DateTime(2015, 9, 15, 8, 0, 0)
            },
                new TestObj {
                Value = 10, Time = new DateTime(2015, 9, 15, 10, 0, 0)
            },
                new TestObj {
                Value = 6, Time = new DateTime(2015, 9, 15, 11, 0, 0)
            },
                new TestObj {
                Value = 7, Time = new DateTime(2015, 9, 15, 11, 0, 0)
            },
                new TestObj {
                Value = 3, Time = new DateTime(2015, 9, 15, 15, 0, 0)
            });
        }
Exemple #4
0
        public void ShouldIgnoreComparationWhenNoComparersSpecified()
        {
            // given
            var list = new List <TestObj>
            {
                new TestObj {
                    Value = 10, Time = new DateTime(2015, 9, 15, 10, 0, 0)
                },
                new TestObj {
                    Value = 7, Time = new DateTime(2015, 9, 15, 11, 0, 0)
                },
                new TestObj {
                    Value = 6, Time = new DateTime(2015, 9, 15, 11, 0, 0)
                },
                new TestObj {
                    Value = 8, Time = new DateTime(2015, 9, 15, 8, 0, 0)
                },
                new TestObj {
                    Value = 3, Time = new DateTime(2015, 9, 15, 15, 0, 0)
                }
            };
            var comparer = MultiComparer.Of <TestObj>();

            // when
            var sorted = list.SortBy(comparer);

            // then
            Check.That(sorted).ContainsExactly(
                new TestObj {
                Value = 10, Time = new DateTime(2015, 9, 15, 10, 0, 0)
            },
                new TestObj {
                Value = 7, Time = new DateTime(2015, 9, 15, 11, 0, 0)
            },
                new TestObj {
                Value = 6, Time = new DateTime(2015, 9, 15, 11, 0, 0)
            },
                new TestObj {
                Value = 8, Time = new DateTime(2015, 9, 15, 8, 0, 0)
            },
                new TestObj {
                Value = 3, Time = new DateTime(2015, 9, 15, 15, 0, 0)
            });
        }
Exemple #5
0
        public void Organise(Size bounds, IEnumerable <DragablzItem> items)
        {
            if (items == null)
            {
                throw new ArgumentNullException("items");
            }

            var currentCoord = 0.0;

            foreach (
                var newItem in
                items.Select((di, idx) => new Tuple <int, DragablzItem>(idx, di))
                .OrderBy(tuple => tuple,
                         MultiComparer <Tuple <int, DragablzItem> > .Ascending(tuple => _getLocation(tuple.Item2))
                         .ThenAscending(tuple => tuple.Item1))
                .Select(tuple => tuple.Item2))
            {
                SetLocation(newItem, currentCoord);
                newItem.Measure(bounds);
                currentCoord += _getDesiredSize(newItem);
            }
        }
Exemple #6
0
        public void Update()
        {
            if (!ready)
            {
                return;
            }
            IEnumerable <Ship> baseships = Staff.Current.Homeport.Ships;

            if (baseships == null)
            {
                return;
            }
            int[] typeid = ShipTypes.Where(x => x.IsSelected).Select(x => x.ShipType.Id).ToArray();
            baseships = baseships.Where(x => typeid.Contains(x.ShipInfo.ShipType.Id));
            Filters.ForEach(x => baseships = x.Apply(baseships));
            Ship[] sortedships            = baseships.ToArray();
            MultiComparer <Ship> comparer = new MultiComparer <Ship> {
                Selectors = Selectors.TakeWhile(x => x.SelectedIndex != 0).Select(x => new Tuple <Func <Ship, int>, bool>(x.Sorter.KeySelector, x.IsDescend))
            };

            Array.Sort(sortedships, comparer);
            ShownShips = sortedships.Select(ItemWithIndex <Ship> .Generator).ToArray();
        }
Exemple #7
0
        public void Organise(Size measureBounds, IEnumerable <DragablzItem> items)
        {
            if (items == null)
            {
                throw new ArgumentNullException("items");
            }

            var currentCoord = 0.0;
            var z            = int.MaxValue;

            foreach (
                var newItem in
                items.Select((di, idx) => new Tuple <int, DragablzItem>(idx, di))
                .OrderBy(tuple => tuple,
                         MultiComparer <Tuple <int, DragablzItem> > .Ascending(tuple => _getLocation(tuple.Item2))
                         .ThenAscending(tuple => tuple.Item1))
                .Select(tuple => tuple.Item2))
            {
                Panel.SetZIndex(newItem, newItem.IsSelected ? int.MaxValue : --z);
                SetLocation(newItem, currentCoord);
                newItem.Measure(measureBounds);
                currentCoord += _getDesiredSize(newItem) + _itemOffset;
            }
        }