diff options
author | Matt Ward <matt.ward@xamarin.com> | 2016-11-11 17:59:19 +0300 |
---|---|---|
committer | Matt Ward <matt.ward@xamarin.com> | 2016-11-11 18:00:53 +0300 |
commit | b5fee856311849a272040a71b190699bcc97245b (patch) | |
tree | 57ef4fea1adb0121e3980c796011bd0701345898 /main/src/addins | |
parent | 3822e1f75a8c37f8860b16685e51e2c0b5f06ad6 (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.
Diffstat (limited to 'main/src/addins')
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 Binary files differnew file mode 100644 index 0000000000..4e91af224f --- /dev/null +++ b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16.png diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16@2x.png b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16@2x.png Binary files differnew file mode 100644 index 0000000000..ff5ae5015d --- /dev/null +++ b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16@2x.png diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark.png b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark.png Binary files differnew file mode 100644 index 0000000000..01ac6c91e9 --- /dev/null +++ b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark.png 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 Binary files differnew file mode 100644 index 0000000000..435e4efe32 --- /dev/null +++ b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark@2x.png 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 Binary files differnew file mode 100644 index 0000000000..e82546d98d --- /dev/null +++ b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark~sel.png 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 Binary files differnew file mode 100644 index 0000000000..de4767f96e --- /dev/null +++ b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~dark~sel@2x.png diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~sel.png b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~sel.png Binary files differnew file mode 100644 index 0000000000..e82546d98d --- /dev/null +++ b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~sel.png 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 Binary files differnew file mode 100644 index 0000000000..de4767f96e --- /dev/null +++ b/main/src/addins/MonoDevelop.PackageManagement/icons/framework-16~sel@2x.png diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16.png b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16.png Binary files differnew file mode 100644 index 0000000000..a55f3283cd --- /dev/null +++ b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16.png diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16@2x.png b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16@2x.png Binary files differnew file mode 100644 index 0000000000..3e5d301726 --- /dev/null +++ b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16@2x.png diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark.png b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark.png Binary files differnew file mode 100644 index 0000000000..de23b454f2 --- /dev/null +++ b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark.png 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 Binary files differnew file mode 100644 index 0000000000..6c54c8f742 --- /dev/null +++ b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark@2x.png 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 Binary files differnew file mode 100644 index 0000000000..e5428aa49d --- /dev/null +++ b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark~sel.png 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 Binary files differnew file mode 100644 index 0000000000..e08820544e --- /dev/null +++ b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~dark~sel@2x.png diff --git a/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~sel.png b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~sel.png Binary files differnew file mode 100644 index 0000000000..e5428aa49d --- /dev/null +++ b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~sel.png 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 Binary files differnew file mode 100644 index 0000000000..e08820544e --- /dev/null +++ b/main/src/addins/MonoDevelop.PackageManagement/icons/nuget-16~sel@2x.png |