package main

import (
	"go.wit.com/log"
	"go.wit.com/gui/widget"
)

func (n *node) setText(a *widget.Action) {
	name := getString(a.Value)

	log.Log(CHANGE, "setText() START with text =", name)
	t := n.tk
	if (t == nil) {
		log.Log(ERROR, "setText error. tk == nil", n.progname, n.WidgetId)
		return
	}
	log.Log(CHANGE, "setText() Attempt on", n.WidgetType, "with", name)

	switch n.WidgetType {
	case widget.Window:
		log.Warn("setText() Attempt to set the title to", name)
		t.uiWindow.SetTitle(name)
	case widget.Tab:
	case widget.Group:
		t.uiGroup.SetTitle(name)
	case widget.Checkbox:
		t.uiCheckbox.SetText(name)
	case widget.Textbox:
		if (t.uiEntry != nil) {
			t.uiEntry.SetText(name)
		}
		if (t.uiMultilineEntry != nil) {
			t.uiMultilineEntry.SetText(name)
		}
	case widget.Label:
		t.uiLabel.SetText(name)
	case widget.Button:
		t.uiButton.SetText(name)
	case widget.Slider:
		log.Log(ERROR, "setText() on slider unknown", a.ActionType, "on checkbox", n.progname)
	case widget.Spinner:
		log.Log(ERROR, "setText() on spinner unknown", a.ActionType, "on checkbox", n.progname)
	case widget.Dropdown:
		var orig int
		var i int = -1
		var s string
		orig = t.uiCombobox.Selected()
		log.Log(CHANGE, "try to set the Dropdown to", name, "from", orig)
		// try to find the string
		for i, s = range t.val {
			log.Log(CHANGE, "i, s", i, s)
			if (name == s) {
				t.uiCombobox.SetSelected(i)
				log.Log(CHANGE, "setText() Dropdown worked.", name)
				return
			}
		}
		log.Log(ERROR, "setText() Dropdown did not find:", name)
		// if i == -1, then there are not any things in the menu to select
		if (i == -1) {
			return
		}
		// if the string was never set, then set the dropdown to the last thing added to the menu
		if (orig == -1) {
			t.uiCombobox.SetSelected(i)
		}
	case widget.Combobox:
		t.uiEditableCombobox.SetText(name)
	default:
		log.Log(ERROR, "plugin Send() Don't know how to setText on", n.WidgetType, "yet", a.ActionType)
	}
	log.Log(CHANGE, "setText() END with name =", )
}
