summaryrefslogtreecommitdiff
path: root/tree/addNode.go
diff options
context:
space:
mode:
Diffstat (limited to 'tree/addNode.go')
-rw-r--r--tree/addNode.go47
1 files changed, 47 insertions, 0 deletions
diff --git a/tree/addNode.go b/tree/addNode.go
new file mode 100644
index 0000000..8c0a789
--- /dev/null
+++ b/tree/addNode.go
@@ -0,0 +1,47 @@
+package tree
+
+import (
+ "errors"
+
+ "go.wit.com/log"
+ "go.wit.com/gui/widget"
+)
+
+// this is in common.go, do not move it
+func (me *TreeInfo) AddNode(a *widget.Action) *Node {
+ n := new(Node)
+ n.WidgetType = a.WidgetType
+ n.WidgetId = a.WidgetId
+ n.ParentId = a.ParentId
+
+ n.State = a.State
+ n.Strings = make(map[string]int)
+
+ if (a.WidgetType == widget.Root) {
+ log.Info("AddNode() Root")
+ n.Parent = n
+ me.treeRoot = n
+ return n
+ }
+
+ if (me.treeRoot.FindWidgetId(a.WidgetId) != nil) {
+ log.Warn("AddNode() WidgetId already exists", a.WidgetId)
+ log.Warn("probably this is a Show() / Hide() issue")
+ log.Warn("TODO: figure out what to do here")
+ return me.treeRoot.FindWidgetId(a.WidgetId)
+ }
+
+ // add this new widget on the binary tree
+ p := me.treeRoot.FindWidgetId(a.ParentId)
+ n.Parent = p
+ if n.Parent == nil {
+ log.Error(errors.New("tree.AddNode() ERROR n.Parent == nil"), a.WidgetId, a.ParentId, a.ActionType)
+ log.Warn("AddNode() ERROR n.Parent == nil", a.WidgetId, a.ParentId, a.ActionType)
+ log.Warn("AddNode() ERROR n.Parent == nil", a.WidgetId, a.ParentId, a.WidgetType)
+ return n
+ }
+ log.Warn("AddNode() Adding to parent =", p.ParentId, p.WidgetType, p.GetProgName())
+ log.Warn("AddNode() Adding child =", n.ParentId, n.WidgetType, n.GetProgName())
+ p.children = append(p.children, n)
+ return n
+}