Members

(static, constant) MAX_VISIBLE_ROWS

Default Value
  • 8

(static, constant) PANEL_WIDTH

Row height and spacing come from dialogLayout.bs (LIST_ROW_*), where the spacing gate covers them. LIST_ROW_SPACING matches JRLabelList's own default so the dialog's list has the same visual rhythm as every other list in the app.

Default Value
  • 900

Methods

(static) applyLayout() → {void}

Returns:
Type: 
void

(static) cancelDialog() → {void}

Cancel this dialog from OUTSIDE — see cancelOpenDialog() in source/utils/dialogs.bs. Routed through resolveDialog so the once-only guard and the standard cancelled result both apply: a third party clearing the screen must be indistinguishable from the user pressing Back, or the owner waiting on the result is stranded.

Returns:
Type: 
void

(static) closeDialog() → {void}

Same close mechanics as JRDialog / OverviewDialog: removeChild + returnFocusTo.

Returns:
Type: 
void

(static) init() → {void}

Returns:
Type: 
void

(static) listHeightFor(rows) → {integer}

A row is LIST_ROW_HEIGHT tall and the gaps sit BETWEEN rows, so n rows occupy n * height + (n - 1) * spacing. The two helpers below are inverses of each other; keeping them adjacent is what stops the pair drifting.

Parameters:
NameTypeDescription
rowsinteger
Returns:
Type: 
integer

(static) onDialogFocusChanged() → {void}

Screen-reader announcement, driven by the focus event itself rather than a guessed delay (see JRDialog.onButtonFocusChanged for the full reasoning).

Only the opening announcement is ours. The list is a real LabelList, which the platform narrates itself (focused row title plus a navigation hint), and there is nothing else in this dialog to announce.

Returns:
Type: 
void

(static) onItemSelected() → {void}

Returns:
Type: 
void

(static) onItemsChanged() → {void}

Returns:
Type: 
void

(static) onKeyEvent(key, press) → {boolean}

Parameters:
NameTypeDescription
keystring
pressboolean
Returns:
Type: 
boolean

(static) onOpeningAnnouncementDue() → {void}

Announce the dialog once the platform's own focus announcement is out of the way.

Returns:
Type: 
void

(static) onTitleChanged() → {void}

Returns:
Type: 
void

(static) onTitleMeasured() → {void}

Returns:
Type: 
void

(static) resolveDialog(index) → {void}

Resolve exactly once, then close. index = -1 means dismissed without choosing.

Parameters:
NameTypeDescription
indexinteger
Returns:
Type: 
void

(static) rowsThatFit(available) → {integer}

Most rows that fit in available. Add one spacing back before dividing, because the last row does not carry one. Never returns 0: a dialog with no visible rows is worse than one row over budget, and the caller has already established there is at least one option.

Parameters:
NameTypeDescription
availableinteger
Returns:
Type: 
integer

(static) settleLayout() → {void}

Lay out NOW, called by presentOverlayDialog once this dialog is attached.

The dialog is hidden until this returns, so there is no renderTracking to wait on — and none is needed, because localBoundingRect() answers while hidden. See dialogReveal.bs.

Returns:
Type: 
void