private async void buttonUploadSlate_Click(object sender, EventArgs e)
        {
            if (Directory.Exists(Properties.Settings.Default.DefaultSlateCurrentFolder))
            {
                openFileDialogSlate.InitialDirectory = Properties.Settings.Default.DefaultSlateCurrentFolder;
            }

            if (openFileDialogSlate.ShowDialog() == DialogResult.OK)
            {
                Properties.Settings.Default.DefaultSlateCurrentFolder = Path.GetDirectoryName(openFileDialogSlate.FileName); // let's save the folder
                Program.SaveAndProtectUserConfig();

                string file        = openFileDialogSlate.FileName;
                string errorString = ListViewSlateJPG.CheckSlateFile(file);
                if (!string.IsNullOrEmpty(errorString))
                {
                    MessageBox.Show(errorString, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
                else // file has been validated
                {
                    IAsset asset;
                    progressBarUpload.Value   = 0;
                    progressBarUpload.Visible = true;

                    buttonUploadSlate.Enabled = false;

                    asset = await Task.Factory.StartNew(() => ProcessUploadFile(file));

                    progressBarUpload.Visible = false;

                    buttonUploadSlate.Enabled = true;
                    listViewJPG1.LoadJPGs(MyContext, asset, MyChannel.Slate);
                }
            }
        }
        private void listViewJPG1_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (checkBoxPreviewSlate.Checked)
            {
                IAsset JPGAsset = listViewJPG1.GetSelectedJPG.FirstOrDefault();
                if (JPGAsset != null)
                {
                    IAssetFile AF      = null;
                    ILocator   locator = GetOrCreateSASLocator(JPGAsset);
                    try
                    {
                        if (locator != null)
                        {
                            AF = JPGAsset.AssetFiles.FirstOrDefault();
                            Uri sasUri = BuildSasUri(AF, locator);
                            pictureBoxPreviewSlate.Load(sasUri.AbsoluteUri);

                            Image  fileImage        = pictureBoxPreviewSlate.Image;
                            double aspectRatioImage = (double)fileImage.Size.Width / (double)fileImage.Size.Height;
                            labelSlatePreviewInfo.Text = string.Format(labelSlatePreviewInfoText, fileImage.Width, fileImage.Height, aspectRatioImage);

                            if (
                                fileImage.Width > Constants.maxSlateJPGHorizontalResolution ||
                                fileImage.Height > Constants.maxSlateJPGVerticalResolution ||
                                !ListViewSlateJPG.AreClose(aspectRatioImage, Constants.SlateJPGAspectRatio)
                                )
                            {
                                labelSlatePreviewInfo.ForeColor = Color.Red;
                            }
                            else
                            {
                                labelSlatePreviewInfo.ForeColor = Color.Black;
                            }
                        }
                    }
                    catch
                    {
                        MessageBox.Show("Error when accessing temporary SAS locator");
                    }
                }
            }
        }