components_JRMessageDialog.bs

sub init()
  options = m.top.findNode("optionList")
  options.focusBitmapBlendColor = "0x0cb0e8"
  options.color = "0xffffff"
  options.focusedColor = "0xffffff"
  options.setFocus(true)
end sub

function onKeyEvent(key as string, press as boolean) as boolean
  if key = "back"
    m.top.backPressed = true
    return true
  end if
  return false
end function

sub updateOptions()
  for each item in m.top.options
    row = CreateObject("roSGNode", "ContentNode")
    row.title = item
    m.top.findNode("content").appendChild(row)
  end for
  redraw()
end sub

sub updateMessage()
  message = m.top.findNode("messageText")
  message.text = m.top.message
  redraw()
end sub

sub redraw()
  boxWidth = 900
  border = 40
  itemSpacing = 40
  optionHeight = 60
  maxRows = 9

  bg = m.top.findNode("dialogBackground")
  text = m.top.findNode("messageText")
  options = m.top.findNode("optionList")
  fontHeight = m.top.fontHeight
  fontWidth = m.top.fontWidth

  if text.text.len() > 0
    textWidth = boxWidth - (border * 2)
    text.width = textWidth
    text.numLines = int(fontWidth / textWidth) + 1
    text.translation = [border, border]
    textHeight = (fontHeight * text.numLines)
  else
    textHeight = 0
    itemSpacing = border
  end if

  options.translation = [border * 2, textHeight + itemSpacing]
  options.itemSize = [boxWidth - (border * 4), optionHeight]
  options.itemSpacing = "[0,20]"

  options.numRows = m.top.options.count()
  if options.numRows > maxRows
    options.numRows = maxRows
    options.wrapDividerHeight = 0
    options.vertFocusAnimationStyle = "fixedFocusWrap"
  end if

  boxHeight = options.translation[1] + (options.itemSize[1] * options.numRows) + (options.itemSpacing[1] * (options.NumRows - 1)) + border

  bg.width = boxWidth
  bg.height = boxHeight

  m.top.translation = [(1920 - boxWidth) / 2, (1080 - boxHeight) / 2]
end sub