package rui

import "strings"

// AbsoluteLayout represent an AbsoluteLayout view where child views can be arbitrary positioned
type AbsoluteLayout interface {
	ViewsContainer
}

type absoluteLayoutData struct {
	viewsContainerData
}

// NewAbsoluteLayout create new AbsoluteLayout object and return it
func NewAbsoluteLayout(session Session, params Params) AbsoluteLayout {
	view := new(absoluteLayoutData)
	view.init(session)
	setInitParams(view, params)
	return view
}

func newAbsoluteLayout(session Session) View {
	//return NewAbsoluteLayout(session, nil)
	return new(absoluteLayoutData)
}

// Init initialize fields of ViewsContainer by default values
func (layout *absoluteLayoutData) init(session Session) {
	layout.viewsContainerData.init(session)
	layout.tag = "AbsoluteLayout"
	layout.systemClass = "ruiAbsoluteLayout"
}

func (layout *absoluteLayoutData) htmlSubviews(self View, buffer *strings.Builder) {
	if layout.views != nil {
		for _, view := range layout.views {
			view.addToCSSStyle(map[string]string{`position`: `absolute`})
			viewHTML(view, buffer, "")
		}
	}
}