Control, ControlState - select and execute an action
Contents
Description
A control is a monoscene that allows an action to be selected and executed. The component of a control
determines the appearance associated with the control. A control state is a subject that coordinates a
group of related controls. The control state contains a pointer to the currently selected control (if
any).
Controls are useful for grabbing input and moving over potentially selectable items. Examples of
controls include popup menus, pull-down menus, and menu items. It is generally not necessary to call
functions directly on a control.
Name
Control, ControlState - select and execute an action
Protected Operations
virtualvoidDown()virtualvoidUp()
Down and Up are called when the control receives a DownEvent and an UpEvent, respectively. By
default, Down activates the control if it is enabled, and Up deactivates the control and calls Do
on the current selection.
virtualvoidEnter()virtualvoidLeave()
Enter makes the control the current selection if it is enabled and active, while Leave nullifies
the current selection if the control is enabled and active.
virtualvoidOpen()virtualvoidClose()
The base class Open and Close do nothing, but subclasses may insert and remove an interactor, such
as a pull-down menu.
virtualvoidGrab()
Grab reads input and only passes through an event if its target is an active control.
virtualvoidSkip()
Skip reads and discards input events until it reads an event targeted for a control that is
currently grabbing input, as indicated by IsGrabbing (see below).
virtualvoidBusy()virtualvoidDone()
The Up operation calls Busy just before it calls Do on the target, and it calls Done immediately
afterwards. These operations do nothing by default; subclasses may reimplement them to start and
stop some indication that the control is doing its job.
virtualbooleanIsGrabbing(Interactor*)
IsGrabbing returns true if the given interactor is grabbing control.
voidReparent(Control*target,Control*parent)
Set target's parent to parent. Controls that compose child controls should call this operation on
their children.
Public Operations
Control(Interactor*)
Construct a new control with the given interactor as the component.
~Control
Destruct a control. Because a control is a monoscene, deleting it implies deleting its component
interactor.
ControlState*State()voidSetState(ControlState*)
Get or set the control state associated with a control.
virtualvoidHandle(Event&)
Controls are initially inactive. A DownEvent causes a control to become active. If an active
control receives an EnterEvent, it will set the current selection to itself. If an active control
receives a LeaveEvent, it will set the current selection to nil.
virtualvoidEnable(boolean)booleanEnabled()
Depending on the argument, Enable enables (true) or disables (false) the control. Control
subclasses can check whether the control is enabled with the Enabled operation and then take
whatever action is appropriate.
virtualvoidSelect()
Highlight the control and call the protected virtual functions Open and Grab (see below).
virtualvoidUnselect()
Call the protected virtual function Close and then unhighlight the control.
virtualvoidDo()
Implement a selected action. When a control sees an UpEvent, it calls Do on the current
selection.
Control*ParentControl()Control*RootControl()
The control hierarchy does not necessarily correspond to the interactor hierarchy. These
operations return the control's parent control or the root of the control hierarchy, if any, as
defined by control subclasses.
See Also
Event(3I), Interactor(3I), Menu(3I), Scene(3I) InterViews 15 September 1989 Control(3I)
Synopsis
#include<InterViews/control.h>
