diff --git a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
index a1537b1d6a..8c11788090 100644
--- a/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
+++ b/src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
@@ -131,6 +131,7 @@
+
RegisteredPackageSourcesView.xaml
Code
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSettings.cs b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSettings.cs
index 0cb7af1f7e..df35f7d304 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSettings.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSettings.cs
@@ -20,8 +20,8 @@ namespace ICSharpCode.PackageManagement.Design
public FakeSettings()
{
- Sections.Add(RegisteredPackageSources.PackageSourcesSectionName, PackageSources);
- Sections.Add(RegisteredPackageSources.ActivePackageSourceSectionName, ActivePackageSourceSettings);
+ Sections.Add(RegisteredPackageSourceSettings.PackageSourcesSectionName, PackageSources);
+ Sections.Add(RegisteredPackageSourceSettings.ActivePackageSourceSectionName, ActivePackageSourceSettings);
}
public string GetValue(string section, string key)
@@ -51,7 +51,7 @@ namespace ICSharpCode.PackageManagement.Design
public KeyValuePair GetValuePassedToSetValueForActivePackageSourceSection()
{
- return SavedSectionValues[RegisteredPackageSources.ActivePackageSourceSectionName];
+ return SavedSectionValues[RegisteredPackageSourceSettings.ActivePackageSourceSectionName];
}
public void SetValues(string section, IList> values)
@@ -65,7 +65,7 @@ namespace ICSharpCode.PackageManagement.Design
public IList> GetValuesPassedToSetValuesForPackageSourcesSection()
{
- return SavedSectionValueLists[RegisteredPackageSources.PackageSourcesSectionName];
+ return SavedSectionValueLists[RegisteredPackageSourceSettings.PackageSourcesSectionName];
}
public bool DeleteValue(string section, string key)
@@ -83,13 +83,13 @@ namespace ICSharpCode.PackageManagement.Design
public bool IsPackageSourcesSectionDeleted {
get {
- return SectionsDeleted.Contains(RegisteredPackageSources.PackageSourcesSectionName);
+ return SectionsDeleted.Contains(RegisteredPackageSourceSettings.PackageSourcesSectionName);
}
}
public bool IsActivePackageSourceSectionDeleted {
get {
- return SectionsDeleted.Contains(RegisteredPackageSources.ActivePackageSourceSectionName);
+ return SectionsDeleted.Contains(RegisteredPackageSourceSettings.ActivePackageSourceSectionName);
}
}
@@ -102,14 +102,14 @@ namespace ICSharpCode.PackageManagement.Design
public void MakeActivePackageSourceSectionNull()
{
- Sections.Remove(RegisteredPackageSources.ActivePackageSourceSectionName);
- Sections.Add(RegisteredPackageSources.ActivePackageSourceSectionName, null);
+ Sections.Remove(RegisteredPackageSourceSettings.ActivePackageSourceSectionName);
+ Sections.Add(RegisteredPackageSourceSettings.ActivePackageSourceSectionName, null);
}
public void MakePackageSourceSectionsNull()
{
- Sections.Remove(RegisteredPackageSources.PackageSourcesSectionName);
- Sections.Add(RegisteredPackageSources.PackageSourcesSectionName, null);
+ Sections.Remove(RegisteredPackageSourceSettings.PackageSourcesSectionName);
+ Sections.Add(RegisteredPackageSourceSettings.PackageSourcesSectionName, null);
}
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptions.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptions.cs
index 799529fdfd..8694de2255 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptions.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptions.cs
@@ -12,20 +12,17 @@ namespace ICSharpCode.PackageManagement
{
public class PackageManagementOptions
{
- const string PackageSourcesPropertyName = "PackageSources";
const string PackageDirectoryPropertyName = "PackagesDirectory";
- const string ActivePackageSourcePropertyName = "ActivePackageSource";
const string RecentPackagesPropertyName = "RecentPackages";
- RegisteredPackageSources packageSources;
+ RegisteredPackageSourceSettings registeredPackageSourceSettings;
Properties properties;
- ISettings settings;
List recentPackages;
public PackageManagementOptions(Properties properties, ISettings settings)
{
this.properties = properties;
- this.settings = settings;
+ registeredPackageSourceSettings = new RegisteredPackageSourceSettings(settings);
}
public PackageManagementOptions(Properties properties)
@@ -39,39 +36,7 @@ namespace ICSharpCode.PackageManagement
}
public RegisteredPackageSources PackageSources {
- get {
- if (packageSources == null) {
- packageSources = new RegisteredPackageSources(settings);
- }
- return packageSources;
- }
- }
-
- IEnumerable GetSavedPackageSources()
- {
- return PackageSourceConverter.ConvertFromRegisteredPackageSources(SavedRegisteredPackageSources);
- }
-
- void PackageSourcesChanged(object sender, NotifyCollectionChangedEventArgs e)
- {
- UpdateSavedPackageSources();
- }
-
- void UpdateSavedPackageSources()
- {
- SavedRegisteredPackageSources =
- PackageSourceConverter.ConvertToRegisteredPackageSourcesList(packageSources);
- }
-
- ///
- /// Use RegisteredPackageSource since PackageSource cannot be serialized.
- ///
- IList SavedRegisteredPackageSources {
- get {
- List defaultSources = new List();
- return properties.Get>(PackageSourcesPropertyName, defaultSources);
- }
- set { properties.Set(PackageSourcesPropertyName, value); }
+ get { return registeredPackageSourceSettings.PackageSources; }
}
public string PackagesDirectory {
@@ -80,8 +45,8 @@ namespace ICSharpCode.PackageManagement
}
public PackageSource ActivePackageSource {
- get { return PackageSources.ActivePackageSource; }
- set { PackageSources.ActivePackageSource = value; }
+ get { return registeredPackageSourceSettings.ActivePackageSource; }
+ set { registeredPackageSourceSettings.ActivePackageSource = value; }
}
public IList RecentPackages {
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/PackageSourceConverter.cs b/src/AddIns/Misc/PackageManagement/Project/Src/PackageSourceConverter.cs
index 00873bfebd..18540aa946 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/PackageSourceConverter.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/PackageSourceConverter.cs
@@ -3,30 +3,57 @@
using System;
using System.Collections.Generic;
+using System.Linq;
using NuGet;
namespace ICSharpCode.PackageManagement
{
public static class PackageSourceConverter
{
- public static IEnumerable ConvertFromRegisteredPackageSources(IEnumerable registeredPackageSources)
+ public static IEnumerable ConvertFromKeyValuePairs(IEnumerable> packageSources)
{
- foreach (RegisteredPackageSource registeredPackageSource in registeredPackageSources) {
- yield return registeredPackageSource.ToPackageSource();
+ if (HasAny(packageSources)) {
+ foreach (KeyValuePair packageSource in packageSources) {
+ yield return CreatePackageSourceFromKeyValuePair(packageSource);
+ }
}
}
- public static IEnumerable ConvertToRegisteredPackageSources(IEnumerable packageSources)
+ static bool HasAny(IEnumerable> packageSources)
{
- foreach (PackageSource packageSource in packageSources) {
- yield return new RegisteredPackageSource(packageSource);
+ if (packageSources != null) {
+ return packageSources.Any();
}
+ return false;
}
- public static IList ConvertToRegisteredPackageSourcesList(IEnumerable packageSources)
+ static PackageSource CreatePackageSourceFromKeyValuePair(KeyValuePair savedPackageSource)
{
- IEnumerable convertedPackageSources = ConvertToRegisteredPackageSources(packageSources);
- return new List(convertedPackageSources);
+ string source = savedPackageSource.Value;
+ string name = savedPackageSource.Key;
+ return new PackageSource(source, name);
+ }
+
+ public static PackageSource ConvertFromFirstKeyValuePair(IEnumerable> packageSources)
+ {
+ if (HasAny(packageSources)) {
+ return CreatePackageSourceFromKeyValuePair(packageSources.First());
+ }
+ return null;
+ }
+
+ public static IList> ConvertToKeyValuePairList(IEnumerable packageSources)
+ {
+ var convertedPackageSources = new List>();
+ foreach (PackageSource source in packageSources) {
+ convertedPackageSources.Add(ConvertToKeyValuePair(source));
+ }
+ return convertedPackageSources;
+ }
+
+ public static KeyValuePair ConvertToKeyValuePair(PackageSource source)
+ {
+ return new KeyValuePair(source.Name, source.Source);
}
}
}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourceSettings.cs b/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourceSettings.cs
new file mode 100644
index 0000000000..ee20a2b2fa
--- /dev/null
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourceSettings.cs
@@ -0,0 +1,117 @@
+// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
+// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
+
+using System;
+using System.Collections.Generic;
+using System.Collections.Specialized;
+
+using NuGet;
+
+namespace ICSharpCode.PackageManagement
+{
+ public class RegisteredPackageSourceSettings
+ {
+ public static readonly string PackageSourcesSectionName = "packageSources";
+ public static readonly string ActivePackageSourceSectionName = "activePackageSource";
+
+ ISettings settings;
+ RegisteredPackageSources packageSources;
+ PackageSource activePackageSource;
+
+ public RegisteredPackageSourceSettings(ISettings settings)
+ {
+ this.settings = settings;
+ ReadActivePackageSource();
+ }
+
+ void ReadActivePackageSource()
+ {
+ IList> packageSources = settings.GetValues(ActivePackageSourceSectionName);
+ activePackageSource = PackageSourceConverter.ConvertFromFirstKeyValuePair(packageSources);
+ }
+
+ public RegisteredPackageSources PackageSources {
+ get {
+ if (packageSources == null) {
+ ReadPackageSources();
+ }
+ return packageSources;
+ }
+ }
+
+ void ReadPackageSources()
+ {
+ var savedPackageSources = GetPackageSourcesFromSettings();
+ packageSources = new RegisteredPackageSources(savedPackageSources);
+ packageSources.CollectionChanged += PackageSourcesChanged;
+ }
+
+ IEnumerable GetPackageSourcesFromSettings()
+ {
+ IList> savedPackageSources = settings.GetValues(PackageSourcesSectionName);
+ return PackageSourceConverter.ConvertFromKeyValuePairs(savedPackageSources);
+ }
+
+ void PackageSourcesChanged(object sender, NotifyCollectionChangedEventArgs e)
+ {
+ UpdatePackageSourceSettingsWithChanges();
+ }
+
+ void UpdatePackageSourceSettingsWithChanges()
+ {
+ var newPackageSourceSettings = GetSettingsFromPackageSources();
+ SavePackageSourceSettings(newPackageSourceSettings);
+ }
+
+ IList> GetSettingsFromPackageSources()
+ {
+ return PackageSourceConverter.ConvertToKeyValuePairList(packageSources);
+ }
+
+ KeyValuePair CreateKeyValuePairFromPackageSource(PackageSource source)
+ {
+ return new KeyValuePair(source.Name, source.Source);
+ }
+
+ void SavePackageSourceSettings(IList> newPackageSourceSettings)
+ {
+ settings.DeleteSection(PackageSourcesSectionName);
+ settings.SetValues(PackageSourcesSectionName, newPackageSourceSettings);
+ }
+
+ public PackageSource ActivePackageSource {
+ get {
+ if (PackageSources.Contains(activePackageSource)) {
+ return activePackageSource;
+ }
+ return null;
+ }
+ set {
+ activePackageSource = value;
+ if (activePackageSource == null) {
+ RemoveActivePackageSourceSetting();
+ } else {
+ UpdateActivePackageSourceSetting();
+ }
+ }
+ }
+
+ void RemoveActivePackageSourceSetting()
+ {
+ settings.DeleteSection(ActivePackageSourceSectionName);
+ }
+
+ void UpdateActivePackageSourceSetting()
+ {
+ RemoveActivePackageSourceSetting();
+
+ var activePackageSourceSetting = PackageSourceConverter.ConvertToKeyValuePair(activePackageSource);
+ SaveActivePackageSourceSetting(activePackageSourceSetting);
+ }
+
+ void SaveActivePackageSourceSetting(KeyValuePair activePackageSource)
+ {
+ settings.SetValue(ActivePackageSourceSectionName, activePackageSource.Key, activePackageSource.Value);
+ }
+ }
+}
diff --git a/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSources.cs b/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSources.cs
index e53da0c67b..6974fd5a93 100644
--- a/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSources.cs
+++ b/src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSources.cs
@@ -4,9 +4,7 @@
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
-using System.Collections.Specialized;
-using System.Linq;
-using ICSharpCode.Core;
+
using NuGet;
namespace ICSharpCode.PackageManagement
@@ -16,61 +14,15 @@ namespace ICSharpCode.PackageManagement
public static readonly string DefaultPackageSourceUrl = "http://go.microsoft.com/fwlink/?LinkID=206669";
public static readonly string DefaultPackageSourceName = "NuGet Official Package Source";
- public static readonly string PackageSourcesSectionName = "packageSources";
- public static readonly string ActivePackageSourceSectionName = "activePackageSource";
-
public static readonly PackageSource DefaultPackageSource =
new PackageSource(DefaultPackageSourceUrl, DefaultPackageSourceName);
- ISettings settings;
- PackageSource activePackageSource;
-
public RegisteredPackageSources(IEnumerable packageSources)
{
AddPackageSources(packageSources);
AddDefaultPackageSourceIfNoRegisteredPackageSources();
}
- public RegisteredPackageSources(ISettings settings)
- {
- this.settings = settings;
- AddPackageSources();
- AddDefaultPackageSourceIfNoRegisteredPackageSources();
- ReadActivePackageSource();
- }
-
- void AddPackageSources()
- {
- foreach (PackageSource source in GetPackageSourcesFromSettings()) {
- Add(source);
- }
- }
-
- IEnumerable GetPackageSourcesFromSettings()
- {
- IList> savedPackageSources = settings.GetValues(PackageSourcesSectionName);
- if (HasAny(savedPackageSources)) {
- foreach (KeyValuePair packageSource in savedPackageSources) {
- yield return CreatePackageSourceFromKeyValuePair(packageSource);
- }
- }
- }
-
- bool HasAny(IList> packageSources)
- {
- if (packageSources != null) {
- return packageSources.Any();
- }
- return false;
- }
-
- PackageSource CreatePackageSourceFromKeyValuePair(KeyValuePair savedPackageSource)
- {
- string source = savedPackageSource.Value;
- string name = savedPackageSource.Key;
- return new PackageSource(source, name);
- }
-
void AddPackageSources(IEnumerable packageSources)
{
foreach (PackageSource source in packageSources) {
@@ -92,82 +44,5 @@ namespace ICSharpCode.PackageManagement
public bool HasMultiplePackageSources {
get { return Count > 1; }
}
-
- void ReadActivePackageSource()
- {
- IList> packageSources = settings.GetValues(ActivePackageSourceSectionName);
- if (HasAny(packageSources)) {
- activePackageSource = CreatePackageSourceFromKeyValuePair(packageSources[0]);
- }
- }
-
- protected override void OnCollectionChanged(NotifyCollectionChangedEventArgs e)
- {
- base.OnCollectionChanged(e);
- UpdatePackageSourceSettingsWithChanges();
- }
-
- void UpdatePackageSourceSettingsWithChanges()
- {
- if (settings != null) {
- IList> newPackageSourceSettings = GetSettingsFromPackageSources();
- SavePackageSourceSettings(newPackageSourceSettings);
- }
- }
-
- IList> GetSettingsFromPackageSources()
- {
- var settings = new List>();
- foreach (PackageSource source in this) {
- settings.Add(CreateKeyValuePairFromPackageSource(source));
- }
- return settings;
- }
-
- KeyValuePair CreateKeyValuePairFromPackageSource(PackageSource source)
- {
- return new KeyValuePair(source.Name, source.Source);
- }
-
- void SavePackageSourceSettings(IList> newPackageSourceSettings)
- {
- settings.DeleteSection(PackageSourcesSectionName);
- settings.SetValues(PackageSourcesSectionName, newPackageSourceSettings);
- }
-
- public PackageSource ActivePackageSource {
- get {
- if (Contains(activePackageSource)) {
- return activePackageSource;
- }
- return null;
- }
- set {
- activePackageSource = value;
- if (activePackageSource == null) {
- RemoveActivePackageSourceSetting();
- } else {
- UpdateActivePackageSourceSetting();
- }
- }
- }
-
- void RemoveActivePackageSourceSetting()
- {
- settings.DeleteSection(ActivePackageSourceSectionName);
- }
-
- void UpdateActivePackageSourceSetting()
- {
- RemoveActivePackageSourceSetting();
-
- KeyValuePair activePackageSourceSetting = CreateKeyValuePairFromPackageSource(activePackageSource);
- SaveActivePackageSourceSetting(activePackageSourceSetting);
- }
-
- void SaveActivePackageSourceSetting(KeyValuePair activePackageSource)
- {
- settings.SetValue(ActivePackageSourceSectionName, activePackageSource.Key, activePackageSource.Value);
- }
}
}