<* PRAGMA LL *> <* PRAGMA SUBTYPE *>A
GuardedBtnVBT
protects its child against unintentional mouse
clicks. While the guard is displayed, mouse clicks are not
forwarded. To remove the guard, click on the button. The guard is
restored after the next upclick, chord-cancel, or when the mouse
leaves the domain of the VBT
.
Typically, a GuardedBtnVBT
is placed above a ``dangerous''
button, like one that terminates an application. This forces the
user to click twice to terminate the application---the first time
to remove the guard, and the second time to invoke the button that
terminates the application.
A GuardedBtnVBT
is much closer to being a VBTkit switch than a
Trestle button. There's a callback
method (invoked when the
guard is removed), and the guard is a multi-filter. However, the
client does not provide a feedback; it is hard-wired into the
GuardedBtnVBT
implementation.
INTERFACEGuardedBtnVBT ; IMPORT ButtonVBT, PaintOp, VBT; TYPE T <: Public; <* SUBTYPE T <: MultiFilter.T *> Public = ButtonVBT.T OBJECT METHODS <* LL <= VBT.mu *> init (ch: VBT.T; colors: PaintOp.ColorScheme := NIL): T; <* LL = VBT.mu *> callback (READONLY cd: VBT.MouseRec); END; END GuardedBtnVBT.