Skip to content

InputPanel

Refaltor77 edited this page Mar 29, 2026 · 1 revision

InputPanel

Input handling element with focus navigation, button mappings, and modal support.

Creation

use refaltor\ui\elements\InputPanel;

$input = InputPanel::create("my_input_panel");

Properties

Modal

$input->setModal(true);          // Blocks input to elements behind
$input->setInlineModal(true);    // Inline modal behavior

Input

$input->setAlwaysListenToInput(true);   // Always capture input
$input->setGestureTrackingButton(true); // Track touch/drag gestures
$input->setAlwaysHandlePointer(true);   // Always handle pointer

Focus Navigation

$input->setFocusEnabled(true);
$input->setFocusIdentifier("my_focus");
$input->setDefaultFocusPrecedence(true);
$input->setUseLastFocus(true);

// Navigation targets
$input->setFocusChangeUp("element_above");
$input->setFocusChangeDown("element_below");
$input->setFocusChangeLeft("element_left");
$input->setFocusChangeRight("element_right");

Button Mappings

Map gamepad/keyboard buttons to actions:

$input->addButtonMapping(
    "button.menu_cancel",     // From button
    "button.menu_exit",       // To button
    "pressed",                // Mapping type
    "not_gaze"                // Input mode condition
);

$input->addButtonMapping("button.menu_select", "button.menu_ok", "pressed");

Complete Example — Modal Dialog

$dialog = InputPanel::create("modal_dialog")
    ->setModal(true)
    ->setAlwaysListenToInput(true)
    ->setFocusEnabled(true)
    ->setFocusIdentifier("dialog_focus")
    ->addButtonMapping("button.menu_cancel", "button.menu_exit", "pressed")
    ->addButtonMapping("button.menu_select", "button.menu_ok", "pressed")
    ->setSize(250, 180)
    ->setAnchorFrom(Element::ANCHOR_CENTER)
    ->setAnchorTo(Element::ANCHOR_CENTER);

$dialog->addChild(
    Label::create("dialog_text", "Are you sure?")
        ->setShadow()
        ->setAnchorFrom(Element::ANCHOR_CENTER)
        ->setAnchorTo(Element::ANCHOR_CENTER)
);

Gesture Tracking Area

$gesture = InputPanel::create("drag_area")
    ->setModal(false)
    ->setGestureTrackingButton(true)
    ->setAlwaysHandlePointer(true)
    ->setSize(200, 200);

See Also

Clone this wiki locally