public bool GetVirtualFolderPath(VirtualFolderPathViewModel viewModel) { var view = new VirtualFolderSelectionView(viewModel); var gotIt = view.ShowDialog(); return(gotIt == true); }
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(); } }); } }
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); } } }
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(); } }); } }