internal NewArtifactNameView(NewArtifactNameViewModel viewModel)
        {
            if (viewModel == null)
            {
                throw new ArgumentNullException("viewModel");
            }
            _viewModel = viewModel;

            InitializeComponent();

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

            var newArtifactNameViewModel = new NewArtifactNameViewModel(_artifactNamesValidator)
            {
                Name = "НовоеИмя"
            };                                                                                                          // Note: правила хорошего тона говорят нам, что все значения по умолчанию должны быть валидными. Я здесь не использую это правило на 100%.

            if (_userInteractionService.GetNewArtifactNamesFromUser(newArtifactNameViewModel))
            {
                try
                {
                    _fileSystem.RenameFolder(folderViewModel.FullPath, newArtifactNameViewModel.Name);
                }
                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 (InvalidNameException exception)
                {
                    this.HandleErrorThatHasAUserFriendlyMessage(exception);
                }
            }
        }
        public bool GetNewArtifactNamesFromUser(NewArtifactNameViewModel newNameViewModel)
        {
            var newArtifactNameView = new NewArtifactNameView(newNameViewModel);

            return(ShowWindowAsDialog(newArtifactNameView));
        }