/// <summary>
        /// Show the modal dialog in the indicated mode, and call the callback when it receives a response
        /// </summary>
        public static void ShowDropdownInputModal(
            string headerText,
            string primaryBodyText,
            string secondaryBodyText,
            IEnumerable <string> dropdownOptions,
            ModalDropdownInputCallback inputCallback,
            ModalButtonCallback buttonCallback = null,
            InputField.ContentType inputType   = InputField.ContentType.Alphanumeric)
        {
            //Update text
            instance.SetHeaderText(headerText);
            instance.SetBodyText(primaryBodyText, secondaryBodyText);

            //Update buttons
            instance.SetMode(Mode.DropdownInput);

            //Update dropdown
            instance.optionDropdown.ClearOptions();
            instance.optionDropdown.AddOptions(dropdownOptions.ToList());
            instance.optionDropdown.value = 0;
            instance.optionDropdown.RefreshShownValue();

            //Set dialog visible
            instance.gameObject.SetActive(true);

            //Update callbacks
            instance.buttonCallback        = buttonCallback;
            instance.inputCallback         = null;
            instance.inputToggleCallback   = null;
            instance.doubleInputCallback   = null;
            instance.dropdownInputCallback = inputCallback;

            instance.secondaryInputField.contentType = inputType;
        }
        /// <summary>
        /// Accept the button repsonse as input, invoke and clear the callbacks, and hide the dialog
        /// </summary>
        private void HandleButtons(Response response)
        {
            //Temporary copy to allow for the calling of the dialog within a callback
            ModalButtonCallback        tmpCallback              = buttonCallback;
            ModalInputCallback         tmpInputCallback         = inputCallback;
            ModalInputToggleCallback   tmpInputToggleCallback   = inputToggleCallback;
            ModalDoubleInputCallback   tmpDoubleInputCallback   = doubleInputCallback;
            ModalDropdownInputCallback tmpDropdownInputCallback = dropdownInputCallback;

            buttonCallback        = null;
            inputCallback         = null;
            inputToggleCallback   = null;
            doubleInputCallback   = null;
            dropdownInputCallback = null;

            gameObject.SetActive(false);

            tmpCallback?.Invoke(response);
            tmpInputCallback?.Invoke(response, primaryInputField.text);
            tmpInputToggleCallback?.Invoke(response, primaryInputField.text, toggleButton.isOn);
            tmpDoubleInputCallback?.Invoke(response, primaryInputField.text, secondaryInputField.text);
            tmpDropdownInputCallback?.Invoke(response, optionDropdown.value, secondaryInputField.text);
        }