Control, ControlState - select and execute an action
#include <InterViews/control.h>
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.
- 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()
- void
SetState(ControlState*)
- Get or set the control state associated with a control.
- virtual void
Handle(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.
- virtual void
Enable(boolean)
- boolean
Enabled()
- 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.
- virtual void
Select()
- Highlight the control and call the protected virtual functions Open and
Grab (see below).
- virtual void
Unselect()
- Call the protected virtual function Close and then unhighlight the
control.
- virtual void
Do()
- 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.
- virtual void
Down()
- virtual void
Up()
- 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.
- virtual void
Enter()
- virtual void
Leave()
- 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.
- virtual void
Open()
- virtual void
Close()
- The base class Open and Close do nothing, but subclasses may insert and
remove an interactor, such as a pull-down menu.
- virtual void
Grab()
- Grab reads input and only passes through an event if its target is an
active control.
- virtual void
Skip()
- 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).
- virtual void
Busy()
- virtual void
Done()
- 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.
- virtual boolean
IsGrabbing(Interactor*)
- IsGrabbing returns true if the given interactor is grabbing control.
- void Reparent(Control*
target, Control* parent)
- Set target's parent to parent. Controls that compose child
controls should call this operation on their children.