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:
authorMatt Ward <matt.ward@xamarin.com>2016-11-11 17:59:19 +0300
committerMatt Ward <matt.ward@xamarin.com>2016-11-11 18:00:53 +0300
commitb5fee856311849a272040a71b190699bcc97245b (patch)
tree57ef4fea1adb0121e3980c796011bd0701345898
parent3822e1f75a8c37f8860b16685e51e2c0b5f06ad6 (diff)
[NuGet] Add Dependencies folder
Added a Dependencies folder that has a NuGet child node that has the package dependencies used by a .NET Core project. Currently the Dependencies folder is not working for a new project that has just been created. The project needs to be reloaded before the dependencies are displayed.
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNode.cs62
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNodeBuilder.cs76
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNodeBuilderExtension.cs100
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependenciesNode.cs143
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependenciesNodeBuilder.cs97
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependencyNode.cs93
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependencyNodeBuilder.cs70
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesFolderNodeBuilder.cs5
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/TargetFrameworkNode.cs95
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/TargetFrameworkNodeBuilder.cs71
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml9
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj57
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetCoreNuGetProject.cs8
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetProjectExtensions.cs5
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/icons/framework-16.pngbin0 -> 362 bytes
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/icons/framework-16@2x.pngbin0 -> 627 bytes
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark.pngbin0 -> 338 bytes
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark@2x.pngbin0 -> 606 bytes
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark~sel.pngbin0 -> 267 bytes
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark~sel@2x.pngbin0 -> 469 bytes
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~sel.pngbin0 -> 267 bytes
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~sel@2x.pngbin0 -> 469 bytes
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16.pngbin0 -> 316 bytes
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16@2x.pngbin0 -> 640 bytes
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark.pngbin0 -> 298 bytes
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark@2x.pngbin0 -> 650 bytes
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark~sel.pngbin0 -> 219 bytes
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark~sel@2x.pngbin0 -> 448 bytes
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~sel.pngbin0 -> 219 bytes
-rw-r--r--main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~sel@2x.pngbin0 -> 448 bytes
30 files changed, 886 insertions, 5 deletions
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNode.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNode.cs
new file mode 100644
index 0000000000..802d428101
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNode.cs
@@ -0,0 +1,62 @@
+//
+// DependenciesNode.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using MonoDevelop.Core;
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.PackageManagement.NodeBuilders
+{
+ class DependenciesNode
+ {
+ public static readonly string NodeName = "Dependencies";
+
+ public DependenciesNode (DotNetProject project)
+ {
+ Project = project;
+ }
+
+ internal DotNetProject Project { get; private set; }
+
+ public string GetLabel ()
+ {
+ return GettextCatalog.GetString ("Dependencies");
+ }
+
+ public string GetSecondaryLabel ()
+ {
+ return string.Empty;
+ }
+
+ public IconId Icon {
+ get { return Stock.OpenReferenceFolder; }
+ }
+
+ public IconId ClosedIcon {
+ get { return Stock.ClosedReferenceFolder; }
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNodeBuilder.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNodeBuilder.cs
new file mode 100644
index 0000000000..f5bae2f026
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNodeBuilder.cs
@@ -0,0 +1,76 @@
+//
+// DependenciesNodeBuilder.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using MonoDevelop.Ide.Gui.Components;
+using MonoDevelop.Ide.Gui.Pads.ProjectPad;
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.PackageManagement.NodeBuilders
+{
+ public class DependenciesNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(DependenciesNode); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return DependenciesNode.NodeName;
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
+ {
+ var node = (DependenciesNode)dataObject;
+ nodeInfo.Label = node.GetLabel ();
+ nodeInfo.SecondaryLabel = node.GetSecondaryLabel ();
+ nodeInfo.Icon = Context.GetIcon (node.Icon);
+ nodeInfo.ClosedIcon = Context.GetIcon (node.ClosedIcon);
+ }
+
+ public override int CompareObjects (ITreeNavigator thisNode, ITreeNavigator otherNode)
+ {
+ if (otherNode.DataItem is ProjectReferenceCollection)
+ return 1;
+ if (otherNode.DataItem is GettingStartedNode)
+ return 1;
+ return -1;
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return true;
+ }
+
+ public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
+ {
+ var node = (DependenciesNode)dataObject;
+ var folderNode = new PackageDependenciesNode (node);
+ folderNode.Refresh ();
+ treeBuilder.AddChild (folderNode);
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNodeBuilderExtension.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNodeBuilderExtension.cs
new file mode 100644
index 0000000000..be157c9c86
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/DependenciesNodeBuilderExtension.cs
@@ -0,0 +1,100 @@
+//
+// DependenciesNodeBuilderExtension.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using MonoDevelop.Core;
+using MonoDevelop.Ide;
+using MonoDevelop.Ide.Gui.Components;
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.PackageManagement.NodeBuilders
+{
+ class DependenciesNodeBuilderExtension : NodeBuilderExtension
+ {
+ IPackageManagementEvents packageManagementEvents;
+
+ public DependenciesNodeBuilderExtension ()
+ {
+ packageManagementEvents = PackageManagementServices.PackageManagementEvents;
+
+ packageManagementEvents.PackagesRestored += PackagesRestored;
+ }
+
+ public override void Dispose ()
+ {
+ packageManagementEvents.PackagesRestored -= PackagesRestored;
+ }
+
+ public override bool CanBuildNode (Type dataType)
+ {
+ return typeof(DotNetProject).IsAssignableFrom (dataType);
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ var project = (DotNetProject)dataObject;
+ return project.IsDotNetCoreProject ();
+ }
+
+ void PackagesRestored (object sender, EventArgs e)
+ {
+ RefreshAllChildNodes ();
+ }
+
+ public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
+ {
+ var project = (DotNetProject)dataObject;
+ if (!project.IsDotNetCoreProject ())
+ return;
+
+ var folderNode = new DependenciesNode (project);
+ treeBuilder.AddChild (folderNode);
+ }
+
+ void RefreshAllChildNodes ()
+ {
+ Runtime.RunInMainThread (() => {
+ foreach (DotNetProject project in IdeApp.Workspace.GetAllItems<DotNetProject> ()) {
+ if (project.IsDotNetCoreProject ())
+ RefreshChildNodes (project);
+ }
+ });
+ }
+
+ void RefreshChildNodes (DotNetProject project)
+ {
+ ITreeBuilder builder = Context.GetTreeBuilder (project);
+ if (builder != null) {
+ if (builder.MoveToChild (DependenciesNode.NodeName, typeof (DependenciesNode))) {
+ if (builder.MoveToChild (PackageDependenciesNode.NodeName, typeof (PackageDependenciesNode))) {
+ var packagesFolder = (PackageDependenciesNode)builder.DataItem;
+ packagesFolder.Refresh ();
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependenciesNode.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependenciesNode.cs
new file mode 100644
index 0000000000..ee78ab6d48
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependenciesNode.cs
@@ -0,0 +1,143 @@
+//
+// PackageDependenciesNode.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading;
+using System.Threading.Tasks;
+using MonoDevelop.Core;
+using MonoDevelop.Ide;
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.PackageManagement.NodeBuilders
+{
+ class PackageDependenciesNode
+ {
+ public static readonly string NodeName = "PackageDependencies";
+
+ DotNetProject project;
+ List<PackageDependency> packageDependencies = new List<PackageDependency> ();
+ CancellationTokenSource cancellationTokenSource;
+
+ public PackageDependenciesNode (DependenciesNode dependenciesNode)
+ {
+ project = dependenciesNode.Project;
+ }
+
+ public string GetLabel ()
+ {
+ return "NuGet";
+ }
+
+ public string GetSecondaryLabel ()
+ {
+ return string.Empty;
+ }
+
+ public IconId Icon {
+ get { return Stock.OpenReferenceFolder; }
+ }
+
+ public IconId ClosedIcon {
+ get { return Stock.ClosedReferenceFolder; }
+ }
+
+ public bool LoadedDependencies { get; private set; }
+
+ public event EventHandler PackageDependenciesChanged;
+
+ void OnPackageDependenciesChanged ()
+ {
+ var handler = PackageDependenciesChanged;
+ if (handler != null) {
+ handler (this, new EventArgs ());
+ }
+ }
+
+ public void Refresh ()
+ {
+ try {
+ CancelCurrentRefresh ();
+ GetPackageDependencies ();
+ } catch (Exception ex) {
+ LoggingService.LogError ("Refresh packages folder error.", ex);
+ }
+ }
+
+ void CancelCurrentRefresh ()
+ {
+ if (cancellationTokenSource != null) {
+ cancellationTokenSource.Cancel ();
+ cancellationTokenSource.Dispose ();
+ cancellationTokenSource = null;
+ }
+ }
+
+ void GetPackageDependencies ()
+ {
+ var tokenSource = new CancellationTokenSource ();
+ cancellationTokenSource = tokenSource;
+ GetPackageDependenciesAsync (tokenSource)
+ .ContinueWith (task => OnPackageDependenciesRead (task, tokenSource), TaskScheduler.FromCurrentSynchronizationContext ());
+ }
+
+ Task<IEnumerable<PackageDependency>> GetPackageDependenciesAsync (CancellationTokenSource tokenSource)
+ {
+ var configurationSelector = IdeApp.Workspace?.ActiveConfiguration ?? ConfigurationSelector.Default;
+ return Task.Run (() => project.GetPackageDependencies (configurationSelector, tokenSource.Token));
+ }
+
+ void OnPackageDependenciesRead (Task<IEnumerable<PackageDependency>> task, CancellationTokenSource tokenSource)
+ {
+ try {
+ if (task.IsFaulted) {
+ LoggingService.LogError ("OnPackageDependenciesRead error.", task.Exception);
+ } else if (!tokenSource.IsCancellationRequested) {
+ packageDependencies = task.Result.ToList ();
+ LoadedDependencies = true;
+ OnPackageDependenciesChanged ();
+ }
+ } catch (Exception ex) {
+ LoggingService.LogError ("OnInstalledPackagesRead error.", ex);
+ }
+ }
+
+ public IEnumerable<TargetFrameworkNode> GetTargetFrameworkNodes ()
+ {
+ return packageDependencies.Where (dependency => dependency.IsTargetFramework)
+ .Select (dependency => new TargetFrameworkNode (this, dependency));
+ }
+
+ public PackageDependency GetDependency (string dependency)
+ {
+ return packageDependencies
+ .Where (d => d.IsPackage)
+ .FirstOrDefault (d => dependency == d.Name + "/" + d.Version);
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependenciesNodeBuilder.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependenciesNodeBuilder.cs
new file mode 100644
index 0000000000..7f5cc16ac8
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependenciesNodeBuilder.cs
@@ -0,0 +1,97 @@
+//
+// PackageDependenciesNodeBuilder.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Collections.Generic;
+using MonoDevelop.Ide.Gui.Components;
+using MonoDevelop.Core;
+
+namespace MonoDevelop.PackageManagement.NodeBuilders
+{
+ class PackageDependenciesNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(PackageDependenciesNode); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ return PackageDependenciesNode.NodeName;
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
+ {
+ var node = (PackageDependenciesNode)dataObject;
+ nodeInfo.Label = node.GetLabel ();
+ nodeInfo.SecondaryLabel = node.GetSecondaryLabel ();
+ nodeInfo.Icon = Context.GetIcon (node.Icon);
+ nodeInfo.ClosedIcon = Context.GetIcon (node.ClosedIcon);
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ return true;
+ }
+
+ public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
+ {
+ var dependenciesNode = (PackageDependenciesNode)dataObject;
+ if (dependenciesNode.LoadedDependencies) {
+ treeBuilder.AddChildren (GetTargetFrameworkNodes (dataObject));
+ } else {
+ var placeHolderNode = new TargetFrameworkNode (dependenciesNode, GettextCatalog.GetString ("Loading..."));
+ treeBuilder.AddChild (placeHolderNode);
+ }
+ }
+
+ IEnumerable<TargetFrameworkNode> GetTargetFrameworkNodes (object dataObject)
+ {
+ var dependenciesNode = (PackageDependenciesNode)dataObject;
+ return dependenciesNode.GetTargetFrameworkNodes ();
+ }
+
+ public override void OnNodeAdded (object dataObject)
+ {
+ var dependenciesNode = (PackageDependenciesNode)dataObject;
+ dependenciesNode.PackageDependenciesChanged += OnPackageDependenciesChanged;
+ }
+
+ public override void OnNodeRemoved (object dataObject)
+ {
+ var dependenciesNode = (PackageDependenciesNode)dataObject;
+ dependenciesNode.PackageDependenciesChanged -= OnPackageDependenciesChanged;
+ }
+
+ void OnPackageDependenciesChanged (object sender, EventArgs e)
+ {
+ var dependenciesNode = (PackageDependenciesNode)sender;
+ ITreeBuilder builder = Context.GetTreeBuilder (dependenciesNode);
+ if (builder != null) {
+ builder.UpdateAll ();
+ }
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependencyNode.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependencyNode.cs
new file mode 100644
index 0000000000..5a2ccefabb
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependencyNode.cs
@@ -0,0 +1,93 @@
+//
+// PackageDependencyNode.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System.Collections.Generic;
+using System.Linq;
+using MonoDevelop.Core;
+using MonoDevelop.Ide.Gui;
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.PackageManagement.NodeBuilders
+{
+ class PackageDependencyNode
+ {
+ PackageDependenciesNode dependenciesNode;
+ PackageDependency dependency;
+
+ PackageDependencyNode (PackageDependenciesNode dependenciesNode, PackageDependency dependency)
+ {
+ this.dependenciesNode = dependenciesNode;
+ this.dependency = dependency;
+ }
+
+ public static PackageDependencyNode Create (PackageDependenciesNode dependenciesNode, string dependencyName)
+ {
+ PackageDependency dependency = dependenciesNode.GetDependency (dependencyName);
+ if (dependency != null)
+ return new PackageDependencyNode (dependenciesNode, dependency);
+
+ return null;
+ }
+
+ public string Name {
+ get { return dependency.Name; }
+ }
+
+ public string GetLabel ()
+ {
+ return GLib.Markup.EscapeText (Name);
+ }
+
+ public string GetSecondaryLabel ()
+ {
+ return string.Format ("({0})", dependency.Version);
+ }
+
+ public IconId GetIconId ()
+ {
+ return new IconId ("md-package-dependency");
+ }
+
+ public bool HasDependencies ()
+ {
+ return dependency.Dependencies.Any ();
+ }
+
+ public IEnumerable<PackageDependencyNode> GetDependencyNodes ()
+ {
+ return GetDependencyNodes (dependenciesNode, dependency);
+ }
+
+ public static IEnumerable<PackageDependencyNode> GetDependencyNodes (
+ PackageDependenciesNode dependenciesNode,
+ PackageDependency dependency)
+ {
+ return dependency.Dependencies
+ .Select (item => PackageDependencyNode.Create (dependenciesNode, item))
+ .Where (item => item != null);
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependencyNodeBuilder.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependencyNodeBuilder.cs
new file mode 100644
index 0000000000..f9cc28925b
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/PackageDependencyNodeBuilder.cs
@@ -0,0 +1,70 @@
+//
+// PackageDependencyNodeBuilder.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Collections.Generic;
+using MonoDevelop.Ide.Gui.Components;
+
+namespace MonoDevelop.PackageManagement.NodeBuilders
+{
+ class PackageDependencyNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(PackageDependencyNode); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ var node = (PackageDependencyNode)dataObject;
+ return node.Name;
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
+ {
+ var node = (PackageDependencyNode)dataObject;
+ nodeInfo.Label = node.GetLabel ();
+ nodeInfo.SecondaryLabel = node.GetSecondaryLabel ();
+ nodeInfo.Icon = Context.GetIcon (node.GetIconId ());
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ var node = (PackageDependencyNode)dataObject;
+ return node.HasDependencies ();
+ }
+
+ public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
+ {
+ treeBuilder.AddChildren (GetPackageDependencyNodes (dataObject));
+ }
+
+ IEnumerable<PackageDependencyNode> GetPackageDependencyNodes (object dataObject)
+ {
+ var node = (PackageDependencyNode)dataObject;
+ return node.GetDependencyNodes ();
+ }
+ }
+}
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 5c6335e7ae..a91b9bab49 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesFolderNodeBuilder.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/ProjectPackagesFolderNodeBuilder.cs
@@ -28,6 +28,7 @@ using System;
using System.Collections.Generic;
using System.Linq;
using MonoDevelop.Ide.Gui.Components;
+using MonoDevelop.Ide.Gui.Pads.ProjectPad;
using MonoDevelop.PackageManagement.Commands;
using MonoDevelop.Projects;
using NuGet.Packaging;
@@ -63,7 +64,9 @@ namespace MonoDevelop.PackageManagement.NodeBuilders
{
if (otherNode.DataItem is ProjectReferenceCollection)
return 1;
- if (otherNode.DataItem is Ide.Gui.Pads.ProjectPad.GettingStartedNode)
+ if (otherNode.DataItem is GettingStartedNode)
+ return 1;
+ if (otherNode.DataItem is DependenciesNode)
return 1;
return -1;
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/TargetFrameworkNode.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/TargetFrameworkNode.cs
new file mode 100644
index 0000000000..ac374b94cb
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/TargetFrameworkNode.cs
@@ -0,0 +1,95 @@
+//
+// TargetFrameworkNode.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System.Collections.Generic;
+using System.Linq;
+using MonoDevelop.Core;
+using MonoDevelop.Projects;
+
+namespace MonoDevelop.PackageManagement.NodeBuilders
+{
+ class TargetFrameworkNode
+ {
+ PackageDependenciesNode dependenciesNode;
+ PackageDependency dependency;
+ string name = string.Empty;
+
+ public TargetFrameworkNode (PackageDependenciesNode dependenciesNode, PackageDependency dependency)
+ {
+ this.dependenciesNode = dependenciesNode;
+ this.dependency = dependency;
+ }
+
+ public TargetFrameworkNode (PackageDependenciesNode dependenciesNode, string name)
+ {
+ this.dependenciesNode = dependenciesNode;
+ this.name = name;
+ }
+
+ public string Name {
+ get {
+ if (dependency != null)
+ return dependency.Name;
+
+ return name;
+ }
+ }
+
+ public string GetLabel ()
+ {
+ return GLib.Markup.EscapeText (Name);
+ }
+
+ public string GetSecondaryLabel ()
+ {
+ if (dependency != null)
+ return string.Format ("({0})", dependency.Version);
+
+ return string.Empty;
+ }
+
+ public IconId GetIconId ()
+ {
+ return new IconId ("md-framework-dependency");
+ }
+
+ public bool HasDependencies ()
+ {
+ if (dependency != null)
+ return dependency.Dependencies.Any ();
+
+ return false;
+ }
+
+ public IEnumerable<PackageDependencyNode> GetDependencyNodes ()
+ {
+ if (dependency != null)
+ return PackageDependencyNode.GetDependencyNodes (dependenciesNode, dependency);
+
+ return new PackageDependencyNode[0];
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/TargetFrameworkNodeBuilder.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/TargetFrameworkNodeBuilder.cs
new file mode 100644
index 0000000000..7d2c8e994c
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.NodeBuilders/TargetFrameworkNodeBuilder.cs
@@ -0,0 +1,71 @@
+//
+// TargetFrameworkNodeBuilder.cs
+//
+// Author:
+// Matt Ward <matt.ward@xamarin.com>
+//
+// Copyright (c) 2016 Xamarin Inc. (http://xamarin.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining a copy
+// of this software and associated documentation files (the "Software"), to deal
+// in the Software without restriction, including without limitation the rights
+// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+// copies of the Software, and to permit persons to whom the Software is
+// furnished to do so, subject to the following conditions:
+//
+// The above copyright notice and this permission notice shall be included in
+// all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+// THE SOFTWARE.
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using MonoDevelop.Ide.Gui.Components;
+
+namespace MonoDevelop.PackageManagement.NodeBuilders
+{
+ class TargetFrameworkNodeBuilder : TypeNodeBuilder
+ {
+ public override Type NodeDataType {
+ get { return typeof(TargetFrameworkNode); }
+ }
+
+ public override string GetNodeName (ITreeNavigator thisNode, object dataObject)
+ {
+ var node = (TargetFrameworkNode)dataObject;
+ return node.Name;
+ }
+
+ public override void BuildNode (ITreeBuilder treeBuilder, object dataObject, NodeInfo nodeInfo)
+ {
+ var node = (TargetFrameworkNode)dataObject;
+ nodeInfo.Label = node.GetLabel ();
+ nodeInfo.SecondaryLabel = node.GetSecondaryLabel ();
+ nodeInfo.Icon = Context.GetIcon (node.GetIconId ());
+ }
+
+ public override bool HasChildNodes (ITreeBuilder builder, object dataObject)
+ {
+ var node = (TargetFrameworkNode)dataObject;
+ return node.HasDependencies ();
+ }
+
+ public override void BuildChildNodes (ITreeBuilder treeBuilder, object dataObject)
+ {
+ treeBuilder.AddChildren (GetPackageDependencyNodes (dataObject));
+ }
+
+ IEnumerable<PackageDependencyNode> GetPackageDependencyNodes (object dataObject)
+ {
+ var node = (TargetFrameworkNode)dataObject;
+ return node.GetDependencyNodes ();
+ }
+ }
+}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml
index 334dac6679..0b5d0ba828 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.addin.xml
@@ -106,8 +106,10 @@
<StockIcon stockid="md-nuget-package-source" resource="package-source-32.png" size="Dnd" />
<StockIcon stockid="md-prefs-package" resource="prefs-package-16.png" size="Menu" />
<StockIcon stockid="md-prefs-package-source" resource="prefs-package-source-16.png" size="Menu" />
+ <StockIcon stockid="md-package-dependency" resource="nuget-16.png" />
+ <StockIcon stockid="md-framework-dependency" resource="framework-16.png" />
</Extension>
-
+
<Extension path="/MonoDevelop/Ide/GlobalOptionsDialog">
<Section id="NuGetPackageManagement" _label="NuGet" insertafter="VersionControl">
<Section id="General" _label="General" fill="true" class="MonoDevelop.PackageManagement.Gui.PackageManagementOptionsPanel" icon="md-prefs-package" />
@@ -126,6 +128,11 @@
<NodeBuilder class="MonoDevelop.PackageManagement.NodeBuilders.ProjectReferenceNodeBuilderExtension" />
<NodeBuilder class="MonoDevelop.PackageManagement.NodeBuilders.ProjectReferencesNodeBuilderExtension" />
<NodeBuilder class="MonoDevelop.PackageManagement.NodeBuilders.ProjectReferencesFromPackagesFolderNodeBuilder" />
+ <NodeBuilder class="MonoDevelop.PackageManagement.NodeBuilders.DependenciesNodeBuilderExtension" />
+ <NodeBuilder class="MonoDevelop.PackageManagement.NodeBuilders.DependenciesNodeBuilder" />
+ <NodeBuilder class="MonoDevelop.PackageManagement.NodeBuilders.PackageDependenciesNodeBuilder" />
+ <NodeBuilder class="MonoDevelop.PackageManagement.NodeBuilders.TargetFrameworkNodeBuilder" />
+ <NodeBuilder class="MonoDevelop.PackageManagement.NodeBuilders.PackageDependencyNodeBuilder" />
</Extension>
<ExtensionPoint path = "/MonoDevelop/PackageManagement/ContextMenu/ProjectPad/PackageReference">
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
index ad09164955..c63c03bd73 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement.csproj
@@ -406,6 +406,15 @@
<Compile Include="MonoDevelop.PackageManagement\MonoDevelopDotNetCorePackageRestorer.cs" />
<Compile Include="MonoDevelop.PackageManagement\DotNetCorePath.cs" />
<Compile Include="MonoDevelop.PackageManagement\LoggingProgressMonitor.cs" />
+ <Compile Include="MonoDevelop.PackageManagement.NodeBuilders\DependenciesNodeBuilderExtension.cs" />
+ <Compile Include="MonoDevelop.PackageManagement.NodeBuilders\DependenciesNode.cs" />
+ <Compile Include="MonoDevelop.PackageManagement.NodeBuilders\DependenciesNodeBuilder.cs" />
+ <Compile Include="MonoDevelop.PackageManagement.NodeBuilders\PackageDependenciesNode.cs" />
+ <Compile Include="MonoDevelop.PackageManagement.NodeBuilders\PackageDependenciesNodeBuilder.cs" />
+ <Compile Include="MonoDevelop.PackageManagement.NodeBuilders\TargetFrameworkNode.cs" />
+ <Compile Include="MonoDevelop.PackageManagement.NodeBuilders\TargetFrameworkNodeBuilder.cs" />
+ <Compile Include="MonoDevelop.PackageManagement.NodeBuilders\PackageDependencyNode.cs" />
+ <Compile Include="MonoDevelop.PackageManagement.NodeBuilders\PackageDependencyNodeBuilder.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="MonoDevelop.PackageManagement.addin.xml" />
@@ -484,6 +493,54 @@
<EmbeddedResource Include="icons\prefs-package-source-16~dark~sel%402x.png">
<LogicalName>prefs-package-source-16~dark~sel@2x.png</LogicalName>
</EmbeddedResource>
+ <EmbeddedResource Include="icons\framework-16.png">
+ <LogicalName>framework-16.png</LogicalName>
+ </EmbeddedResource>
+ <EmbeddedResource Include="icons\framework-16%402x.png">
+ <LogicalName>framework-16@2x.png</LogicalName>
+ </EmbeddedResource>
+ <EmbeddedResource Include="icons\framework-16~dark.png">
+ <LogicalName>framework-16~dark.png</LogicalName>
+ </EmbeddedResource>
+ <EmbeddedResource Include="icons\framework-16~dark%402x.png">
+ <LogicalName>framework-16~dark@2x.png</LogicalName>
+ </EmbeddedResource>
+ <EmbeddedResource Include="icons\framework-16~dark~sel.png">
+ <LogicalName>framework-16~dark~sel.png</LogicalName>
+ </EmbeddedResource>
+ <EmbeddedResource Include="icons\framework-16~dark~sel%402x.png">
+ <LogicalName>framework-16~dark~sel@2x.png</LogicalName>
+ </EmbeddedResource>
+ <EmbeddedResource Include="icons\framework-16~sel.png">
+ <LogicalName>framework-16~sel.png</LogicalName>
+ </EmbeddedResource>
+ <EmbeddedResource Include="icons\framework-16~sel%402x.png">
+ <LogicalName>framework-16~sel@2x.png</LogicalName>
+ </EmbeddedResource>
+ <EmbeddedResource Include="icons\nuget-16.png">
+ <LogicalName>nuget-16.png</LogicalName>
+ </EmbeddedResource>
+ <EmbeddedResource Include="icons\nuget-16%402x.png">
+ <LogicalName>nuget-16@2x.png</LogicalName>
+ </EmbeddedResource>
+ <EmbeddedResource Include="icons\nuget-16~dark.png">
+ <LogicalName>nuget-16~dark.png</LogicalName>
+ </EmbeddedResource>
+ <EmbeddedResource Include="icons\nuget-16~dark%402x.png">
+ <LogicalName>nuget-16~dark@2x.png</LogicalName>
+ </EmbeddedResource>
+ <EmbeddedResource Include="icons\nuget-16~dark~sel.png">
+ <LogicalName>nuget-16~dark~sel.png</LogicalName>
+ </EmbeddedResource>
+ <EmbeddedResource Include="icons\nuget-16~dark~sel%402x.png">
+ <LogicalName>nuget-16~dark~sel@2x.png</LogicalName>
+ </EmbeddedResource>
+ <EmbeddedResource Include="icons\nuget-16~sel.png">
+ <LogicalName>nuget-16~sel.png</LogicalName>
+ </EmbeddedResource>
+ <EmbeddedResource Include="icons\nuget-16~sel%402x.png">
+ <LogicalName>nuget-16~sel@2x.png</LogicalName>
+ </EmbeddedResource>
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="icons\package-48.png">
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetCoreNuGetProject.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetCoreNuGetProject.cs
index 4901a19db9..bb79aa7a09 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetCoreNuGetProject.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetCoreNuGetProject.cs
@@ -308,13 +308,15 @@ namespace MonoDevelop.PackageManagement
/// Restore after executing the project actions to ensure the NuGet packages are
/// supported by the project.
/// </summary>
- public override Task PostProcessAsync (INuGetProjectContext nuGetProjectContext, CancellationToken token)
+ public override async Task PostProcessAsync (INuGetProjectContext nuGetProjectContext, CancellationToken token)
{
if (!modified)
- return Task.FromResult (0);
+ return;;
var packageRestorer = new MonoDevelopDotNetCorePackageRestorer (project);
- return packageRestorer.RestorePackages (token);
+ await packageRestorer.RestorePackages (token);
+
+ PackageManagementServices.PackageManagementEvents.OnPackagesRestored ();
}
}
}
diff --git a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetProjectExtensions.cs b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetProjectExtensions.cs
index 305660c82b..ffbdda7b84 100644
--- a/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetProjectExtensions.cs
+++ b/main/src/addins/MonoDevelop.PackageManagement/MonoDevelop.PackageManagement/DotNetProjectExtensions.cs
@@ -164,6 +164,11 @@ namespace MonoDevelop.PackageManagement
return Enumerable.Empty<string> ();
}
+ public static bool IsDotNetCoreProject (this Project project)
+ {
+ return project.GetDotNetCoreTargetFrameworks ().Any ();
+ }
+
public static bool HasPackageReferences (this DotNetProject project)
{
return project.Items.OfType<ProjectPackageReference> ().Any ();
diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16.png b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16.png
new file mode 100644
index 0000000000..4e91af224f
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16.png
Binary files differ
diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16@2x.png b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16@2x.png
new file mode 100644
index 0000000000..ff5ae5015d
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16@2x.png
Binary files differ
diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark.png b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark.png
new file mode 100644
index 0000000000..01ac6c91e9
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark.png
Binary files differ
diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark@2x.png b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark@2x.png
new file mode 100644
index 0000000000..435e4efe32
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark@2x.png
Binary files differ
diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark~sel.png b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark~sel.png
new file mode 100644
index 0000000000..e82546d98d
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark~sel.png
Binary files differ
diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark~sel@2x.png b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark~sel@2x.png
new file mode 100644
index 0000000000..de4767f96e
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark~sel@2x.png
Binary files differ
diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~sel.png b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~sel.png
new file mode 100644
index 0000000000..e82546d98d
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~sel.png
Binary files differ
diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~sel@2x.png b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~sel@2x.png
new file mode 100644
index 0000000000..de4767f96e
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~sel@2x.png
Binary files differ
diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16.png b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16.png
new file mode 100644
index 0000000000..a55f3283cd
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16.png
Binary files differ
diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16@2x.png b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16@2x.png
new file mode 100644
index 0000000000..3e5d301726
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16@2x.png
Binary files differ
diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark.png b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark.png
new file mode 100644
index 0000000000..de23b454f2
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark.png
Binary files differ
diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark@2x.png b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark@2x.png
new file mode 100644
index 0000000000..6c54c8f742
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark@2x.png
Binary files differ
diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark~sel.png b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark~sel.png
new file mode 100644
index 0000000000..e5428aa49d
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark~sel.png
Binary files differ
diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark~sel@2x.png b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark~sel@2x.png
new file mode 100644
index 0000000000..e08820544e
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark~sel@2x.png
Binary files differ
diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~sel.png b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~sel.png
new file mode 100644
index 0000000000..e5428aa49d
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~sel.png
Binary files differ
diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~sel@2x.png b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~sel@2x.png
new file mode 100644
index 0000000000..e08820544e
--- /dev/null
+++ b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~sel@2x.png
Binary files differ