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:
authorLluis Sanchez Gual <lluis@novell.com>2010-11-24 18:21:23 +0300
committerLluis Sanchez Gual <lluis@novell.com>2010-11-24 19:58:42 +0300
commit415040b0f275e7b2715522300d70947aa1fb4b20 (patch)
treef2c30caaed055828bac92438cde89b3b00f23f29 /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad
parent383cac3148fc033d656161a6a8fa09c71cc92c3f (diff)
File system events now can reference several files
Some bulk operations may result in changes in many files. Instead of sending a file change event for every file, now the FileService may send a single even with a list of files. This will reduce event traffic on bulk file operations.
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolder.cs6
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ShowAllFilesBuilderExtension.cs100
2 files changed, 56 insertions, 50 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolder.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolder.cs
index 5146283426..506472dd9d 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolder.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ProjectFolder.cs
@@ -27,6 +27,7 @@
//
using System;
+using System.Linq;
using System.IO;
using System.Collections;
@@ -129,13 +130,12 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
void OnFileRenamed (object sender, FileCopyEventArgs e)
{
- if (!e.IsDirectory || e.SourceFile != absolutePath) return;
-
// The folder path can't be updated because we would be changing
// the identity of the object. Another folder object will need
// to be created by updating the tree.
- if (FolderRenamed != null)
+ var e2 = new FileCopyEventArgs (e.Where (i => i.IsDirectory && i.SourceFile == absolutePath));
+ if (e2.Count > 0 && FolderRenamed != null)
FolderRenamed (this, e);
}
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ShowAllFilesBuilderExtension.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ShowAllFilesBuilderExtension.cs
index b8e4b22057..fc6884d9e4 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ShowAllFilesBuilderExtension.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.Pads.ProjectPad/ShowAllFilesBuilderExtension.cs
@@ -240,67 +240,73 @@ namespace MonoDevelop.Ide.Gui.Pads.ProjectPad
return FindParentFolderNode (basePath, project, out lastChildPath);
}
- void OnSystemFileAdded (object sender, FileEventArgs e)
+ void OnSystemFileAdded (object sender, FileEventArgs args)
{
- Project project = GetProjectForFile (e.FileName);
- if (project == null) return;
-
- if (e.IsDirectory) {
- EnsureReachable (project, e.FileName + "/");
- } else {
- if (project.Files.GetFile (e.FileName) == null)
- AddFile (e.FileName, project);
+ foreach (FileEventInfo e in args) {
+ Project project = GetProjectForFile (e.FileName);
+ if (project == null) return;
+
+ if (e.IsDirectory) {
+ EnsureReachable (project, e.FileName + "/");
+ } else {
+ if (project.Files.GetFile (e.FileName) == null)
+ AddFile (e.FileName, project);
+ }
}
}
- void OnSystemFileDeleted (object sender, FileEventArgs e)
+ void OnSystemFileDeleted (object sender, FileEventArgs args)
{
- Project project = GetProjectForFile (e.FileName);
- if (project == null) return;
-
- ITreeBuilder tb = Context.GetTreeBuilder ();
-
- if (e.IsDirectory) {
- if (tb.MoveToObject (new ProjectFolder (e.FileName, project))) {
- if (tb.Options ["ShowAllFiles"] && !ProjectFolderCommandHandler.PathExistsInProject (project, e.FileName)) {
+ foreach (FileEventInfo e in args) {
+ Project project = GetProjectForFile (e.FileName);
+ if (project == null) return;
+
+ ITreeBuilder tb = Context.GetTreeBuilder ();
+
+ if (e.IsDirectory) {
+ if (tb.MoveToObject (new ProjectFolder (e.FileName, project))) {
+ if (tb.Options ["ShowAllFiles"] && !ProjectFolderCommandHandler.PathExistsInProject (project, e.FileName)) {
+ tb.Remove ();
+ return;
+ }
+ }
+ }
+ else {
+ if (tb.MoveToObject (new SystemFile (e.FileName, project))) {
tb.Remove ();
return;
}
}
- }
- else {
- if (tb.MoveToObject (new SystemFile (e.FileName, project))) {
- tb.Remove ();
- return;
+
+ // Find the parent folder, and update it's children count
+
+ string parentPath = Path.GetDirectoryName (e.FileName);
+ if (tb.MoveToObject (new ProjectFolder (parentPath, project))) {
+ if (tb.Options ["ShowAllFiles"] && Directory.Exists (parentPath))
+ tb.UpdateChildren ();
}
}
-
- // Find the parent folder, and update it's children count
-
- string parentPath = Path.GetDirectoryName (e.FileName);
- if (tb.MoveToObject (new ProjectFolder (parentPath, project))) {
- if (tb.Options ["ShowAllFiles"] && Directory.Exists (parentPath))
- tb.UpdateChildren ();
- }
}
- void OnSystemFileRenamed (object sender, FileCopyEventArgs e)
+ void OnSystemFileRenamed (object sender, FileCopyEventArgs args)
{
- Project project = GetProjectForFile (e.SourceFile);
- if (project == null) return;
-
- if (e.IsDirectory) {
-/* string childPath;
- ITreeBuilder tb = FindParentFolderNode (e.SourceFile, project, out childPath);
- if (tb != null && tb.Options ["ShowAllFiles"]) {
- tb.UpdateAll ();
- }
-*/
- } else {
- ITreeBuilder tb = Context.GetTreeBuilder (new SystemFile (e.SourceFile, project));
- if (tb != null) {
- tb.Remove (true);
- tb.AddChild (new SystemFile (e.TargetFile, project));
+ foreach (FileCopyEventInfo e in args) {
+ Project project = GetProjectForFile (e.SourceFile);
+ if (project == null) return;
+
+ if (e.IsDirectory) {
+ /* string childPath;
+ ITreeBuilder tb = FindParentFolderNode (e.SourceFile, project, out childPath);
+ if (tb != null && tb.Options ["ShowAllFiles"]) {
+ tb.UpdateAll ();
+ }
+ */
+ } else {
+ ITreeBuilder tb = Context.GetTreeBuilder (new SystemFile (e.SourceFile, project));
+ if (tb != null) {
+ tb.Remove (true);
+ tb.AddChild (new SystemFile (e.TargetFile, project));
+ }
}
}
}