Ejemplo n.º 1
0
        public void Select(T value)
        {
            var index = _items.FindIndex(it => it.Value.Equals(value));

            _selectedItem = _items[index];
            OnSelect?.Invoke(value);
            VerticalScrollTo(index.Clamp(0, VerticalMaxScrollIndex));
        }
Ejemplo n.º 2
0
        public override HitBox HitTest()
        {
            if (!IsVisible())
            {
                return(HitBox.Miss);
            }
            HitBox hit;

            if ((hit = _scrollBar.HitTest()).IsHit)
            {
                return(hit);
            }

            if (Categories.ViewAsImageList)
            {
                for (int i = VerticalScrollIndex;
                     i < _items.Count && i - VerticalScrollIndex < VerticalMaxVisibleItems;
                     i++)
                {
                    if (!_items[i].HitTest())
                    {
                        continue;
                    }
                    _selectedItem = _items[i];
                    OnSelect?.Invoke(_items[i].Value);
                    return(HitBox.Hit(this));
                }
            }
            else
            {
                for (int i = VerticalScrollIndex * HorizontalMaxVisibleItems;
                     i < _items.Count && i - (VerticalScrollIndex * HorizontalMaxVisibleItems) < MaxVisibleItemsTotal;
                     i++)
                {
                    if (!_items[i].HitTest())
                    {
                        continue;
                    }
                    _selectedItem = _items[i];
                    OnSelect?.Invoke(_items[i].Value);
                    return(HitBox.Hit(this));
                }
            }

            _clickable.HitTest(MouseButton.Left);
            if (_clickable.IsDown(MouseButton.Left))
            {
                return(HitBox.Hit(this));
            }

            return(HitBox.Miss);
        }
Ejemplo n.º 3
0
        public void AddItem(ImageBox image, string text, T value)
        {
            image.Parent = this;
            image.Window = Window;
            var item = new MultiViewBoxItem
            {
                Value    = value,
                Label    = new Label(Window, this, Rectangle.Empty, text, ZIndex + 1),
                ImageBox = image
            };

            _items.Add(item);
            IsDirty = true;
        }
Ejemplo n.º 4
0
        public void AddRange(IEnumerable <ImageBox> images, Func <Sprite, string> textFunc, Func <Sprite, T> valueFunc)
        {
            foreach (var img in images)
            {
                img.Parent = this;
                img.Window = Window;
                var item = new MultiViewBoxItem
                {
                    Value    = valueFunc(img.Sprite),
                    Label    = new Label(Window, this, Rectangle.Empty, textFunc(img.Sprite), ZIndex + 1),
                    ImageBox = img,
                };
                _items.Add(item);
            }

            IsDirty = true;
        }