DIRECTORY Buttons, Rope, ViewerClasses; HierarchicalDisplays: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; Viewer: TYPE = ViewerClasses.Viewer; ViewerRec: TYPE = ViewerClasses.ViewerRec; Button: TYPE = Buttons.Button; Parent: TYPE = REF ParentRep; ParentRep: TYPE = RECORD [ container: Viewer, firstChild, lastChild: Child _ NIL, asChild: Child _ NIL, rx, ty: INTEGER _ 0, by: INTEGER _ minH]; minH: INTEGER = 10; Child: TYPE = REF ChildRep; ChildRep: TYPE = RECORD [ container: Viewer, forceNewline: BOOLEAN _ FALSE, nameButton: Button _ NIL, parent: Parent, next, prev: Child _ NIL, class: ChildClass, classData, instanceData: REF ANY, variant: SELECT type: ChildType FROM TypeLeaf => [value: Viewer], TypeParent => [asParent: Parent], ENDCASE]; ChildType: TYPE = {TypeLeaf, TypeParent}; Leaf: TYPE = REF ChildRep[TypeLeaf]; InternalNode: TYPE = REF ChildRep[TypeParent]; ChildClass: TYPE = REF ChildClassRep; ChildClassRep: TYPE = RECORD [ buttonProc: Buttons.ButtonProc, -- = Menus.MenuProc NotifyOnRemove: ChildNotifyProc _ NIL]; ChildNotifyProc: TYPE = PROC [child: Child]; LeafNotifyProc: TYPE = PROC [leaf: Leaf]; ValueCreater: TYPE = PROC [leaf: Leaf] RETURNS [value: Viewer]; CreateRoot: PROC [viewerInit: ViewerRec, paint: BOOLEAN _ TRUE] RETURNS [p: Parent]; AddLeaf: PROC [parent: Parent, before: Child, name: ROPE, class: ChildClass, classData, instanceData: REF ANY _ NIL, CreateValue: ValueCreater] RETURNS [leaf: Leaf]; AddInternalNode: PROC [parent: Parent, before: Child, name: ROPE, class: ChildClass, classData, instanceData: REF ANY _ NIL] RETURNS [internal: InternalNode]; Remove: PROC [child: Child]; Pack: PROC [parent: Parent, paint: BOOLEAN _ TRUE]; EnumerateChildren: PROC [to: ChildNotifyProc, from: Parent _ NIL, changedOnly: BOOLEAN _ FALSE, leaves, internals: BOOLEAN _ TRUE]; END. ®HierarchicalDisplays.Mesa Last Edited by: Spreitzer, July 8, 1985 8:03:51 pm PDT will be called with clientData = the Child. NIL Parent means to start from all roots. Êã˜J™J™6J˜IcodešÏk œ˜'K˜KšÐbxœœ œ˜)K˜Kš˜K˜Kšœœœ˜Kšœœ˜$Kšœ œ˜*Kšœœ˜K˜Kšœœœ ˜šœ œœ˜Kšœ˜Kšœœ˜#Kšœœ˜Kšœœ˜Kšœœ ˜—K˜Kšœœ˜K˜Kšœœœ ˜šœ œœ˜Kšœ˜Kšœœœ˜Kšœœ˜K˜Kšœœ˜Kšœ,œœ˜4šœ œ˜$Kšœ˜Kšœ!˜!Kšœ˜ ——K˜Kšœ œ˜)K˜Kšœœœ˜$Kšœœœ˜.K˜Kšœ œœ˜%šœœœ˜šœ Ïc˜3Kšœ+™+—Kšœ"œ˜'—K˜KšÏnœœœ˜,Kš œœœ˜)K˜Kš  œœœœ˜?K˜K˜Kš   œœ œœœ ˜TK˜Kš œœ'œ.œœœœ˜¥K˜Kš œœ'œ.œœœœ˜žK˜K˜Kš œœ˜K˜Kš œœœœ˜3K˜š œœ&œœœœœ˜ƒJ™)—K˜Kšœ˜—…—2 Ã