package elements

import "image"

// Window represents a top-level container generated by the currently running
// backend. It can contain a single element. It is hidden by default, and must
// be explicitly shown with the Show() method. If it contains no element, it
// displays a black (or transprent) background.
type Window interface {
	// Adopt sets the root element of the window. There can only be one of
	// these at one time.
	Adopt (child Element)

	// Child returns the root element of the window.
	Child () (child Element)

	// SetTitle sets the title that appears on the window's title bar. This
	// method might have no effect with some backends.
	SetTitle (title string)

	// SetIcon taks in a list different sizes of the same icon and selects
	// the best one to display on the window title bar, dock, or whatever is
	// applicable for the given backend. This method might have no effect
	// for some backends.
	SetIcon (sizes []image.Image)

	// Show shows the window. The window starts off hidden, so this must be
	// called after initial setup to make sure it is visible.
	Show ()

	// Hide hides the window.
	Hide ()

	// Close closes the window.
	Close ()

	// OnClose specifies a function to be called when the window is closed.
	OnClose (func ())
}