<> <> <> <> <> DIRECTORY BasicTime, Rope USING [ROPE], ViewerClasses USING [Viewer], ViewerTools USING [TiogaContents], WhiteboardDBPrivate; WhiteboardDB: CEDAR DEFINITIONS = BEGIN Viewer: TYPE = ViewerClasses.Viewer; ROPE: TYPE = Rope.ROPE; whiteboard: ATOM; stopped: BOOL; <> WBError: ERROR[reason: ATOM]; <> <<>> <> <<>> Display: PROC[eName: ROPE, v: Viewer _ NIL] RETURNS[Viewer]; <> GetWBName: PROC[wb: Viewer] RETURNS [name: ROPE]; <> Destroy: PROC[eName: ROPE]; <> New: PROC[eName: ROPE] RETURNS[success: BOOL]; <> <<>> Save: PROC[wb: Viewer]; <> <<>> WBExists: PROC[eName: ROPE] RETURNS[alreadyExists: BOOL]; <> <<>> GetCreateDate: PROC[eName: ROPE] RETURNS[date: BasicTime.GMT]; <> <<>> CopyWB: PROC[from, to: ROPE]; <> Enumerate: PROC[pattern: ROPE _ NIL] RETURNS[wbList: LIST OF ROPE]; <> GetChildren: PROC[eName: ROPE] RETURNS [wbList: LIST OF ROPE]; <> GetIconProps: PROC[wbIcon: Viewer] RETURNS[name: ROPE, type: ATOM]; <> <<>> GetToolArgument: PROC[wbIcon: Viewer] RETURNS[argument: ROPE]; <> <<>> <> <<>> Dump: PROC[to: ROPE]; <> Load: PROC[from: ROPE]; <> <<>> <> NewIcon: PROC[wb: Viewer, x, y: INT, name: ROPE, type: ATOM, icon: ROPE, label: ROPE _ NIL, argument: ROPE _ NIL] RETURNS [new: Viewer]; <> <<>> NewBox: PROC[wb: Viewer, x, y, w, h: INT, contents: ViewerTools.TiogaContents _ NIL] RETURNS [new: Viewer]; <> Delete: PROC[child: Viewer]; <> EditText: PROC[box: Viewer]; <> Grow: PROC[box: Viewer]; <> Move: PROC[child: Viewer]; <> Erase: PROC[wb: Viewer]; <> Reset: PROC[wb: Viewer]; <> <<>> <<>> EstablishWhiteboardDB: PROC[DBFile: ROPE _ NIL]; <> Close: PROC[]; <> END...