<*PRAGMA LL*>An
AnchorHelpVBT.T
is a VBT which activates a pop up help window
upon entry, after some delay. It is used for providing help bubbles.
When the position remains inside an AnchorHelpVBT for more than
inDelay
seconds, the help window pops up. Thereafter, help
windows in any AnchorHelpVBT within the same Trestle top level window
pop up directly upon entry. This behavior stops whenever the position
remains outside any AnchorHelpVBT for more than outDelay
seconds.
The position
method may be overridden to obtain a different behavior.
Associated with each anchor VBT v
is
\medskip\bulletitem v.help
, the help window to be activated,
\medskip\bulletitem v.hfudge
and v.vfudge
, dimensions in millimeters
that control where the window is popped up,
\medskip\bulletitem v.n
, a count of the number of ZSplit
ancestors
of v
to skip when looking for the ZSplit
to insert the
help window into.
When the help window is activated, it is inserted
into the (v.n
)th ZSplit
ancestor of
v
(counting the first ZSplit
ancestor as zero), or as an
undecorated top-level window if v
has at most v.n
ZSplit
ancestors. It is positioned so that its
northwest corner is v.hfudge
millimeters to the right and
v.vfudge
millimeters below the southwest corner of v
.
The same help window can be associated with several anchors, provided that only one of them is active at a time.
INTERFACEThe callAnchorHelpVBT ; IMPORT VBT, Filter; TYPE T <: Public; Public = Filter.T OBJECT help: VBT.T METHODS <* LL.sup <= VBT.mu *> init(ch: VBT.T; help: VBT.T; n: CARDINAL := 0; hfudge := 0.0; vfudge := 1.0): T END;
v.init(...)
initializes the vbt with the given
attributes. This includes a call to Filter.T.init(v, ch)
.
You must not change the help while the AnchorHelpVBT
is active.
PROCEDURE New( ch: VBT.T; help: VBT.T; n: CARDINAL := 0; hfudge, vfudge := 2.0): T; <* LL.sup <= VBT.mu *>
New(...)
is equivalent toNEW(T).init(...)
.
PROCEDURE Activate(v: T); <* LL.sup = VBT.mu *>
Activate the help window.
PROCEDURE Deactivate(v: T); <* LL.sup = VBT.mu *>
Deactivate the help window.
PROCEDURE Enter(v: T); <* LL.sup = VBT.mu *>
Enter the help window. It gets activated after some delay.
PROCEDURE Leave(v: T); <* LL.sup = VBT.mu *>
Leave the help window. It gets deactivated.
PROCEDURE Set(v: T; n: CARDINAL; hfudge, vfudge: REAL); <* LL.sup = VBT.mu *>
Set the attributes ofv
. Ifv
is active, this is a checked runtime error.
PROCEDURE Get(v: T; VAR n: CARDINAL; VAR hfudge, vfudge: REAL); <* LL.sup = VBT.mu *>
Fetch the attributes of v
.
PROCEDURE IsActive(v: T): BOOLEAN; <* LL.sup = VBT.mu *>
ReturnTRUE
if and only ifv
is active.
PROCEDURE GetDelay(v: VBT.T; VAR inDelay, outDelay: LONGREAL); <* LL.sup = VBT.mu *>
Fetch the delay values for the VBT tree.
PROCEDURE SetDelay(v: VBT.T; inDelay, outDelay: LONGREAL); <* LL.sup = VBT.mu *>
Change the delay values for the VBT tree.
END AnchorHelpVBT.