2019-03-05 20:52:18 +00:00
|
|
|
package ui
|
|
|
|
|
|
|
|
import (
|
|
|
|
"opslag.de/schobers/geom"
|
|
|
|
)
|
|
|
|
|
|
|
|
type ContainerBase struct {
|
|
|
|
ControlBase
|
|
|
|
Children []Control
|
|
|
|
}
|
|
|
|
|
|
|
|
func BuildContainerBase(controls ...Control) ContainerBase {
|
|
|
|
return ContainerBase{
|
|
|
|
Children: controls,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
func (c *ContainerBase) AddChild(child ...Control) {
|
|
|
|
c.Children = append(c.Children, child...)
|
|
|
|
}
|
|
|
|
|
2019-04-11 21:38:32 +00:00
|
|
|
func (c *ContainerBase) Arrange(ctx Context, bounds geom.RectangleF32, offset geom.PointF32, parent Control) {
|
2019-03-05 20:52:18 +00:00
|
|
|
for _, child := range c.Children {
|
2019-04-11 21:38:32 +00:00
|
|
|
child.Arrange(ctx, bounds, offset, c)
|
2019-03-05 20:52:18 +00:00
|
|
|
}
|
2019-04-11 21:38:32 +00:00
|
|
|
c.ControlBase.Arrange(ctx, bounds, offset, parent)
|
2019-03-05 20:52:18 +00:00
|
|
|
}
|
|
|
|
|
2020-05-15 17:00:43 +00:00
|
|
|
func (c *ContainerBase) Handle(ctx Context, e Event) bool {
|
|
|
|
if c.ControlBase.Handle(ctx, e) {
|
|
|
|
return true
|
|
|
|
}
|
2019-03-05 20:52:18 +00:00
|
|
|
for _, child := range c.Children {
|
2020-05-15 17:00:43 +00:00
|
|
|
if child.Handle(ctx, e) {
|
|
|
|
return true
|
|
|
|
}
|
2019-03-05 20:52:18 +00:00
|
|
|
}
|
2020-05-15 17:00:43 +00:00
|
|
|
return false
|
2019-03-05 20:52:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (c *ContainerBase) Render(ctx Context) {
|
|
|
|
c.RenderBackground(ctx)
|
|
|
|
for _, child := range c.Children {
|
|
|
|
child.Render(ctx)
|
|
|
|
}
|
|
|
|
}
|