diff options
author | Marius Ungureanu <marius.ungureanu@xamarin.com> | 2016-03-27 13:07:40 +0300 |
---|---|---|
committer | Marius Ungureanu <marius.ungureanu@xamarin.com> | 2016-03-27 13:07:40 +0300 |
commit | 7fb96582e9f9a14394b654d0ada2e8bf5780364b (patch) | |
tree | e6f20a1b071235c48d0b061de42311b5902b86b1 /main/src/addins | |
parent | 18bb88f6c827e470837f239cd695d6af9ec769c8 (diff) |
[Ide] Experimental change from single addchild to packing children updates in tree view nodes
This change is going to bring speed improvements after the optimizations done to AppendValues inside Gtk# are released.
Batch calls to AddChild, as the collection insertion is guarded against multiple resorts on insertion.
Diffstat (limited to 'main/src/addins')
12 files changed, 18 insertions, 42 deletions
diff --git a/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.NodeBuilders/PackagingProjectNodeBuilder.cs b/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.NodeBuilders/PackagingProjectNodeBuilder.cs index 0102146c55..2bb36a5d35 100644 --- a/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.NodeBuilders/PackagingProjectNodeBuilder.cs +++ b/main/src/addins/Deployment/MonoDevelop.Deployment/MonoDevelop.Deployment.NodeBuilders/PackagingProjectNodeBuilder.cs @@ -65,9 +65,7 @@ namespace MonoDevelop.Deployment.NodeBuilders public override void BuildChildNodes (ITreeBuilder builder, object dataObject) { PackagingProject project = dataObject as PackagingProject; - - foreach (Package p in project.Packages) - builder.AddChild (p); + builder.AddChildren (project.Packages); } public override bool HasChildNodes (ITreeBuilder builder, object dataObject) diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs index ac38080917..ed73ec940b 100644 --- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyNodeBuilder.cs @@ -89,12 +89,8 @@ namespace MonoDevelop.AssemblyBrowser var ns = namespaces [namespaceName]; ns.Types.Add (type); } - - foreach (var ns in namespaces.Values) { - if (publicOnly && !ns.Types.Any (t => t.IsPublic)) - continue; - treeBuilder.AddChild (ns); - } + + treeBuilder.AddChildren (namespaces.Values.Where (ns => !publicOnly || ns.Types.Any (t => t.IsPublic))); } public override bool HasChildNodes (ITreeBuilder builder, object dataObject) diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyReferenceFolderNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyReferenceFolderNodeBuilder.cs index 283b5c6e54..bf90fb52c7 100644 --- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyReferenceFolderNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyReferenceFolderNodeBuilder.cs @@ -72,10 +72,8 @@ namespace MonoDevelop.AssemblyBrowser // ctx.AddChild (new Error (MonoDevelop.Core.GettextCatalog.GetString ("Error while loading:") + assemblyNameReference.FullName + "/" + e.Message));
}
}
-
- foreach (ModuleReference moduleRef in referenceFolder.ModuleReferences) {
- ctx.AddChild (moduleRef);
- }
+
+ ctx.AddChildren (referenceFolder.ModuleReferences);
}
public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyResourceFolderNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyResourceFolderNodeBuilder.cs index 2eb286fa19..f699a83fe6 100644 --- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyResourceFolderNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/AssemblyResourceFolderNodeBuilder.cs @@ -54,9 +54,7 @@ namespace MonoDevelop.AssemblyBrowser public override void BuildChildNodes (ITreeBuilder ctx, object dataObject) { var resourceFolder = (AssemblyResourceFolder)dataObject; - foreach (object resource in resourceFolder.Resources) { - ctx.AddChild (resource); - } + ctx.AddChildren (resourceFolder.Resources); } public override bool HasChildNodes (ITreeBuilder builder, object dataObject) diff --git a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/BaseTypeFolderNodeBuilder.cs b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/BaseTypeFolderNodeBuilder.cs index 497e590111..acf0f19327 100644 --- a/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/BaseTypeFolderNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.AssemblyBrowser/MonoDevelop.AssemblyBrowser/TreeNodes/BaseTypeFolderNodeBuilder.cs @@ -100,9 +100,7 @@ namespace MonoDevelop.AssemblyBrowser public override void BuildChildNodes (ITreeBuilder builder, object dataObject) { var baseTypeFolder = (BaseTypeFolder)dataObject; - foreach (var type in baseTypeFolder.Type.BaseTypes) { - builder.AddChild (type); - } + builder.AddChildren (baseTypeFolder.Type.BaseTypes); } public override bool HasChildNodes (ITreeBuilder builder, object dataObject) { diff --git a/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.NodeBuilders/TranslationProjectNodeBuilder.cs b/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.NodeBuilders/TranslationProjectNodeBuilder.cs index 040f2037c4..687dd4558d 100644 --- a/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.NodeBuilders/TranslationProjectNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.Gettext/MonoDevelop.Gettext.NodeBuilders/TranslationProjectNodeBuilder.cs @@ -93,9 +93,8 @@ namespace MonoDevelop.Gettext.NodeBuilders TranslationProject project = dataObject as TranslationProject; if (project == null) return; - - foreach (Translation translation in project.Translations) - builder.AddChild (translation); + + builder.AddChildren (project.Translations); } public override bool HasChildNodes (ITreeBuilder builder, object dataObject) diff --git a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/WidgetNodeBuilder.cs b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/WidgetNodeBuilder.cs index c2710e2cf2..cf1ce14602 100644 --- a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/WidgetNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/WidgetNodeBuilder.cs @@ -81,9 +81,7 @@ namespace MonoDevelop.GtkCore.NodeBuilders public override void BuildChildNodes (ITreeBuilder builder, object dataObject) { GuiBuilderWindow win = (GuiBuilderWindow) dataObject; - foreach (Stetic.ActionGroupInfo agroup in win.RootWidget.ActionGroups) { - builder.AddChild (agroup); - } + builder.AddChildren (win.RootWidget.ActionGroups); } public override bool HasChildNodes (ITreeBuilder builder, object dataObject) diff --git a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/WindowsFolderNodeBuilder.cs b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/WindowsFolderNodeBuilder.cs index 46f6f0f461..aea532fc77 100644 --- a/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/WindowsFolderNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.GtkCore/MonoDevelop.GtkCore.NodeBuilders/WindowsFolderNodeBuilder.cs @@ -75,10 +75,8 @@ namespace MonoDevelop.GtkCore.NodeBuilders GtkDesignInfo info = GtkDesignInfo.FromProject (p); if (!info.GuiBuilderProject.HasError) { builder.AddChild (new StockIconsNode (p)); - foreach (GuiBuilderWindow fi in info.GuiBuilderProject.Windows) - builder.AddChild (fi); - foreach (Stetic.ActionGroupInfo group in info.GuiBuilderProject.SteticProject.ActionGroups) - builder.AddChild (group); + builder.AddChildren (info.GuiBuilderProject.Windows); + builder.AddChildren (info.GuiBuilderProject.SteticProject.ActionGroups); } } diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesFolderNodeBuilder.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesFolderNodeBuilder.cs index 455fa95d47..8310ee058c 100644 --- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesFolderNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesFolderNodeBuilder.cs @@ -107,9 +107,7 @@ namespace MonoDevelop.PackageManagement.NodeBuilders public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
{
- foreach (PackageReferenceNode packageReference in GetPackageReferencesNodes (dataObject)) {
- treeBuilder.AddChild (packageReference);
- }
+ treeBuilder.AddChildren (GetPackageReferencesNodes (dataObject));
}
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectReferencesFromPackagesFolderNodeBuilder.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectReferencesFromPackagesFolderNodeBuilder.cs index 0705cf9826..875a7381db 100644 --- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectReferencesFromPackagesFolderNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectReferencesFromPackagesFolderNodeBuilder.cs @@ -65,9 +65,7 @@ namespace MonoDevelop.PackageManagement.NodeBuilders public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
{
- foreach (ProjectReference projectReference in GetReferencesFromPackages (dataObject)) {
- treeBuilder.AddChild (projectReference);
- }
+ treeBuilder.AddChildren (GetReferencesFromPackages (dataObject));
}
IEnumerable<ProjectReference> GetReferencesFromPackages (object dataObject)
diff --git a/main/src/addins/MonoDevelop.UnitTesting/Gui/TestNodeBuilder.cs b/main/src/addins/MonoDevelop.UnitTesting/Gui/TestNodeBuilder.cs index afeab5dd59..d974da41d0 100644 --- a/main/src/addins/MonoDevelop.UnitTesting/Gui/TestNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.UnitTesting/Gui/TestNodeBuilder.cs @@ -99,9 +99,8 @@ namespace MonoDevelop.UnitTesting UnitTestGroup test = dataObject as UnitTestGroup; if (test == null) return; - - foreach (UnitTest t in test.Tests) - builder.AddChild (t); + + builder.AddChildren (test.Tests); } public override bool HasChildNodes (ITreeBuilder builder, object dataObject) diff --git a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.NodeBuilders/WebReferenceFolderNodeBuilder.cs b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.NodeBuilders/WebReferenceFolderNodeBuilder.cs index 65d0408f05..87869b8874 100644 --- a/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.NodeBuilders/WebReferenceFolderNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.WebReferences/MonoDevelop.WebReferences.NodeBuilders/WebReferenceFolderNodeBuilder.cs @@ -65,11 +65,9 @@ namespace MonoDevelop.WebReferences.NodeBuilders { var folder = (WebReferenceFolder) dataObject; if (folder.IsWCF) - foreach (WebReferenceItem item in WebReferencesService.GetWebReferenceItemsWCF (folder.Project)) - treeBuilder.AddChild(item); + treeBuilder.AddChildren (WebReferencesService.GetWebReferenceItemsWCF (folder.Project)); else - foreach (WebReferenceItem item in WebReferencesService.GetWebReferenceItemsWS (folder.Project)) - treeBuilder.AddChild(item); + treeBuilder.AddChildren (WebReferencesService.GetWebReferenceItemsWS (folder.Project)); } /// <summary>Compare two object with one another and returns a number based on their sort order.</summary> |