From 5c0d9b7ee56775ce728e53deb422ed610420cd49 Mon Sep 17 00:00:00 2001 From: Jose Medrano Date: Tue, 13 Oct 2020 17:23:52 +0200 Subject: [PATCH] Adds changes in AddinTreeView to handle API break in ExtensibleTreeView --- .../AddinBrowser/AddinBrowserViewContent.cs | 4 +- .../AddinBrowser/AddinBrowserWidget.cs | 21 ++++++- .../AddinDependencyNodeBuilder.cs | 23 ++++---- .../AddinBrowser/AddinTreeView.cs | 58 +++++++++---------- 4 files changed, 60 insertions(+), 46 deletions(-) diff --git a/MonoDevelop.AddinMaker/AddinBrowser/AddinBrowserViewContent.cs b/MonoDevelop.AddinMaker/AddinBrowser/AddinBrowserViewContent.cs index 6d0f76b98..3a06b08e1 100644 --- a/MonoDevelop.AddinMaker/AddinBrowser/AddinBrowserViewContent.cs +++ b/MonoDevelop.AddinMaker/AddinBrowser/AddinBrowserViewContent.cs @@ -37,7 +37,7 @@ public static async Task Open (AddinRegistry registry, object selectio { foreach (var doc in IdeApp.Workbench.Documents) { var content = doc.GetContent (); - if (content != null && content.widget.TreeView.Registry == registry) { + if (content != null && content.widget.TreeView.Controller.Registry == registry) { content.Document.Select (); if (selection != null) { content.widget.TreeView.SelectObject (selection); @@ -56,7 +56,7 @@ public static async Task Open (AddinRegistry registry, object selectio public NavigationPoint BuildNavigationPoint () { //TODO: save the widget's actual selection - return new AddinNavigationPoint (widget.TreeView.Registry); + return new AddinNavigationPoint (widget.TreeView.Controller.Registry); } } } diff --git a/MonoDevelop.AddinMaker/AddinBrowser/AddinBrowserWidget.cs b/MonoDevelop.AddinMaker/AddinBrowser/AddinBrowserWidget.cs index 4e486ef70..86304a560 100644 --- a/MonoDevelop.AddinMaker/AddinBrowser/AddinBrowserWidget.cs +++ b/MonoDevelop.AddinMaker/AddinBrowser/AddinBrowserWidget.cs @@ -13,7 +13,24 @@ class AddinBrowserWidget : HPaned public AddinBrowserWidget (AddinRegistry registry) { - TreeView = new AddinTreeView (registry); + var nodebuilder = new NodeBuilder [] { + new AddinNodeBuilder (), + new ExtensionFolderNodeBuilder (), + new ExtensionNodeBuilder (), + new ExtensionPointNodeBuilder (), + new ExtensionPointFolderNodeBuilder (), + new DependencyFolderNodeBuilder (), + new AddinDependencyNodeBuilder (), + new ModulesFolderNodeBuilder (), + new ModuleNodeBuilder (), + new AssembliesFolderNodeBuilder (), + new AddinAssemblyNodeBuilder (), + new FilesFolderNodeBuilder (), + new AddinFileNodeBuilder (), + }; + + var controller = new AddinTreeViewController (registry, nodebuilder, new TreePadOption [0]); + TreeView = new AddinTreeView (controller); var gtkTreeView = TreeView.GetNativeWidget (); TreeView.AllowsMultipleSelection = false; @@ -45,7 +62,7 @@ void SetDetailWidget (Widget detail) void FillDetailPanel () { - ITreeNavigator nav = TreeView.GetSelectedNode (); + ITreeNavigator nav = TreeView.Controller.GetSelectedNode (); ITreeDetailBuilder tdb; if (nav == null) { diff --git a/MonoDevelop.AddinMaker/AddinBrowser/AddinDependencyNodeBuilder.cs b/MonoDevelop.AddinMaker/AddinBrowser/AddinDependencyNodeBuilder.cs index e10ebfd4f..4b86e08db 100644 --- a/MonoDevelop.AddinMaker/AddinBrowser/AddinDependencyNodeBuilder.cs +++ b/MonoDevelop.AddinMaker/AddinBrowser/AddinDependencyNodeBuilder.cs @@ -31,19 +31,20 @@ class AddinDependencyNodeCommandHandler : NodeCommandHandler { public override void ActivateItem () { - var dependency = (AddinDependency) CurrentNode.DataItem; + var dependency = (AddinDependency)CurrentNode.DataItem; + var controller = (AddinTreeViewController)base.Controller; - var tree = (AddinTreeView)Tree; - var resolved = tree.Registry.GetAddin (dependency.FullAddinId); + var tree = (AddinTreeView)base.Controller.Control; + var resolved = controller.Registry.GetAddin (dependency.FullAddinId); - if (resolved != null) { - //delay the selection, or this will re-select is - GLib.Timeout.Add (200, () => { - tree.SelectObject (resolved); - return false; - }); - } - } + if (resolved != null) { + //delay the selection, or this will re-select is + GLib.Timeout.Add (200, () => { + tree.SelectObject (resolved); + return false; + }); + } + } } } } diff --git a/MonoDevelop.AddinMaker/AddinBrowser/AddinTreeView.cs b/MonoDevelop.AddinMaker/AddinBrowser/AddinTreeView.cs index ba2c0a450..9a1524033 100644 --- a/MonoDevelop.AddinMaker/AddinBrowser/AddinTreeView.cs +++ b/MonoDevelop.AddinMaker/AddinBrowser/AddinTreeView.cs @@ -3,48 +3,44 @@ namespace MonoDevelop.AddinMaker.AddinBrowser { - class AddinTreeView : ExtensibleTreeView - { + class AddinTreeViewController : ExtensibleTreeViewController + { public AddinRegistry Registry { get; private set; } - public AddinTreeView (AddinRegistry registry) : base (new NodeBuilder[] { - new AddinNodeBuilder (), - new ExtensionFolderNodeBuilder (), - new ExtensionNodeBuilder (), - new ExtensionPointNodeBuilder (), - new ExtensionPointFolderNodeBuilder (), - new DependencyFolderNodeBuilder (), - new AddinDependencyNodeBuilder (), - new ModulesFolderNodeBuilder (), - new ModuleNodeBuilder (), - new AssembliesFolderNodeBuilder (), - new AddinAssemblyNodeBuilder (), - new FilesFolderNodeBuilder (), - new AddinFileNodeBuilder (), - }, - new TreePadOption[0]) - { + public AddinTreeViewController (AddinRegistry registry, NodeBuilder [] nodeBuilder, TreePadOption [] option) :base (nodeBuilder, option) + { this.Registry = registry; } + } + class AddinTreeView : ExtensibleTreeView + { + internal AddinTreeViewController Controller; + + public AddinTreeView (AddinTreeViewController controller) : base ( + controller) + { + Controller = controller; + } + public bool SelectObject (object node) { - var n = GetNodeAtObject (node, true); - if (n != null) { - n.Selected = true; - n.ScrollToNode (); - return true; - } - return false; + var n = Controller.GetNodeAtObject (node, true); + if (n != null) { + n.Selected = true; + n.ScrollToNode (); + return true; + } + return false; } public void Update () { - Clear (); + Controller.Clear (); - foreach (var addin in Registry.GetModules (AddinSearchFlags.IncludeAll)) { - AddChild (addin); - } - } + foreach (var addin in Controller.Registry.GetModules (AddinSearchFlags.IncludeAll)) { + Controller.AddChild (addin); + } + } } }