Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs30
1 files changed, 20 insertions, 10 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs
index 88b8be8058..0552cb6020 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolderNodeBuilder.cs
@@ -149,7 +149,7 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
return ((ProjectFolder)dataObject).Path;
}
- public override void RenameItem (string newName)
+ public async override void RenameItem (string newName)
{
ProjectFolder folder = (ProjectFolder) CurrentNode.DataItem as ProjectFolder;
string oldFoldername = folder.Path;
@@ -159,13 +159,23 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
try {
if (!FileService.IsValidPath (newFoldername)) {
MessageService.ShowWarning (GettextCatalog.GetString ("The name you have chosen contains illegal characters. Please choose a different name."));
- } else if (File.Exists (newFoldername) || Directory.Exists (newFoldername)) {
+ return;
+ }
+ if (File.Exists (newFoldername)) {
MessageService.ShowWarning (GettextCatalog.GetString ("File or directory name is already in use. Please choose a different one."));
- } else {
- FileService.RenameDirectory (oldFoldername, newName);
- if (folder.Project != null)
- IdeApp.ProjectOperations.Save (folder.Project);
+ return;
}
+ // Don't use Directory.Exists because we want to check for the exact case in case-insensitive file systems
+ var di = Directory.GetDirectories (Path.GetDirectoryName (newFoldername), Path.GetFileName (newFoldername)).FirstOrDefault ();
+ if (di != null) {
+ MessageService.ShowWarning (GettextCatalog.GetString ("File or directory name is already in use. Please choose a different one."));
+ return;
+ }
+
+ FileService.RenameDirectory (oldFoldername, newName);
+ if (folder.Project != null)
+ await IdeApp.ProjectOperations.SaveAsync (folder.Project);
+
} catch (System.ArgumentException) { // new file name with wildcard (*, ?) characters in it
MessageService.ShowWarning (GettextCatalog.GetString ("The name you have chosen contains illegal characters. Please choose a different name."));
} catch (System.IO.IOException ex) {
@@ -176,7 +186,7 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
public override void DeleteMultipleItems ()
{
- var projects = new Set<SolutionEntityItem> ();
+ var projects = new Set<SolutionItem> ();
var folders = new List<ProjectFolder> ();
foreach (ITreeNavigator node in CurrentNodes)
folders.Add ((ProjectFolder) node.DataItem);
@@ -263,7 +273,7 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
}
}
}
- IdeApp.ProjectOperations.Save (projects);
+ IdeApp.ProjectOperations.SaveAsync (projects);
}
static void DeleteFolder (ProjectFolder folder)
@@ -289,7 +299,7 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
[AllowMultiSelection]
public void IncludeToProject ()
{
- Set<SolutionEntityItem> projects = new Set<SolutionEntityItem> ();
+ Set<SolutionItem> projects = new Set<SolutionItem> ();
foreach (ITreeNavigator node in CurrentNodes) {
Project project = node.GetParentDataItem (typeof(Project), true) as Project;
if (node.HasChildren ()) {
@@ -309,7 +319,7 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
}
}
}
- IdeApp.ProjectOperations.Save (projects);
+ IdeApp.ProjectOperations.SaveAsync (projects);
}
[CommandUpdateHandler (ProjectCommands.IncludeToProject)]