package main

import (
	"os"
	"fmt"
	"bufio"
	"strings"
	"strconv"

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

func simpleStdin() {
	scanner := bufio.NewScanner(os.Stdin)
	for scanner.Scan() {
		s := scanner.Text()
		s = strings.TrimSuffix(s, "\n")
		switch s {
		case "l":
			log.Log(NOW, "list widgets")
			me.rootNode.listWidgets()
		case "b":
			log.Log(NOW, "show buttons")
			me.rootNode.showButtons()
		case "d":
			var a widget.Action
			a.ActionType = widget.EnableDebug
			callback <- a
		case "":
			fmt.Println("")
			fmt.Println("Enter:")
			fmt.Println("'l': list all widgets")
			fmt.Println("'b': for buttons")
			fmt.Println("'d': enable debugging")
		default:
			i, _ := strconv.Atoi(s)
			log.Log(NOW, "got input:", i)
			n := me.rootNode.findWidgetId(i)
			if (n != nil) {
				n.dumpWidget("found node")
				n.doUserEvent()
			}
		}
	}
}

func (n *node) showButtons() {
	if n.WidgetType == widget.Button {
		n.dumpWidget("Button:")
	}

	for _, child := range n.children {
		child.showButtons()
	}
}

func (n *node) dumpWidget(pad string) {
	log.Log(NOW, "node:", pad, n.WidgetId, ",", n.WidgetType, ",", n.progname)
}

var depth int = 0

func (n *node) listWidgets() {
	if (n == nil) {
		return
	}

	var pad string
	for i := 0; i < depth; i++ {
		pad = pad + "    "
	}
	n.dumpWidget(pad)

	for _, child := range n.children {
		depth += 1
		child.listWidgets()
		depth -= 1
	}
	return
}
