package main

import (
	"go.wit.com/lib/widget"
	"go.wit.com/toolkits/tree"

	"go.wit.com/dev/andlabs/ui"
	_ "go.wit.com/dev/andlabs/ui/winmanifest"
)

// make new Box here
func newBox(n *tree.Node) {
	if notNew(n) {
		return
	}
	newt := new(guiWidget)
	var box *ui.Box

	if n.State.Direction == widget.Horizontal {
		box = ui.NewHorizontalBox()
	} else {
		box = ui.NewVerticalBox()
	}
	box.SetPadded(true)

	newt.uiBox = box
	newt.uiControl = box
	newt.boxC = 0
	n.TK = newt
	place(n.Parent, n)
}

/*
	rawBox -- hack to arbitrarily add a box in andlabs to work
	around the problem that a "group" can not have one entry in it
	TODO: fix this so that a box is "added on demand" that is,
	if "go.wit.com/gui/gui" sends you a 2nd thing to add to a group,
	automatically add a box then. The problem with this, is the macos, windows and linux gtk
	will panic on a move when an chind object is disasociated from the group
	I haven't had time to try to debug this, so, instead, it's just probably better to always
	add a box here. There doesn't seem to be any real issue with forcing a box to be inserted
	into the toolkits that is "outside" the binary tree of widgets. This only means, that on
	a destroy of the tree, this box must be checked

	even that is a probably not senario however since clicking on the close box in the toolkit
	has the operating system destroy everything in the window. it may or may not be possible
	to control that behavior. at this time, it's "undetermined" and the best course of action
	is to detect the window is destroyed and then remove all the toolkit information
	from all the nodes in the binary tree

	TODO: handle user killing/closing a window using the OS
*/
// func (n *node) rawBox() *ui.Box {
func rawBox(n *tree.Node) *ui.Box {
	var box *ui.Box

	if n.State.Direction == widget.Horizontal {
		box = ui.NewHorizontalBox()
	} else {
		box = ui.NewVerticalBox()
	}
	box.SetPadded(true)

	return box
}
