IEnumerator RenamePackageAsync(PackageInfo info) { var newPackageName = _view.PromptForInput("Enter package name:", info.Name); yield return(newPackageName); if (newPackageName.Current == null) { // User Cancelled yield break; } if (newPackageName.Current == info.Name) { yield break; } var dirInfo = new DirectoryInfo(info.Path); Assert.That(dirInfo.Name == info.Name); var newPath = Path.Combine(dirInfo.Parent.FullName, newPackageName.Current); Assert.That(!Directory.Exists(newPath), "Package with name '{0}' already exists. Rename aborted.", newPackageName.Current); dirInfo.MoveTo(newPath); yield return(_packageHandler.RefreshPackagesAsync()); _view.ClearSelected(); _view.GetList(DragListTypes.Package).Values .Where(x => ((PackageInfo)x.Model).Name == newPackageName.Current).Single().IsSelected = true; }