Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ public static async Task<Document> Open (AddinRegistry registry, object selectio
{
foreach (var doc in IdeApp.Workbench.Documents) {
var content = doc.GetContent<AddinBrowserViewContent> ();
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);
Expand All @@ -56,7 +56,7 @@ public static async Task<Document> 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);
}
}
}
21 changes: 19 additions & 2 deletions MonoDevelop.AddinMaker/AddinBrowser/AddinBrowserWidget.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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<Gtk.Widget> ();

TreeView.AllowsMultipleSelection = false;
Expand Down Expand Up @@ -45,7 +62,7 @@ void SetDetailWidget (Widget detail)

void FillDetailPanel ()
{
ITreeNavigator nav = TreeView.GetSelectedNode ();
ITreeNavigator nav = TreeView.Controller.GetSelectedNode ();
ITreeDetailBuilder tdb;

if (nav == null) {
Expand Down
23 changes: 12 additions & 11 deletions MonoDevelop.AddinMaker/AddinBrowser/AddinDependencyNodeBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
});
}
}
}
}
}
58 changes: 27 additions & 31 deletions MonoDevelop.AddinMaker/AddinBrowser/AddinTreeView.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
}
}
}