<> <> <> DIRECTORY Cursors, Icons, Menus, TIPUser, ViewerClasses; MJSContainers: CEDAR DEFINITIONS = BEGIN Viewer: TYPE = ViewerClasses.Viewer; ViewerRec: TYPE = ViewerClasses.ViewerRec; MJSContainer: TYPE = Viewer; <> <> <> <> <> <> MJSContainerClass: TYPE = REF MJSContainerClassRep; MJSContainerClassRep: TYPE = RECORD [ notify: ViewerClasses.NotifyProc _ NIL, paint: ViewerClasses.PaintProc _ NIL, modify: ViewerClasses.ModifyProc _ NIL, destroy: ViewerClasses.DestroyProc _ NIL, copy: ViewerClasses.CopyProc _ NIL, set: ViewerClasses.SetProc _ NIL, get: ViewerClasses.GetProc _ NIL, init: ViewerClasses.InitProc _ NIL, save: ViewerClasses.SaveProc _ NIL, caption: ViewerClasses.CaptionProc _ NIL, menu: Menus.Menu _ NIL, tipTable: TIPUser.TIPTable _ NIL, icon: Icons.IconFlavor _ document, cursor: Cursors.CursorType _ textPointer, NoteSizeChanged: SizeChangeNotifyProc _ NIL]; SizeChangeNotifyProc: TYPE = PROC [container: MJSContainer, cw, ch: BOOLEAN] RETURNS [paint: BOOLEAN _ TRUE]; RegisterClass: PROC [viewerFlavor: ATOM, class: MJSContainerClass]; <> <> <> GetClass: PROC [viewerFlavor: ATOM] RETURNS [class: MJSContainerClass]; <> Create: PROC [viewerFlavor: ATOM, info: ViewerRec _ [], paint: BOOL _ TRUE] RETURNS [container: MJSContainer]; <> ChildYBound: PROC [container: MJSContainer, child: Viewer] = INLINE {container.class.set[self: container, data: child, op: $YBound]} ; <> ChildXBound: PROC [container: MJSContainer, child: Viewer] = INLINE {container.class.set[self: container, data: child, op: $XBound]} ; <> FlushChildX, FlushChildY: PROC [child: Viewer] RETURNS [changed: BOOLEAN]; <> ScrollOffset: PROC [container: MJSContainer] RETURNS [offTop: INTEGER] ; <> GetClientData: PROC [container: MJSContainer] RETURNS [clientData: REF ANY]; IsMJSContainer: PROC [viewer: Viewer] RETURNS [BOOLEAN]; END.