BBjTree::setImageSize

Description

In BBj 20.00 and higher, this BBjTree method sets the size of all BBjTree icons.

Syntax

Return Value  
void setImageSize(number width, number height)

Parameters

Parameter Description
width Specifies the image width.
height Specifies the image height.

Return Value

None.

Remarks

By default, all BBjTree icons are rendered at the inherent size of the various images.

Example

rem ' BBjTree::setImageSize

sysgui = unt
open (sysgui)"X0"
sysgui! = bbjapi().getSysGui()

window! = sysgui!.addWindow(50,50,450,650,title$,$20090003$)
window!.setCallback(window!.ON_CLOSE,"eoj")
window!.setCallback(window!.ON_RESIZE,"resize")
window!.setCallback(window!.ON_KEYPRESS,"keypress")

rem ' Define tree data
dim music$[2,4]
music$[0,0]="The Beatles"
music$[0,1]="Hey Jude"
music$[0,2]="Let It Be"
music$[0,3]="Twist and Shout"
music$[0,4]="Yesterday"
music$[1,0]="Paul Simon"
music$[1,1]="Bridge Over Troubled Water"
music$[1,2]="Hearts and Bones"
music$[1,3]="Kathy's Song"
music$[1,4]="The Sound of Silence"
music$[2,0]="Willie Nelson"
music$[2,1]="Always On My Mind"
music$[2,2]="Getting Over You"
music$[2,3]="Old Fords and Natural Stone"
music$[2,4]="This Morning"

dim image$[2,4]

rem ' fill in filenames here to set node-specific icons
image$[0,0]=""; rem "The Beatles"
image$[0,1]=""; rem "Hey Jude"
image$[0,2]=""; rem "Let It Be"
image$[0,3]=""; rem "Twist and Shout"
image$[0,4]=""; rem "Yesterday"
image$[1,0]=""; rem "Paul Simon"
image$[1,1]=""; rem "Bridge Over Troubled Water"
image$[1,2]=""; rem "Hearts and Bones"
image$[1,3]=""; rem "Kathy's Song"
image$[1,4]=""; rem "The Sound of Silence"
image$[2,0]=""; rem "Willie Nelson"
image$[2,1]=""; rem "Always On My Mind"
image$[2,2]=""; rem "Getting Over You"
image$[2,3]=""; rem "Old Fords and Natural Stone"
image$[2,4]=""; rem "This Morning"

rem ' Create and populate tree
tree! = window!.addTree(101,25,25,400,400)

color! = tree!.getSelectedBackColor()
tree!.setSelectedBackColor(BBjColor.RED)
print "selected background color changed from ",color!," to ",
print tree!.getSelectedBackColor()
color! = tree!.getSelectedForeColor()
tree!.setSelectedForeColor(BBjColor.YELLOW)
print "selected foreground color changed from ",color!," to ",
print tree!.getSelectedForeColor()

tree!.putClientProperty("JTree.lineStyle","None")
tree!.setSelectionMode(tree!.CONTIGUOUS_TREE_SELECTION)
tree!.setCollapsedIcon("collapsed.gif",err=*next)
tree!.setExpandedIcon("expanded.gif",err=*next)
tree!.setLeafIcon("leaf.png",err=*next)
tree!.setSelectedIcon("selected.png",err=*next)

root = 0
node = 0
root$ = "Musical Tree"
root$ = "<html><h2>" + root$ + " " + str(root) + "</h2></html>"
tree!.setRoot(root,root$)
tree!.setToolTipText(root,root$)
color! = sysgui!.makeColor(rnd(255),rnd(255),rnd(255))
tree!.setNodeForeColor(root,color!)
for artist = 0 to 2
    node = node + 1
    artist$ = "<html><h3>"+music$[artist,0]+" "+str(node)+"</h3></html>"
    tree!.addExpandableNode(node,root,artist$)
    tree!.expandNode(node)
    tree!.setToolTipText(node,artist$)
    color! = sysgui!.makeColor(rnd(255),rnd(255),rnd(255))
    tree!.setNodeForeColor(node,color!)
    if (len(image$[artist,0])) then
        tree!.setNodeIcon(node,image$[artist,0])
    endif
    parent = node
    for song = 1 to 4
        node = node + 1
        song$ = music$[artist,song]+" "+str(node)
        tree!.addNode(node,parent,song$)
        tree!.setToolTipText(node,song$)
        color! = sysgui!.makeColor(rnd(255),rnd(255),rnd(255))
        tree!.setNodeForeColor(node,color!)
        if (len(image$[artist,song])) then
            tree!.setNodeIcon(node,image$[artist,song])
        endif
    next song
next artist

rem 'tree!.expandTreeFromNode(0)

tree!.setCallback(tree!.ON_TREE_SELECT,"event")
tree!.setCallback(tree!.ON_TREE_DESELECT,"event")
tree!.setCallback(tree!.ON_TREE_EXPAND,"event")
tree!.setCallback(tree!.ON_TREE_COLLAPSE,"event")
tree!.setCallback(tree!.ON_TREE_EDIT_STOP,"event")
tree!.setCallback(tree!.ON_TREE_MOUSE_UP,"event")
tree!.setCallback(tree!.ON_TREE_MOUSE_DOWN,"event")
tree!.setCallback(tree!.ON_TREE_DOUBLE_CLICK,"event")
tree!.setCallback(tree!.ON_TREE_RIGHT_MOUSE_UP,"event")
tree!.setCallback(tree!.ON_TREE_RIGHT_MOUSE_DOWN,"event")
tree!.setCallback(tree!.ON_CONTROL_SCROLL,"scroll")
tree!.setCallback(tree!.ON_POPUP_REQUEST,"popup")

allNodes! = window!.addMenuButton(1,25,450,100,25,"All Nodes",$$)
allNodes!.setCallback(allNodes!.ON_BUTTON_PUSH,"allNodes")
expNodes! = window!.addMenuButton(2,125,450,100,25,"Expanded",$$)
expNodes!.setCallback(expNodes!.ON_BUTTON_PUSH,"expNodes")

backColor! = window!.addMenuButton(3,125,500,100,25,"backColor",$$)
backColor!.setCallback(backColor!.ON_BUTTON_PUSH,"backColor")

flags$ = iff(tree!.isEnabled(),$0004$,$0000$)
enabled! = window!.addCheckBox(201,25,500,100,25,"Enabled",flags$)
enabled!.setCallback(enabled!.ON_CHECK_OFF,"enabled0")
enabled!.setCallback(enabled!.ON_CHECK_ON,"enabled1")

flags$ = iff(tree!.isEditable(),$0004$,$0000$)
editable! = window!.addCheckBox(202,25,550,100,25,"Editable",flags$)
editable!.setCallback(editable!.ON_CHECK_OFF,"editable0")
editable!.setCallback(editable!.ON_CHECK_ON,"editable1")

flags$ = iff(tree!.isOpaque(),$0004$,$0000$)
opaque! = window!.addCheckBox(203,125,550,100,25,"Opaque",flags$)
opaque!.setCallback(opaque!.ON_CHECK_OFF,"opaque0")
opaque!.setCallback(opaque!.ON_CHECK_ON,"opaque1")

setImageSize! = window!.addCheckBox(204,25,600,200,25,"setImageSize",$0000$)
setImageSize!.setCallback(setImageSize!.ON_CHECK_ON,"setImageSize")
setImageSize!.setCallback(setImageSize!.ON_CHECK_OFF,"clearImageSize")

width = 16
height = 16
width! = window!.addInputN(205,125,600,75,25,$$,"###0",$$,width,height)
width!.setToolTipText("Width")
height! = window!.addInputN(206,225,600,75,25,$$,"###0",$$,width,height)
height!.setToolTipText("Height")

event = 0

dim event$:tmpl(sysgui),generic$:noticetpl(0,0)

process_events

eoj:
release

backColor:
    color! = bbjapi().makeColor(rnd(255),rnd(255),rnd(255))
    print "setBackColor ",color!
    tree!.setBackColor(color!)
return

default:
    color! = null()
    print "setBackColor ",color!
    tree!.setBackColor(color!)
return

scrollable:
    print "Scrollable values:"
    print "isHorizontalScrollBarVisible=",tree!.isHorizontalScrollBarVisible()
    print "getHorizontalScrollBarWidth=",tree!.getHorizontalScrollBarWidth()
    print "getHorizontalScrollBarHeight=",tree!.getHorizontalScrollBarHeight()
    print "getHorizontalScrollBarPosition=",tree!.getHorizontalScrollBarPosition()
    print "isVerticalScrollBarVisible=",tree!.isVerticalScrollBarVisible()
    print "getVerticalScrollBarWidth=",tree!.getVerticalScrollBarWidth()
    print "getVerticalScrollBarHeight=",tree!.getVerticalScrollBarHeight()
    print "getVerticalScrollBarPosition=",tree!.getVerticalScrollBarPosition()
return

event:
    event = event + 1
    event! = sysgui!.getLastEvent()
    event$ = sysgui!.getLastEventString()
    print event!.getEventName(),event,":",
    if (event.code$ = "N") then
        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$)),
            endif
        next field
    endif
    event! = sysgui!.getLastEvent()
    print " isDown=",event!.isDown(err=*next),
    print ""
    print "Selected node:",tree!.getSelectedNode()
    print ""
return

scroll:
    event = event + 1
    event! = sysgui!.getLastEvent()
    print event!.getEventName(),event,": orientation=",str(event!.getOrientation()),
    print " position=",str(event!.getPosition())," adjusting=",str(event!.isAdjusting())
return

popup:
    event! = sysgui!.getLastEvent()
    event$ = sysgui!.getLastEventString()
    print event!.getEventName()," X=",str(event.x)," Y=",str(event.y)
    print ""
return

resize:
    event! = sysgui!.getLastEvent()
    print "Resized; width=",str(event!.getWidth()),", height=",str(event!.getHeight())
return

allNodes:
    node = tree!.getSelectedNode()
    if node < 0 then i = msgbox("No selected node"); return
    count = tree!.getNumChildren(node)
    if count = 0 then i = msgbox("Node "+str(node)+" has no children"); return
    vector! = bbjapi().makeVector()
    for i = 0 to count - 1
        child = tree!.getChildAt(node,i)
        vector!.add(child)
    next i
    i = msgbox(vector!.toString(),0,"All child nodes of "+str(node))
return

expNodes:
    node = tree!.getSelectedNode()
    if node < 0 then i = msgbox("No selected node"); return
    count = tree!.getNumChildren(node)
    if count = 0 then i = msgbox("Node "+str(node)+" has no children"); return
    vector! = bbjapi().makeVector()
    expanded! = tree!.getExpandedNodes()
    for i = 0 to count - 1
        child = tree!.getChildAt(node,i)
        if expanded!.contains(child) then vector!.add(child)
    next i
    i = msgbox(vector!.toString(),0,"Expanded child nodes of "+str(node))
return

enabled0:
    tree!.setEnabled(0)
return

enabled1:
    tree!.setEnabled(1)
return

editable0:
    tree!.setEditable(0)
return

editable1:
    tree!.setEditable(1)
return

opaque0:
    tree!.setOpaque(0)
return

opaque1:
    tree!.setOpaque(1)
return

setImageSize:
    width = width!.getValue()
    height = height!.getValue()
    print "setImageSize",width,height
    tree!.setImageSize(width,height)
    print "getImageWidth",tree!.getImageWidth()
    print "getImageHeight",tree!.getImageHeight()
return

clearImageSize:
    print "clearImageSize"
    tree!.clearImageSize()
    print "getImageWidth ",tree!.getImageWidth()
    print "getImageHeight ",tree!.getImageHeight()
return

keypress:
    print fill(72,"=")
    event$ = sysgui!.getLastEventString()
    key = event.id,flags$ = event.flags$
    print "Window Keypress: ",hta(event.id$)," Flags: ",
    print hta(event.flags$)+": """+cvs(event.id$,16)+"""",
    if key>255 then print "" else gosub key
    event! = sysgui!.getLastEvent()
    print "getOriginalControl(): ",event!.getOriginalControl()
    print "getKeyChar():",num(event!.getKeyChar())
    print "getKeyCode():",num(event!.getKeyCode()),": ",
    keycode = event!.getKeyCode()
    gosub keycode
    print "isShiftDown(): ",event!.isShiftDown()
    print "isControlDown(): ",event!.isControlDown()
    print "isAltDown(): ",event!.isAltDown()
    print "isCmdDown(): ",event!.isCmdDown()
    print fill(72,"=")
return

key:
    print ": ",
    if asc(and(flags$,$01$)) then print "SHIFT+",
    if asc(and(flags$,$02$)) then print "CTRL+",;key = key+64
    if asc(and(flags$,$04$)) then print "ALT+",
    if asc(and(flags$,$08$)) then print "CMD+",
    print cvs(chr(key),16)
return

keycode:
    keycode$ = bin(keycode,2)
    if asc(and(keycode$,$1000$)) then print "SHIFT+",
    if asc(and(keycode$,$2000$)) then print "CTRL+",
    if asc(and(keycode$,$4000$)) then print "ALT+",
    if asc(and(keycode$,$8000$)) then print "CMD+",
    switch dec(and(keycode$,$0fff$))
        case dec($0009$); print "Tab"; break
        case dec($001b$); print "Escape"; break
        case dec($007f$); print "Delete"; break
        case dec($012d$); print "Up arrow"; break
        case dec($012e$); print "Down arrow"; break
        case dec($012f$); print "Right arrow"; break
        case dec($0130$); print "Left arrow"; break
        case dec($0131$); print "Page up"; break
        case dec($0132$); print "Page down"; break
        case dec($0133$); print "Home"; break
        case dec($0134$); print "End"; break
        case dec($0135$); print "Ctrl-Home"; break
        case dec($0136$); print "Ctrl-End"; break
        case dec($0138$); print "Insert"; break
        case dec($0139$); print "Ctrl-Right arrow"; break
        case dec($013a$); print "Ctrl-Left arrow"; break
        case dec($013b$); print "Backtab"; break
        case dec($013e$); print "Keypad 0"; break
        case dec($013f$); print "Keypad 1"; break
        case dec($0140$); print "Keypad 2"; break
        case dec($0141$); print "Keypad 3"; break
        case dec($0142$); print "Keypad 4"; break
        case dec($0143$); print "Keypad 5"; break
        case dec($0144$); print "Keypad 6"; break
        case dec($0145$); print "Keypad 7"; break
        case dec($0146$); print "Keypad 8"; break
        case dec($0147$); print "Keypad 9"; break
        case dec($014b$); print "F1"; break
        case dec($014c$); print "F2"; break
        case dec($014d$); print "F3"; break
        case dec($014e$); print "F4"; break
        case dec($014f$); print "F5"; break
        case dec($0150$); print "F6"; break
        case dec($0151$); print "F7"; break
        case dec($0152$); print "F8"; break
        case dec($0153$); print "F9"; break
        case dec($0154$); print "F10"; break
        case dec($0155$); print "F11"; break
        case dec($0156$); print "F12"; break
        case dec($0174$); print "Keypad *"; break
        case dec($0175$); print "Keypad -"; break
        case dec($0176$); print "Keypad +"; break
        case dec($0177$); print "Keypad /"; break
        case default; print """",chr(dec(and(keycode$,$00ff$))),""" ",keycode; break
    swend
return

See Also

BBjAPI

BBjSysGui

BBjControl

BBjWindow

See the BBj Object Diagram for an illustration of the relationship between BBj Objects.