# Property of Four Js* # (c) Copyright Four Js 1995, 2013. All Rights Reserved. # * Trademark of Four Js Development Tools Europe Ltd # in the United States and elsewhere # # Four Js and its suppliers do not warrant or guarantee that these # samples are accurate and suitable for your purposes. Their inclusion is # purely for information purposes only. DEFINE tree DYNAMIC ARRAY OF RECORD NAME STRING, parentId STRING, id STRING, hasChildren BOOLEAN END RECORD MAIN DEFINE id INTEGER OPEN FORM f FROM arg_val(0) DISPLAY FORM f CALL expand(0) DISPLAY ARRAY tree TO tree.* ATTRIBUTE(UNBUFFERED) BEFORE DISPLAY CALL DIALOG.setSelectionMode("tree", 1) ON EXPAND(id) DISPLAY "expand id:", id, " arr_curr:", arr_curr() CALL expand(id) ON COLLAPSE(id) DISPLAY "collapse id:", id, " arr_curr:", arr_curr() CALL collapse(id) END DISPLAY END MAIN FUNCTION collapseAll() DEFINE p INT LET p = 1 WHILE p < tree.getLength() CALL collapse(p) LET p = p + 1 END WHILE END FUNCTION FUNCTION collapse(p) DEFINE p INT DEFINE id STRING LET id = tree[p].id WHILE p < tree.getLength() IF tree[p + 1].parentId <> id THEN EXIT WHILE END IF CALL collapse(p + 1) CALL tree.deleteElement(p + 1) END WHILE END FUNCTION FUNCTION expand(p) DEFINE NAME, id, parentId STRING DEFINE p INT DEFINE i INT IF p == 0 THEN LET parentId = 0 LET NAME = "Root" ELSE LET parentId = tree[p].id LET NAME = "Node" END IF FOR i = 1 TO 4 LET p = p + 1 CALL tree.insertElement(p) LET id = parentId || "." || i LET tree[p].id = id LET tree[p].parentId = parentId LET tree[p].name = NAME || " " || i IF i MOD 2 THEN LET tree[p].hasChildren = TRUE ELSE LET tree[p].hasChildren = FALSE END IF END FOR END FUNCTION