!include once #1013490 // sarxos webcam

static void selectWebCam(final VF1<Webcam> onSelect) {
  selectWebCam(new L(Webcam.getWebcams()), onSelect);
}
  
static void selectWebCam(fL<Webcam> webcams, final VF1<Webcam> onSelect) {
  LS camNames = mapMethod getName(webcams);
  addToLocalMechList_uniq("All Web Cam Names", camNames);
  if (l(webcams) == 1) { awt { callF(onSelect, first(webcams); } ret; }
  final JComboBox cbCams = jcombobox(camNames);
  selectItem(cbCams, preferredWebCamName());
  Runnable go = r-awt {
    callF(onSelect, webcams.get(getSelectedIndex(cbCams)))
  };
  onEnter(cbCams, go);
  renameSubmitButton(showTitledForm("Select WebCam",
    "Camera:", cbCams, go), "Select camera");
}