public bool GetVirtualFolderPath(VirtualFolderPathViewModel viewModel)
        {
            var view = new VirtualFolderSelectionView(viewModel);

            var gotIt = view.ShowDialog();

            return(gotIt == true);
        }
示例#2
0
        public void VisitFolder(FolderViewModel folderViewModel)
        {
            if (folderViewModel == null)
            {
                throw new ArgumentNullException("folderViewModel");
            }

            var pathViewModel = new VirtualFolderPathViewModel(_pathValidator)
            {
                Path = VirtualFileSystem.Root
            };

            if (_userInteractionService.GetVirtualFolderPath(pathViewModel))
            {
                var taskToken = new FileSystemCancellableTaskToken();

                _taskViewModel = new TaskViewModel(
                    "Копирование папки \"{0}\" по следующему пути \"{1}\"".FormatWith(folderViewModel.FullPath, pathViewModel.Path),
                    _applicationController,
                    taskToken);

                _taskCounter.IncreaseNumberOfOutstandingTasks();

                ThreadPool.QueueUserWorkItem(
                    delegate
                {
                    try
                    {
                        var results = _fileSystem.CopyFolder(folderViewModel.FullPath, pathViewModel.Path, taskToken);

                        var viewModels = TaskViewModelConverter.CreateViewModelsFromResults(results);

                        _taskViewModel.SetResult(viewModels);
                    }
                    catch (FolderNotFoundException exception)
                    {
                        this.SetCopyFileError(folderViewModel.FullPath, pathViewModel.Path, exception);
                    }
                    catch (InvalidPathException exception)
                    {
                        this.SetCopyFileError(folderViewModel.FullPath, pathViewModel.Path, exception);
                    }
                    catch (MaximumFolderCountReachedException exception)
                    {
                        this.SetCopyFileError(folderViewModel.FullPath, pathViewModel.Path, exception);
                    }
                    catch (InsufficientSpaceException exception)
                    {
                        this.SetCopyFileError(folderViewModel.FullPath, pathViewModel.Path, exception);
                    }
                    finally
                    {
                        MarkTaskViewModelAsCompleted(_taskViewModel);
                        _taskCounter.DecreaseNumberOfOutstandingTasks();
                    }
                });
            }
        }
示例#3
0
        internal VirtualFolderSelectionView(VirtualFolderPathViewModel viewModel)
        {
            if (viewModel == null)
            {
                throw new ArgumentNullException("viewModel");
            }
            InitializeComponent();

            this.DataContext = viewModel;
        }
        public void VisitFolder(FolderViewModel folderViewModel)
        {
            if (folderViewModel == null)
            {
                throw new ArgumentNullException("folderViewModel");
            }

            var pathViewModel = new VirtualFolderPathViewModel(_pathValidator)
            {
                Path = VirtualFileSystem.Root
            };

            if (_userInteractionService.GetVirtualFolderPath(pathViewModel))
            {
                try
                {
                    _fileSystem.MoveFolder(folderViewModel.FullPath, pathViewModel.Path);
                }
                catch (FolderNotFoundException exception)
                {
                    this.HandleErrorThatHasAUserFriendlyMessage(exception);
                }
                catch (FolderLockedException exception)
                {
                    this.HandleErrorThatHasAUserFriendlyMessage(exception);
                }
                catch (InvalidPathException exception)
                {
                    this.HandleErrorThatHasAUserFriendlyMessage(exception);
                }
                catch (FolderAlreadyExistsException exception)
                {
                    this.HandleErrorThatHasAUserFriendlyMessage(exception);
                }
                catch (InvalidOperationException exception)
                {
                    this.HandleErrorThatHasAUserFriendlyMessage(exception);
                }
                catch (MaximumFolderCountReachedException exception)
                {
                    this.HandleErrorThatHasAUserFriendlyMessage(exception);
                }
                catch (InsufficientSpaceException exception)
                {
                    this.HandleErrorThatHasAUserFriendlyMessage(exception);
                }
            }
        }
示例#5
0
        public void VisitFile(FileViewModel fileViewModel)
        {
            if (fileViewModel == null)
            {
                throw new ArgumentNullException("fileViewModel");
            }

            var pathViewModel = new VirtualFolderPathViewModel(_pathValidator)
            {
                Path = VirtualFileSystem.Root
            };

            if (_userInteractionService.GetVirtualFolderPath(pathViewModel))
            {
                var taskToken = new FileSystemCancellableTaskToken();

                _taskViewModel = new TaskViewModel(
                    "Копирование файла \"{0}\" по следующему пути \"{1}\"".FormatWith(fileViewModel.FullPath, pathViewModel.Path),
                    _applicationController,
                    taskToken);

                _taskCounter.IncreaseNumberOfOutstandingTasks();

                ThreadPool.QueueUserWorkItem(
                    delegate
                {
                    try
                    {
                        _fileSystem.CopyFile(fileViewModel.FullPath, pathViewModel.Path, taskToken);
                        _taskViewModel.SetResult(new[] { new TaskResultViewModel(fileViewModel.FullPath, pathViewModel.Path, true, String.Empty) });
                    }
                    catch (TaskCancelledException exception)
                    {
                        this.SetCopyFileError(fileViewModel.FullPath, pathViewModel.Path, exception);
                    }
                    catch (FileNotFoundException exception)
                    {
                        this.SetCopyFileError(fileViewModel.FullPath, pathViewModel.Path, exception);
                    }
                    catch (FileLockedException exception)
                    {
                        this.SetCopyFileError(fileViewModel.FullPath, pathViewModel.Path, exception);
                    }
                    catch (InvalidPathException exception)
                    {
                        this.SetCopyFileError(fileViewModel.FullPath, pathViewModel.Path, exception);
                    }
                    catch (FileAlreadyExistsException exception)
                    {
                        this.SetCopyFileError(fileViewModel.FullPath, pathViewModel.Path, exception);
                    }
                    catch (FolderNotFoundException exception)
                    {
                        this.SetCopyFileError(fileViewModel.FullPath, pathViewModel.Path, exception);
                    }
                    catch (MaximumFileCountReachedException exception)
                    {
                        this.SetCopyFileError(fileViewModel.FullPath, pathViewModel.Path, exception);
                    }
                    catch (InsufficientSpaceException exception)
                    {
                        this.SetCopyFileError(fileViewModel.FullPath, pathViewModel.Path, exception);
                    }
                    finally
                    {
                        MarkTaskViewModelAsCompleted(_taskViewModel);
                        _taskCounter.DecreaseNumberOfOutstandingTasks();
                    }
                });
            }
        }