Browse Source

Refactor registered package source code.

pull/15/head
mrward 15 years ago
parent
commit
c2d220331d
  1. 1
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  2. 20
      src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSettings.cs
  3. 45
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptions.cs
  4. 45
      src/AddIns/Misc/PackageManagement/Project/Src/PackageSourceConverter.cs
  5. 117
      src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourceSettings.cs
  6. 127
      src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSources.cs

1
src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj

@ -131,6 +131,7 @@
<Compile Include="Src\PackageManagementFileService.cs" /> <Compile Include="Src\PackageManagementFileService.cs" />
<Compile Include="Src\PackageManagementOptions.cs" /> <Compile Include="Src\PackageManagementOptions.cs" />
<Compile Include="Src\Process.cs" /> <Compile Include="Src\Process.cs" />
<Compile Include="Src\RegisteredPackageSourceSettings.cs" />
<Compile Include="Src\RegisteredPackageSourcesView.xaml.cs"> <Compile Include="Src\RegisteredPackageSourcesView.xaml.cs">
<DependentUpon>RegisteredPackageSourcesView.xaml</DependentUpon> <DependentUpon>RegisteredPackageSourcesView.xaml</DependentUpon>
<SubType>Code</SubType> <SubType>Code</SubType>

20
src/AddIns/Misc/PackageManagement/Project/Src/Design/FakeSettings.cs

@ -20,8 +20,8 @@ namespace ICSharpCode.PackageManagement.Design
public FakeSettings() public FakeSettings()
{ {
Sections.Add(RegisteredPackageSources.PackageSourcesSectionName, PackageSources); Sections.Add(RegisteredPackageSourceSettings.PackageSourcesSectionName, PackageSources);
Sections.Add(RegisteredPackageSources.ActivePackageSourceSectionName, ActivePackageSourceSettings); Sections.Add(RegisteredPackageSourceSettings.ActivePackageSourceSectionName, ActivePackageSourceSettings);
} }
public string GetValue(string section, string key) public string GetValue(string section, string key)
@ -51,7 +51,7 @@ namespace ICSharpCode.PackageManagement.Design
public KeyValuePair<string, string> GetValuePassedToSetValueForActivePackageSourceSection() public KeyValuePair<string, string> GetValuePassedToSetValueForActivePackageSourceSection()
{ {
return SavedSectionValues[RegisteredPackageSources.ActivePackageSourceSectionName]; return SavedSectionValues[RegisteredPackageSourceSettings.ActivePackageSourceSectionName];
} }
public void SetValues(string section, IList<KeyValuePair<string, string>> values) public void SetValues(string section, IList<KeyValuePair<string, string>> values)
@ -65,7 +65,7 @@ namespace ICSharpCode.PackageManagement.Design
public IList<KeyValuePair<string, string>> GetValuesPassedToSetValuesForPackageSourcesSection() public IList<KeyValuePair<string, string>> GetValuesPassedToSetValuesForPackageSourcesSection()
{ {
return SavedSectionValueLists[RegisteredPackageSources.PackageSourcesSectionName]; return SavedSectionValueLists[RegisteredPackageSourceSettings.PackageSourcesSectionName];
} }
public bool DeleteValue(string section, string key) public bool DeleteValue(string section, string key)
@ -83,13 +83,13 @@ namespace ICSharpCode.PackageManagement.Design
public bool IsPackageSourcesSectionDeleted { public bool IsPackageSourcesSectionDeleted {
get { get {
return SectionsDeleted.Contains(RegisteredPackageSources.PackageSourcesSectionName); return SectionsDeleted.Contains(RegisteredPackageSourceSettings.PackageSourcesSectionName);
} }
} }
public bool IsActivePackageSourceSectionDeleted { public bool IsActivePackageSourceSectionDeleted {
get { get {
return SectionsDeleted.Contains(RegisteredPackageSources.ActivePackageSourceSectionName); return SectionsDeleted.Contains(RegisteredPackageSourceSettings.ActivePackageSourceSectionName);
} }
} }
@ -102,14 +102,14 @@ namespace ICSharpCode.PackageManagement.Design
public void MakeActivePackageSourceSectionNull() public void MakeActivePackageSourceSectionNull()
{ {
Sections.Remove(RegisteredPackageSources.ActivePackageSourceSectionName); Sections.Remove(RegisteredPackageSourceSettings.ActivePackageSourceSectionName);
Sections.Add(RegisteredPackageSources.ActivePackageSourceSectionName, null); Sections.Add(RegisteredPackageSourceSettings.ActivePackageSourceSectionName, null);
} }
public void MakePackageSourceSectionsNull() public void MakePackageSourceSectionsNull()
{ {
Sections.Remove(RegisteredPackageSources.PackageSourcesSectionName); Sections.Remove(RegisteredPackageSourceSettings.PackageSourcesSectionName);
Sections.Add(RegisteredPackageSources.PackageSourcesSectionName, null); Sections.Add(RegisteredPackageSourceSettings.PackageSourcesSectionName, null);
} }
} }
} }

45
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementOptions.cs

@ -12,20 +12,17 @@ namespace ICSharpCode.PackageManagement
{ {
public class PackageManagementOptions public class PackageManagementOptions
{ {
const string PackageSourcesPropertyName = "PackageSources";
const string PackageDirectoryPropertyName = "PackagesDirectory"; const string PackageDirectoryPropertyName = "PackagesDirectory";
const string ActivePackageSourcePropertyName = "ActivePackageSource";
const string RecentPackagesPropertyName = "RecentPackages"; const string RecentPackagesPropertyName = "RecentPackages";
RegisteredPackageSources packageSources; RegisteredPackageSourceSettings registeredPackageSourceSettings;
Properties properties; Properties properties;
ISettings settings;
List<RecentPackageInfo> recentPackages; List<RecentPackageInfo> recentPackages;
public PackageManagementOptions(Properties properties, ISettings settings) public PackageManagementOptions(Properties properties, ISettings settings)
{ {
this.properties = properties; this.properties = properties;
this.settings = settings; registeredPackageSourceSettings = new RegisteredPackageSourceSettings(settings);
} }
public PackageManagementOptions(Properties properties) public PackageManagementOptions(Properties properties)
@ -39,39 +36,7 @@ namespace ICSharpCode.PackageManagement
} }
public RegisteredPackageSources PackageSources { public RegisteredPackageSources PackageSources {
get { get { return registeredPackageSourceSettings.PackageSources; }
if (packageSources == null) {
packageSources = new RegisteredPackageSources(settings);
}
return packageSources;
}
}
IEnumerable<PackageSource> GetSavedPackageSources()
{
return PackageSourceConverter.ConvertFromRegisteredPackageSources(SavedRegisteredPackageSources);
}
void PackageSourcesChanged(object sender, NotifyCollectionChangedEventArgs e)
{
UpdateSavedPackageSources();
}
void UpdateSavedPackageSources()
{
SavedRegisteredPackageSources =
PackageSourceConverter.ConvertToRegisteredPackageSourcesList(packageSources);
}
/// <summary>
/// Use RegisteredPackageSource since PackageSource cannot be serialized.
/// </summary>
IList<RegisteredPackageSource> SavedRegisteredPackageSources {
get {
List<RegisteredPackageSource> defaultSources = new List<RegisteredPackageSource>();
return properties.Get<List<RegisteredPackageSource>>(PackageSourcesPropertyName, defaultSources);
}
set { properties.Set(PackageSourcesPropertyName, value); }
} }
public string PackagesDirectory { public string PackagesDirectory {
@ -80,8 +45,8 @@ namespace ICSharpCode.PackageManagement
} }
public PackageSource ActivePackageSource { public PackageSource ActivePackageSource {
get { return PackageSources.ActivePackageSource; } get { return registeredPackageSourceSettings.ActivePackageSource; }
set { PackageSources.ActivePackageSource = value; } set { registeredPackageSourceSettings.ActivePackageSource = value; }
} }
public IList<RecentPackageInfo> RecentPackages { public IList<RecentPackageInfo> RecentPackages {

45
src/AddIns/Misc/PackageManagement/Project/Src/PackageSourceConverter.cs

@ -3,30 +3,57 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using NuGet; using NuGet;
namespace ICSharpCode.PackageManagement namespace ICSharpCode.PackageManagement
{ {
public static class PackageSourceConverter public static class PackageSourceConverter
{ {
public static IEnumerable<PackageSource> ConvertFromRegisteredPackageSources(IEnumerable<RegisteredPackageSource> registeredPackageSources) public static IEnumerable<PackageSource> ConvertFromKeyValuePairs(IEnumerable<KeyValuePair<string, string>> packageSources)
{ {
foreach (RegisteredPackageSource registeredPackageSource in registeredPackageSources) { if (HasAny(packageSources)) {
yield return registeredPackageSource.ToPackageSource(); foreach (KeyValuePair<string, string> packageSource in packageSources) {
yield return CreatePackageSourceFromKeyValuePair(packageSource);
}
} }
} }
public static IEnumerable<RegisteredPackageSource> ConvertToRegisteredPackageSources(IEnumerable<PackageSource> packageSources) static bool HasAny(IEnumerable<KeyValuePair<string, string>> packageSources)
{ {
foreach (PackageSource packageSource in packageSources) { if (packageSources != null) {
yield return new RegisteredPackageSource(packageSource); return packageSources.Any();
} }
return false;
} }
public static IList<RegisteredPackageSource> ConvertToRegisteredPackageSourcesList(IEnumerable<PackageSource> packageSources) static PackageSource CreatePackageSourceFromKeyValuePair(KeyValuePair<string, string> savedPackageSource)
{ {
IEnumerable<RegisteredPackageSource> convertedPackageSources = ConvertToRegisteredPackageSources(packageSources); string source = savedPackageSource.Value;
return new List<RegisteredPackageSource>(convertedPackageSources); string name = savedPackageSource.Key;
return new PackageSource(source, name);
}
public static PackageSource ConvertFromFirstKeyValuePair(IEnumerable<KeyValuePair<string, string>> packageSources)
{
if (HasAny(packageSources)) {
return CreatePackageSourceFromKeyValuePair(packageSources.First());
}
return null;
}
public static IList<KeyValuePair<string, string>> ConvertToKeyValuePairList(IEnumerable<PackageSource> packageSources)
{
var convertedPackageSources = new List<KeyValuePair<string, string>>();
foreach (PackageSource source in packageSources) {
convertedPackageSources.Add(ConvertToKeyValuePair(source));
}
return convertedPackageSources;
}
public static KeyValuePair<string, string> ConvertToKeyValuePair(PackageSource source)
{
return new KeyValuePair<string, string>(source.Name, source.Source);
} }
} }
} }

117
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<KeyValuePair<string, string>> 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<PackageSource> GetPackageSourcesFromSettings()
{
IList<KeyValuePair<string, string>> savedPackageSources = settings.GetValues(PackageSourcesSectionName);
return PackageSourceConverter.ConvertFromKeyValuePairs(savedPackageSources);
}
void PackageSourcesChanged(object sender, NotifyCollectionChangedEventArgs e)
{
UpdatePackageSourceSettingsWithChanges();
}
void UpdatePackageSourceSettingsWithChanges()
{
var newPackageSourceSettings = GetSettingsFromPackageSources();
SavePackageSourceSettings(newPackageSourceSettings);
}
IList<KeyValuePair<string, string>> GetSettingsFromPackageSources()
{
return PackageSourceConverter.ConvertToKeyValuePairList(packageSources);
}
KeyValuePair<string, string> CreateKeyValuePairFromPackageSource(PackageSource source)
{
return new KeyValuePair<string, string>(source.Name, source.Source);
}
void SavePackageSourceSettings(IList<KeyValuePair<string, string>> 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<string, string> activePackageSource)
{
settings.SetValue(ActivePackageSourceSectionName, activePackageSource.Key, activePackageSource.Value);
}
}
}

127
src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSources.cs

@ -4,9 +4,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.Linq;
using ICSharpCode.Core;
using NuGet; using NuGet;
namespace ICSharpCode.PackageManagement 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 DefaultPackageSourceUrl = "http://go.microsoft.com/fwlink/?LinkID=206669";
public static readonly string DefaultPackageSourceName = "NuGet Official Package Source"; 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 = public static readonly PackageSource DefaultPackageSource =
new PackageSource(DefaultPackageSourceUrl, DefaultPackageSourceName); new PackageSource(DefaultPackageSourceUrl, DefaultPackageSourceName);
ISettings settings;
PackageSource activePackageSource;
public RegisteredPackageSources(IEnumerable<PackageSource> packageSources) public RegisteredPackageSources(IEnumerable<PackageSource> packageSources)
{ {
AddPackageSources(packageSources); AddPackageSources(packageSources);
AddDefaultPackageSourceIfNoRegisteredPackageSources(); AddDefaultPackageSourceIfNoRegisteredPackageSources();
} }
public RegisteredPackageSources(ISettings settings)
{
this.settings = settings;
AddPackageSources();
AddDefaultPackageSourceIfNoRegisteredPackageSources();
ReadActivePackageSource();
}
void AddPackageSources()
{
foreach (PackageSource source in GetPackageSourcesFromSettings()) {
Add(source);
}
}
IEnumerable<PackageSource> GetPackageSourcesFromSettings()
{
IList<KeyValuePair<string, string>> savedPackageSources = settings.GetValues(PackageSourcesSectionName);
if (HasAny(savedPackageSources)) {
foreach (KeyValuePair<string, string> packageSource in savedPackageSources) {
yield return CreatePackageSourceFromKeyValuePair(packageSource);
}
}
}
bool HasAny(IList<KeyValuePair<string, string>> packageSources)
{
if (packageSources != null) {
return packageSources.Any();
}
return false;
}
PackageSource CreatePackageSourceFromKeyValuePair(KeyValuePair<string, string> savedPackageSource)
{
string source = savedPackageSource.Value;
string name = savedPackageSource.Key;
return new PackageSource(source, name);
}
void AddPackageSources(IEnumerable<PackageSource> packageSources) void AddPackageSources(IEnumerable<PackageSource> packageSources)
{ {
foreach (PackageSource source in packageSources) { foreach (PackageSource source in packageSources) {
@ -92,82 +44,5 @@ namespace ICSharpCode.PackageManagement
public bool HasMultiplePackageSources { public bool HasMultiplePackageSources {
get { return Count > 1; } get { return Count > 1; }
} }
void ReadActivePackageSource()
{
IList<KeyValuePair<string, string>> 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<KeyValuePair<string, string>> newPackageSourceSettings = GetSettingsFromPackageSources();
SavePackageSourceSettings(newPackageSourceSettings);
}
}
IList<KeyValuePair<string, string>> GetSettingsFromPackageSources()
{
var settings = new List<KeyValuePair<string, string>>();
foreach (PackageSource source in this) {
settings.Add(CreateKeyValuePairFromPackageSource(source));
}
return settings;
}
KeyValuePair<string, string> CreateKeyValuePairFromPackageSource(PackageSource source)
{
return new KeyValuePair<string, string>(source.Name, source.Source);
}
void SavePackageSourceSettings(IList<KeyValuePair<string, string>> 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<string, string> activePackageSourceSetting = CreateKeyValuePairFromPackageSource(activePackageSource);
SaveActivePackageSourceSetting(activePackageSourceSetting);
}
void SaveActivePackageSourceSetting(KeyValuePair<string, string> activePackageSource)
{
settings.SetValue(ActivePackageSourceSectionName, activePackageSource.Key, activePackageSource.Value);
}
} }
} }

Loading…
Cancel
Save