package main

import "os"
import "log"
import "fmt"

import "github.com/davecgh/go-spew/spew"

import "git.wit.com/wit/gui"
import pb "git.wit.com/wit/witProtobuf"

import "github.com/andlabs/ui"
import _ "github.com/andlabs/ui/winmanifest"

func main() {
	var c *pb.Config
	c = pb.MakeDefaultConfig()

	gui.Data.MouseClick = mainMouseClick

	i := 1

	c.Width += int32(100 * i)
	c.Hostname = fmt.Sprintf("splash %d", i)
	gui.StartNewWindow(c, true, "SPLASH")

	i += 1
	c.Width += int32(100 * i)
	c.Hostname = fmt.Sprintf("splash %d", i)
	gui.StartNewWindow(c, true, "BLAH")

	for {
		i += 1
		c.Width += int32(100 * i)
		c.Hostname = fmt.Sprintf("splash %d", i)
		gui.StartNewWindow(c, false, "SPLASH")

		i += 1
		c.Width += int32(100 * i)
		c.Hostname = fmt.Sprintf("splash %d", i)
		gui.StartNewWindow(c, false, "BLAH")
	}
}

// This is the handler for all mosue clicks (buttons, areas, etc))
//
// This is massive for a reason. EVERY MOUSE CLICK COMES HERE
// the 'gui' code is kinda just a holder. It will pass everything
// here and we have to sort out what to do with the click
// at least, that is the current design because I thought it
// might be a good approach. Time will tell...
//
func mainMouseClick(b *gui.GuiButton) {
	if (b == nil) {
		log.Println("mainMouseClick() BACK IN MAIN CONTROL PANEL CODE (button is nil) WHY DID THIS HAPPEN?")
		log.Println("mainMouseClick() BACK IN MAIN CONTROL PANEL CODE (button is nil) WHY DID THIS HAPPEN?")
		os.Exit(-1)
	}
	log.Println("mainMouseClick() b.Action =", b.Action)
	log.Println("mainMouseClick() b.Action =", b.Account)
	spew.Dump(b.Account)

	var wm *gui.GuiWindow

	wm = b.WM
	if (wm == nil) {
		log.Println("mainMouseClick() BACK IN MAIN CONTROL PANEL CODE (wm is nil) WHY DID THIS HAPPEN?")
		log.Println("mainMouseClick() BACK IN MAIN CONTROL PANEL CODE (wm is nil) WHY DID THIS HAPPEN?")
		os.Exit(-1)
	}
	log.Println("mainMouseClick() BACK IN CONTROL PANEL CODE wm =", wm)
	log.Println("mainMouseClick() BACK IN CONTROL PANEL CODE window wm.W =", wm.W)
	if (wm.W == nil) {
		log.Println("mainMouseClick() BACK IN MAIN CONTROL PANEL CODE (wm.W is nil) WHY DID THIS HAPPEN?")
		log.Println("mainMouseClick() BACK IN MAIN CONTROL PANEL CODE (wm.W is nil) WHY DID THIS HAPPEN?")
		os.Exit(-1)
	}

	if (b.Action == "NEWTEXT") {
		log.Println("mainMouseClick() NEWTEXT wm.W =", wm.W)
	} else if (b.Action == "SPLASH") {
		log.Println("mainMouseClick() SPLASH wm.W =", wm.W)
	} else if (b.Action == "AREA") {
		log.Println("mainMouseClick() AREA wm.W =", wm.W)
		wm.W.Destroy()
		ui.Quit()
	}
}