ui/src/split/JoinParent.i3


 Copyright (C) 1992, Digital Equipment Corporation                         
 All rights reserved.                                                      
 See the file COPYRIGHT for a full description.                            
                                                                           
 Last modified on Mon Dec 14 03:14:17 PST 1992 by msm    
      modified on Wed Aug 12 23:29:10 PDT 1992 by meehan 
      modified on Wed Aug 12 17:12:45 PDT 1992 by guarino 
      modified on Tue Jun 16 13:08:47 PDT 1992 by muller 
      modified on Mon Jun 15 21:49:39 1992 by mhb    
      modified on Fri Mar 27 01:58:11 1992 by steveg 
 modified on Fri Feb 2 14:03:04 PST 1990 by glassman 
 modified on Sun Jun 5 23:37:29 PDT 1988 by gnelson 
<*PRAGMA LL*>

INTERFACE JoinParent;

IMPORT ETAgent, JoinedVBT, VBT, Rect, ScrnCursor;

TYPE Join = JoinedVBT.Public OBJECT parents: T := NIL END;

TYPE
  T <: Public;
  Public =
    ETAgent.T OBJECT             <* LL >= {JoinedVBT.T child of T, VBT.mu} *>
      link: T
    METHODS
      <* LL.sup <= VBT.mu *>
      init (join: JoinedVBT.T): T;
    END;
The call v.init(join, north, west) initializes v as a JoinParent.T with child join, and returns v.

The northwest corner of the parent's domain is positioned at point (north, west) in Joined's domain; this will be maintained as the parent is reshaped or rescreened.

PROCEDURE New (v: JoinedVBT.T): T;
<* LL.sup <= VBT.mu *>
New(...) is equivalent to NEW(ParentT).init(...).

PROCEDURE Rem (prnt: T);
<* LL = VBT.mu *>
Cause the child of prnt to lose parent prnt, and mark it for redisplay.

PROCEDURE Child (prnt: T): JoinedVBT.T;
<* LL = VBT.mu *>
Return the JoinedVBT for which prnt is a parent.

PROCEDURE Succ (v: JoinedVBT.T; prnt: T): T;
<* LL.sup = VBT.mu OR LL.sup = v *>
Return the successor to parent prnt of v. It is a checked runtime error if prnt is not a parent of v. As with Split.Succ, the successor of NIL is the first parent; the successor the last parent is NIL; and the successor of NIL is NIL if v has no parents.

PROCEDURE Current(v: JoinedVBT.T): T;
<* LL.sup = v OR LL.sup = VBT.mu *>

PROCEDURE SetInput(v: JoinedVBT.T; prnt: T);
<* LL.sup = VBT.mu *>

PROCEDURE NeedsRescreen(v: JoinedVBT.T): BOOLEAN;
<* LL.sup = VBT.mu *>

PROCEDURE ST(v: JoinedVBT.T): VBT.ScreenType;
<* LL.sup = VBT.mu *>

PROCEDURE Domain(v: JoinedVBT.T): Rect.T;
<* LL.sup = VBT.mu *>

PROCEDURE SetCursor(v: T; cs: ScrnCursor.T);
<* LL.sup = JoinedVBT child of v *>

END JoinParent.