rem ' tree.txt sysgui = unt open (sysgui)"X0" bbjapi! = bbjapi() sysgui! = bbjapi!.getSysGui() window! = sysgui!.addWindow(100,100,300,350,"Tree",$00010083$,$$) nano = System.nanoTime() tree! = window!.addTree(101,50,50,200,200) tree!.setTreeEditable(1) tree!.setRoot(0,str(0)) loader! = new TreeLoader(tree!) children = 5, levels = 3 node = loader!.addNodes(0,children,levels) nano = System.nanoTime() - nano msec = nano / 1000000 msg$ = "Created and populated a tree with "+str(node)+" nodes in "+str(msec)+" msec: "+str(msec/node)+" msec/node" print msg$ window!.addStaticText(100,50,275,200,50,msg$,$$) dim event$:tmpl(sysgui),generic$:noticetpl(0,0) repeat readrecord(sysgui,siz=10)event$ e$ = sysgui!.getLastEvent().toString(), e$ = e$(1,pos("@"=e$)-1) print e$," code=",event.code$," context=",str(event.context)," id=",str(event.id)," flags=",str(event.flags)," x=",str(event.x)," y=",str(event.y) if event.code$="N" then gosub notify until event.code$="X" eoj: release notify: generic$ = notice(sysgui,event.x) dim notice$:noticetpl(generic.objtype,event.flags) notice$ = generic$ fields = pos($0a$=fattr(notice$,""),1,0) dim field$:"name["+str(fields)+"]:c(1*)" let field$=fattr(notice$,"") for field=1 to fields name$ = field.name$[field] info$ = fattr(notice$,name$,$$) print " ",name$,"=", if asc(info$)=1 then print field(notice$,name$), else print str(nfield(notice$,name$)), next field print "" return class public TreeLoader field private BBjTree tree! field private BBjNumber node = 0 method public TreeLoader(BBjTree tree!) #tree! = tree! methodend method public BBjNumber addNodes(BBjNumber parent, BBjNumber children, BBjNumber level) if level>=0 then for i=1 to children #node = #node + 1 #tree!.addNode(#node,parent,str(#node)) #addNodes(#node,children,level-1) next i endif methodret #node methodend classend