package tins2020

import "github.com/veandco/go-sdl2/sdl"

type ButtonBar struct {
	Container

	Background   sdl.Color
	ButtonLength int32
	Orientation  Orientation
	Buttons      []Control
}

const buttonBarWidth = 96

func (b *ButtonBar) Init(ctx *Context) error {
	for i := range b.Buttons {
		b.AddChild(b.Buttons[i])
	}
	return b.Container.Init(ctx)
}

func (b *ButtonBar) Arrange(ctx *Context, bounds Rectangle) {
	b.Container.Arrange(ctx, bounds)
	length := b.ButtonLength
	switch b.Orientation {
	case OrientationHorizontal:
		if length == 0 {
			length = bounds.H
		}
		offset := bounds.X
		for i := range b.Buttons {
			b.Buttons[i].Arrange(ctx, RectSize(offset, bounds.Y, length, bounds.H))
			offset += length
		}
	default:
		if length == 0 {
			length = bounds.W
		}
		offset := bounds.Y
		for i := range b.Buttons {
			b.Buttons[i].Arrange(ctx, RectSize(bounds.X, offset, bounds.W, length))
			offset += length
		}
	}
}

func (b *ButtonBar) Render(ctx *Context) {
	SetDrawColor(ctx.Renderer, b.Background)
	ctx.Renderer.FillRect(b.Bounds.SDLPtr())
	b.Container.Render(ctx)
}

type Orientation int

const (
	OrientationVertical Orientation = iota
	OrientationHorizontal
)