<<>> <> <> <> <> <> <> DIRECTORY ColorDisplayManager USING [NextState], Menus USING [ClickProc], MessageWindow USING [Append, Blink], ViewerClasses USING [Column, Viewer], ViewerMenus USING [], ViewerOps USING [Adjust, ChangeColumn, CloseViewer, DestroyViewer, GrowViewer, TopViewer], WindowManager USING [colorDisplayOn]; ViewerMenusImpl: CEDAR PROGRAM IMPORTS ColorDisplayManager, MessageWindow, ViewerOps, WindowManager EXPORTS ViewerMenus SHARES ViewerClasses, ViewerOps = BEGIN OPEN Menus; Column: TYPE ~ ViewerClasses.Column; Viewer: TYPE ~ ViewerClasses.Viewer; Destroy: PUBLIC ClickProc = { viewer: Viewer ~ NARROW[parent]; IF viewer.inhibitDestroy THEN { MessageWindow.Append["Sorry, this viewer can not be destroyed.", TRUE]; MessageWindow.Blink[]; RETURN; }; ViewerOps.DestroyViewer[viewer]; }; Close: PUBLIC ClickProc = {ViewerOps.CloseViewer[NARROW[parent]]}; Grow: PUBLIC ClickProc = {ViewerOps.GrowViewer[NARROW[parent]]}; <> <> <> <<};>> <<>> <> <<>> Adjust: PUBLIC ClickProc = {ViewerOps.Adjust[NARROW[parent], mouseButton=red]}; ToTheLeft: PROC [column: Column] RETURNS [Column] = { IF WindowManager.colorDisplayOn AND column = left AND ColorDisplayManager.NextState[].side = left THEN RETURN [color]; RETURN [left] }; ToTheRight: PROC [column: Column] RETURNS [Column] = { IF WindowManager.colorDisplayOn AND column = right AND ColorDisplayManager.NextState[].side = right THEN RETURN [color]; RETURN [right] }; Left: PUBLIC ClickProc = { viewer: Viewer ~ NARROW[parent]; ViewerOps.ChangeColumn[viewer, ToTheLeft[viewer.column]]; IF shift THEN ViewerOps.GrowViewer[viewer]; }; Right: PUBLIC ClickProc = { viewer: Viewer ~ NARROW[parent]; ViewerOps.ChangeColumn[viewer, ToTheRight[viewer.column]]; IF shift THEN ViewerOps.GrowViewer[viewer]; }; Color: PUBLIC ClickProc = { viewer: Viewer ~ NARROW[parent]; IF WindowManager.colorDisplayOn THEN { ViewerOps.ChangeColumn[viewer, color]; IF shift THEN ViewerOps.GrowViewer[viewer]; }; }; Top: PUBLIC ClickProc = {ViewerOps.TopViewer[NARROW[parent]]}; END.