<> <> DIRECTORY Graphs, Menus, Rope, ViewerClasses; GraphBrowsers: CEDAR DEFINITIONS = BEGIN ROPE: TYPE = Rope.ROPE; Viewer: TYPE = ViewerClasses.Viewer; Vertex: TYPE = Graphs.Vertex; Browser: TYPE = REF BrowserRep; BrowserRep: TYPE; Pane: TYPE = REF PaneRep; PaneRep: TYPE; BrowserClass: TYPE = REF BrowserClassRep; BrowserClassRep: TYPE = RECORD [ cmds: BrowserCmds, fork: BOOLEAN _ TRUE, --FORK calls on command procs serialize: BOOLEAN _ TRUE --only one outstanding cmd call at a time ]; BrowserCmds: TYPE = ARRAY Menus.MouseButton OF ARRAY BOOLEAN--Control-- OF ARRAY BOOLEAN--Shift-- OF BrowserCmd; BrowserCmd: TYPE = RECORD [ proc: BrowserCmdProc, cmdData: REF ANY _ NIL]; BrowserCmdProc: TYPE = PROC [pane: Pane, index: CARDINAL--origin 0--, cmdData, browserData: REF ANY, button: Menus.MouseButton, ctl, shift, paint: BOOLEAN]; Browse: PROC [vertex: Vertex, browserClass: BrowserClass, browserData: REF ANY _ NIL, viewerInit: ViewerClasses.ViewerRec _ [], directionFilter: Graphs.DirectionFilter _ Graphs.allDirections, paint: BOOLEAN _ TRUE] RETURNS [Browser]; BrowserQuaViewer: PROC [Browser] RETURNS [Viewer]; Expand, Contract: BrowserCmdProc; basicBrowserClass: BrowserClass; GetPaneVertex: PROC [pane: Pane] RETURNS [vertex: Vertex]; GetChildVertex: PROC [pane: Pane, index: CARDINAL--origin 0--] RETURNS [vertex: Vertex]; GetPaneUpEdge: PROC [pane: Pane] RETURNS [parent: Pane, index: CARDINAL--origin 0--]; END.