using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Xna.Framework; namespace ShiftOS.Frontend.GUI { public class ItemGroup : Control { private int _gap = 3; private FlowDirection _flowDir = FlowDirection.LeftToRight; private int _initialgap = 2; protected override void OnLayout(GameTime gameTime) { if (AutoSize) { int _highesty = _initialgap; int _xx = _initialgap; foreach(var ctrl in Children) { _xx += ctrl.Width + _gap; if (_highesty < ctrl.Height + _initialgap + _gap) _highesty = ctrl.Height + _initialgap + _gap; } Width = _xx; Height = _highesty; } int _x = _initialgap; int _y = _initialgap; int _maxYForRow = 0; foreach (var ctrl in Children) { if (_x + ctrl.Width + _gap > Width) { _x = _initialgap; _y = _maxYForRow; _maxYForRow = 0; if (_maxYForRow < ctrl.Height + _gap) _maxYForRow = ctrl.Height + _gap; } ctrl.X = _x; ctrl.Y = _y; ctrl.Dock = DockStyle.None; _x += ctrl.Width + _gap; if (_maxYForRow < ctrl.Height + _gap) _maxYForRow = ctrl.Height + _gap; } } } public enum FlowDirection { LeftToRight, TopDown, RightToLeft, BottomUp } }