示例#1
0
        private void UploadFiles(IEnumerable <string> files)
        {
            try
            {
                CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
                var uploadOperationsQueue = _fileOperationsEngine.StartUploadOperations(
                    files,
                    bucket: Bucket.Name,
                    bucketPath: _currentState.CurrentPath,
                    cancellationToken: cancellationTokenSource.Token);

                GcsFileProgressDialogWindow.PromptUser(
                    caption: Resources.GcsFileBrowserUploadingProgressCaption,
                    message: Resources.GcsFileBrowserUploadingProgressMessage,
                    progressMessage: Resources.GcsFileBrowserUploadingOverallProgressMessage,
                    operations: uploadOperationsQueue.Operations,
                    cancellationTokenSource: cancellationTokenSource);

                EventsReporterWrapper.ReportEvent(GcsFileBrowserStartUploadEvent.Create(CommandStatus.Success));
            }
            catch (IOException ex)
            {
                UserPromptUtils.ErrorPrompt(
                    message: Resources.GcsFileProgressDialogFailedToEnumerateFiles,
                    title: Resources.UiErrorCaption,
                    errorDetails: ex.Message);

                EventsReporterWrapper.ReportEvent(GcsFileBrowserStartUploadEvent.Create(CommandStatus.Failure));
            }

            UpdateCurrentState();
        }
示例#2
0
        private async void OnRenameFolderCommand()
        {
            var newLeafName = NamePromptWindow.PromptUser(new NamePromptWindow.Options
            {
                InitialName = SelectedItem.LeafName,
                Title       = Resources.GcsFileBrowserRenameFolderTitle
            });

            if (newLeafName == null)
            {
                return;
            }

            try
            {
                IsLoading = true;

                CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
                var renameDirectoryOperations = await _fileOperationsEngine.StartDirectoryRenameOperationsAsync(
                    bucket : Bucket.Name,
                    parentName : CurrentState.CurrentPath,
                    oldLeafName : SelectedItem.LeafName,
                    newLeafName : newLeafName,
                    cancellationToken : cancellationTokenSource.Token);

                GcsFileProgressDialogWindow.PromptUser(
                    caption: Resources.GcsFileBrowserRenamingFilesCaption,
                    message: Resources.GcsFileBrowserRenamingFilesMessage,
                    progressMessage: Resources.GcsFileBrowserRenamingFilesProgressMessage,
                    operations: renameDirectoryOperations.Operations,
                    cancellationTokenSource: cancellationTokenSource);

                EventsReporterWrapper.ReportEvent(GcsFileBrowserStartRenameDirectoryEvent.Create(CommandStatus.Success));
            }
            catch (DataSourceException ex)
            {
                UserPromptUtils.ErrorPrompt(
                    message: string.Format(Resources.GcsFileBrowserRenameFailedMessage, SelectedItem.LeafName),
                    title: Resources.UiErrorCaption,
                    errorDetails: ex.Message);

                EventsReporterWrapper.ReportEvent(GcsFileBrowserStartRenameDirectoryEvent.Create(CommandStatus.Failure));
            }
            finally
            {
                IsLoading = false;
            }

            UpdateCurrentState();
        }
示例#3
0
        private async void OnDownloadCommand()
        {
            FBD dialog = new FBD();

            dialog.Description         = Resources.GcsFileBrowserFolderSelectionMessage;
            dialog.ShowNewFolderButton = true;

            var result = dialog.ShowDialog();

            if (result == System.Windows.Forms.DialogResult.Cancel)
            {
                return;
            }
            var downloadRoot = dialog.SelectedPath;

            try
            {
                IsLoading = true;

                CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
                var downloadOperationsQueue = await _fileOperationsEngine.StartDownloadOperationsAsync(
                    SelectedItems.Select(x => new GcsUtils.GcsItemRef(x.Bucket, x.BlobName)),
                    downloadRoot,
                    cancellationTokenSource.Token);

                GcsFileProgressDialogWindow.PromptUser(
                    caption: Resources.GcsFileBrowserDownloadingProgressCaption,
                    message: Resources.GcsFileBrowserDownloadingProgressMessage,
                    progressMessage: Resources.GcsFileBrowserDownloadingOverallProgressMessage,
                    operations: downloadOperationsQueue.Operations,
                    cancellationTokenSource: cancellationTokenSource);

                EventsReporterWrapper.ReportEvent(GcsFileBrowserStartDownloadEvent.Create(CommandStatus.Success));
            }
            catch (IOException ex)
            {
                UserPromptUtils.ErrorPrompt(
                    message: Resources.GcsFileBrowserFailedToCreateDirMessage,
                    title: Resources.UiErrorCaption,
                    errorDetails: ex.Message);

                EventsReporterWrapper.ReportEvent(GcsFileBrowserStartDownloadEvent.Create(CommandStatus.Failure));
                return;
            }
            finally
            {
                IsLoading = false;
            }
        }
        public async Task TestBindingsLoadCorrectly()
        {
            var objectUnderTest = new GcsFileProgressDialogWindow(
                "test-caption", "test-message", "test-progress-message", new GcsOperation[0],
                new CancellationTokenSource());
            Task closeTask = Application.Current.Dispatcher.InvokeAsync(
                () =>
            {
                Thread.Yield();
                objectUnderTest.Close();
            }).Task;

            objectUnderTest.ShowModal();
            await closeTask;
        }
示例#5
0
        private async void OnDeleteCommand()
        {
            if (!UserPromptUtils.ActionPrompt(
                    prompt: Resources.GcsFileBrowserDeletePromptMessage,
                    title: Resources.UiDefaultPromptTitle,
                    actionCaption: Resources.UiDeleteButtonCaption,
                    cancelCaption: Resources.UiCancelButtonCaption))
            {
                return;
            }

            try
            {
                IsLoading = true;


                var cancellationTokenSource = new CancellationTokenSource();
                var deleteOperationsQueue   = await _fileOperationsEngine.StartDeleteOperationsAsync(
                    SelectedItems.Select(x => new GcsItemRef(x.Bucket, x.BlobName)),
                    cancellationTokenSource.Token);

                GcsFileProgressDialogWindow.PromptUser(
                    caption: Resources.GcsFileBrowserDeletingProgressCaption,
                    message: Resources.GcsFileBrowserDeletingProgressMessage,
                    progressMessage: Resources.GcsFileBrowserDeletingOverallProgressMessage,
                    operations: deleteOperationsQueue.Operations,
                    cancellationTokenSource: cancellationTokenSource);

                EventsReporterWrapper.ReportEvent(GcsFileBrowserStartDeleteEvent.Create(CommandStatus.Success));
            }
            catch (DataSourceException ex)
            {
                UserPromptUtils.ErrorPrompt(
                    message: Resources.GcsFileBrowserDeleteListErrorMessage,
                    title: Resources.UiErrorCaption,
                    errorDetails: ex.Message);

                EventsReporterWrapper.ReportEvent(GcsFileBrowserStartDeleteEvent.Create(CommandStatus.Failure));
            }
            finally
            {
                IsLoading = false;
            }

            UpdateCurrentState();
        }