import("gui")
class SampleTree
{
inject(System.GUI)
method create_label ()
{
attr = {Attribute.FONT : {"family":"Verdana","size":12}}
Label.new("Node data:", attr)
}
method create_text ()
{
attr =
{Attribute.FONT : {"family":"Verdana","size":12},
Attribute.SIZE : {"w":100}}
@text = Text.new(attr)
}
method map_event (tree)
{
tree.set_node_title(0, "Root")
tree.add_branch(0, "Branch_1")
tree.set_node_data(1, "Branch_1_Data")
tree.add_branch(0, "Branch_2")
tree.set_node_data(1, "Branch_2_Data")
tree.add_leaf(0, "Leaf_1")
tree.set_node_data(1, "Leaf_1_Data")
tree.add_leaf(0, "Leaf_2")
tree.set_node_data(1, "Leaf_2_Data")
}
method select_event (tree, id, status)
{
if {status = 0;
data = tree.get_node_data(id)
if {data.is_nil() ? @text.set_value("");
@text.set_value(data)
}
}
}
method create_tree ()
{
tree = Tree.new()
tree.set_event(Event.MAP, EventHandler.new(get_method("map_event"), self))
tree.set_event(Event.SELECTION, EventHandler.new(get_method("select_event"), self))
@tree = tree
}
method create_child ()
{
VBox.new({HBox.new({create_label(), create_text()}), Fill.new(), create_tree()})
}
public method show ()
{
@dialog.show()
System.GUI.main_loop()
}
method initialize ()
{
field @dialog
field @tree
field @text
attr =
{Attribute.TITLE : "Sample Tree",
Attribute.SIZE : {"w":300, "h":200},
Attribute.OPACITY : 255}
@dialog = Dialog.new(create_child(), attr)
}
}
method main ()
{
SampleTree.new().show()
}
main()