ViewerMenusImpl.mesa
Copyright Ó 1985, 1986, 1991 by Xerox Corporation. All rights reserved.
Edited by McGregor on December 14, 1982 10:50 am
Last Edited by: Maxwell, June 6, 1983 12:11 pm
Michael Plass, February 20, 1987 6:38:27 pm PST
Doug Wyatt, April 5, 1985 12:09:54 pm PST
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]]};
Save: PUBLIC ClickProc = {
viewer: ViewerClasses.Viewer ~ NARROW[parent];
IF viewer.newFile OR viewer.newVersion THEN ViewerOps.SaveViewer[viewer];
};
Restore: PUBLIC ClickProc = {ViewerOps.RestoreViewer[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.