diff options
Diffstat (limited to 'tree/addNode.go')
| -rw-r--r-- | tree/addNode.go | 47 |
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 +} |
