public void Setup(string currentImageId, OnImagePickerResult callback)
    {
        this.currentImageId = currentImageId;
        this.callback       = callback;
        pleaseWait.SetActive(false);
        okButton.onClick.AddListener(OnOkClicked);
        cancelButton.onClick.AddListener(() => CloseAndReturn(false, null));
        uploadButton.onClick.AddListener(() => OnUploadClicked());
        Util.FindIfNotSet(this, ref imageSystem);
        Util.FindIfNotSet(this, ref popups);
        Util.FindIfNotSet(this, ref imageLoader);
        Util.FindIfNotSet(this, ref workshopAssetSource);

        imageLoadingIndicator.text = "";

        if (!string.IsNullOrEmpty(currentImageId))
        {
            string url = imageSystem.GetImageUrl(currentImageId);
            if (url != null)
            {
                LoadPreviewImage(url);
            }
        }
        else
        {
            imageLoadingIndicator.text = "(No image - click Upload to upload an image)";
        }

#if !USE_STEAMWORKS
        steamWorkshopWarningText.text = "Images are uploaded (copied) to the local cache.";
#endif
    }
    public static void Launch(string currentImageId, Canvas parentCanvas, OnImagePickerResult callback)
    {
        GameObject obj = GameObject.Instantiate(Resources.Load <GameObject>(PREFAB_PATH));

        if (parentCanvas != null)
        {
            obj.transform.SetParent(parentCanvas.transform, false);
        }
        obj.GetComponent <ImagePickerDialog>().Setup(currentImageId, callback);
    }