Browse Source

Can now configure NuGet package sources for project templates in Tools Options.

pull/16/merge
Matt Ward 14 years ago
parent
commit
4f4bf9936a
  1. 4
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.addin
  2. 5
      src/AddIns/Misc/PackageManagement/Project/PackageManagement.csproj
  3. 2
      src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimeRegisteredPackageSourcesViewModel.cs
  4. 4
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementServices.cs
  5. 24
      src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementViewModels.cs
  6. 17
      src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourcesViewModel.cs
  7. 140
      src/AddIns/Misc/PackageManagement/Project/Src/RegisteredProjectTemplatePackageSourcesView.xaml
  8. 38
      src/AddIns/Misc/PackageManagement/Project/Src/RegisteredProjectTemplatePackageSourcesView.xaml.cs
  9. 33
      src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesViewModelTests.cs

4
src/AddIns/Misc/PackageManagement/Project/PackageManagement.addin

@ -66,6 +66,10 @@ @@ -66,6 +66,10 @@
id="PackageSources"
label="Package Sources"
class="ICSharpCode.PackageManagement.RegisteredPackageSourcesView"/>
<OptionPanel
id="ProjectTemplatePackageSources"
label="Template Package Sources"
class="ICSharpCode.PackageManagement.RegisteredProjectTemplatePackageSourcesView"/>
</OptionPanel>
</Path>

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

@ -237,6 +237,10 @@ @@ -237,6 +237,10 @@
<Compile Include="Src\PackageManagementTask.cs" />
<Compile Include="Src\PackageManagementTaskFactory.cs" />
<Compile Include="Src\RegisteredProjectTemplatePackageSources.cs" />
<Compile Include="Src\RegisteredProjectTemplatePackageSourcesView.xaml.cs">
<DependentUpon>RegisteredProjectTemplatePackageSourcesView.xaml</DependentUpon>
<SubType>Code</SubType>
</Compile>
<Compile Include="Src\Scripting\IPackageManagementConsoleHost.cs" />
<Compile Include="Src\Scripting\IPackageScriptRunner.cs" />
<Compile Include="Src\Scripting\IPowerShellDetection.cs" />
@ -336,6 +340,7 @@ @@ -336,6 +340,7 @@
<Page Include="Src\RegisteredPackageSourcesView.xaml" />
<Page Include="Src\PackagesView.xaml" />
<Page Include="Src\PagedResultsView.xaml" />
<Page Include="Src\RegisteredProjectTemplatePackageSourcesView.xaml" />
<Page Include="Src\Scripting\PackageManagementConsoleView.xaml" />
</ItemGroup>
<ItemGroup>

2
src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimeRegisteredPackageSourcesViewModel.cs

@ -16,7 +16,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -16,7 +16,7 @@ namespace ICSharpCode.PackageManagement.Design
}
public DesignTimeRegisteredPackageSourcesViewModel(PackageManagementOptions options)
: base(options)
: base(options.PackageSources)
{
options.PackageSources.Add(new PackageSource("Source2", "http://sharpdevelop.codeplex.com"));
options.PackageSources.Add(new PackageSource("Source3", "http://sharpdevelop.codeplex.com"));

4
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementServices.cs

@ -81,5 +81,9 @@ namespace ICSharpCode.PackageManagement @@ -81,5 +81,9 @@ namespace ICSharpCode.PackageManagement
public static IPackageRepositoryCache ProjectTemplatePackageRepositoryCache {
get { return projectTemplatePackageRepositoryCache; }
}
public static RegisteredPackageSources ProjectTemplatePackageSources {
get { return projectTemplatePackageSources.PackageSources; }
}
}
}

24
src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementViewModels.cs

@ -11,6 +11,7 @@ namespace ICSharpCode.PackageManagement @@ -11,6 +11,7 @@ namespace ICSharpCode.PackageManagement
{
AddPackageReferenceViewModel addPackageReferenceViewModel;
RegisteredPackageSourcesViewModel registeredPackageSourcesViewModel;
RegisteredPackageSourcesViewModel registeredProjectTemplatePackageSourcesViewModel;
PackageManagementOptionsViewModel packageManagementOptionsViewModel;
PackageManagementConsoleViewModel packageManagementConsoleViewModel;
IPackageManagementSolution solution;
@ -68,19 +69,34 @@ namespace ICSharpCode.PackageManagement @@ -68,19 +69,34 @@ namespace ICSharpCode.PackageManagement
public RegisteredPackageSourcesViewModel RegisteredPackageSourcesViewModel {
get {
if (registeredPackageSourcesViewModel == null) {
CreateRegisteredPackageSourcesViewModel();
RegisteredPackageSources packageSources =
PackageManagementServices.Options.PackageSources;
registeredPackageSourcesViewModel =
CreateRegisteredPackageSourcesViewModel(packageSources);
}
return registeredPackageSourcesViewModel;
}
}
void CreateRegisteredPackageSourcesViewModel()
RegisteredPackageSourcesViewModel CreateRegisteredPackageSourcesViewModel(RegisteredPackageSources packageSources)
{
CreateRegisteredPackageRepositories();
if (IsInDesignMode()) {
registeredPackageSourcesViewModel = new DesignTimeRegisteredPackageSourcesViewModel();
return new DesignTimeRegisteredPackageSourcesViewModel();
} else {
registeredPackageSourcesViewModel = new RegisteredPackageSourcesViewModel(PackageManagementServices.Options);
return new RegisteredPackageSourcesViewModel(packageSources);
}
}
public RegisteredPackageSourcesViewModel RegisteredProjectTemplatePackageSourcesViewModel {
get {
if (registeredProjectTemplatePackageSourcesViewModel == null) {
RegisteredPackageSources packageSources =
PackageManagementServices.ProjectTemplatePackageSources;
registeredProjectTemplatePackageSourcesViewModel =
CreateRegisteredPackageSourcesViewModel(packageSources);
}
return registeredProjectTemplatePackageSourcesViewModel;
}
}

17
src/AddIns/Misc/PackageManagement/Project/Src/RegisteredPackageSourcesViewModel.cs

@ -15,7 +15,7 @@ namespace ICSharpCode.PackageManagement @@ -15,7 +15,7 @@ namespace ICSharpCode.PackageManagement
{
ObservableCollection<PackageSourceViewModel> packageSourceViewModels =
new ObservableCollection<PackageSourceViewModel>();
PackageManagementOptions options;
RegisteredPackageSources packageSources;
IFolderBrowser folderBrowser;
DelegateCommand addPackageSourceCommmand;
@ -28,16 +28,16 @@ namespace ICSharpCode.PackageManagement @@ -28,16 +28,16 @@ namespace ICSharpCode.PackageManagement
PackageSourceViewModel selectedPackageSourceViewModel;
public RegisteredPackageSourcesViewModel(
PackageManagementOptions options)
: this(options, new FolderBrowser())
RegisteredPackageSources packageSources)
: this(packageSources, new FolderBrowser())
{
}
public RegisteredPackageSourcesViewModel(
PackageManagementOptions options,
RegisteredPackageSources packageSources,
IFolderBrowser folderBrowser)
{
this.options = options;
this.packageSources = packageSources;
this.folderBrowser = folderBrowser;
CreateCommands();
}
@ -90,7 +90,7 @@ namespace ICSharpCode.PackageManagement @@ -90,7 +90,7 @@ namespace ICSharpCode.PackageManagement
public void Load()
{
foreach (PackageSource packageSource in options.PackageSources) {
foreach (PackageSource packageSource in packageSources) {
AddPackageSourceToViewModel(packageSource);
}
}
@ -103,10 +103,10 @@ namespace ICSharpCode.PackageManagement @@ -103,10 +103,10 @@ namespace ICSharpCode.PackageManagement
public void Save()
{
options.PackageSources.Clear();
packageSources.Clear();
foreach (PackageSourceViewModel packageSourceViewModel in packageSourceViewModels) {
PackageSource source = packageSourceViewModel.GetPackageSource();
options.PackageSources.Add(source);
packageSources.Add(source);
}
}
@ -242,7 +242,6 @@ namespace ICSharpCode.PackageManagement @@ -242,7 +242,6 @@ namespace ICSharpCode.PackageManagement
{
NewPackageSourceUrl = folder;
NewPackageSourceName = GetPackageSourceNameFromFolder(folder);
}
string GetPackageSourceNameFromFolder(string folder)

140
src/AddIns/Misc/PackageManagement/Project/Src/RegisteredProjectTemplatePackageSourcesView.xaml

@ -0,0 +1,140 @@ @@ -0,0 +1,140 @@
<gui:OptionPanel
x:Class="ICSharpCode.PackageManagement.RegisteredProjectTemplatePackageSourcesView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:gui="clr-namespace:ICSharpCode.SharpDevelop.Gui;assembly=ICSharpCode.SharpDevelop"
xmlns:pm="clr-namespace:ICSharpCode.PackageManagement"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300">
<Grid x:Name="MainGrid">
<Grid.Resources>
<pm:PackageManagementViewModels x:Key="ViewModels"/>
<Style
x:Key="ListBoxItemStyle"
TargetType="{x:Type ListBoxItem}">
<Style.Resources>
<SolidColorBrush
x:Key="{x:Static SystemColors.ControlBrushKey}"
Color="{DynamicResource {x:Static SystemColors.HighlightColorKey}}" />
</Style.Resources>
<Setter
Property="Background"
Value="LightGray"/>
<Style.Triggers>
<Trigger
Property="ItemsControl.AlternationIndex"
Value="0">
<Setter
Property="Background"
Value="White"/>
</Trigger>
</Style.Triggers>
</Style>
<DataTemplate x:Key="PackageSourceListBoxTemplate">
<StackPanel
x:Name="PackageSourceStackPanel"
Margin="4">
<TextBlock Text="{Binding Path=Name}"/>
<TextBlock>
<Hyperlink>
<TextBlock Text="{Binding Path=SourceUrl}"/>
</Hyperlink>
</TextBlock>
</StackPanel>
</DataTemplate>
</Grid.Resources>
<Grid.DataContext>
<Binding Source="{StaticResource ViewModels}" Path="RegisteredProjectTemplatePackageSourcesViewModel"/>
</Grid.DataContext>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<ListBox
Grid.Row="0"
HorizontalContentAlignment="Stretch"
AlternationCount="2"
pm:ListBoxBehaviour.IsSelectedItemScrolledIntoView="True"
ItemContainerStyle="{StaticResource ListBoxItemStyle}"
ItemTemplate="{StaticResource PackageSourceListBoxTemplate}"
ItemsSource="{Binding Path=PackageSourceViewModels}"
SelectedItem="{Binding Path=SelectedPackageSourceViewModel}"/>
<Grid
Grid.Row="1"
Margin="4">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock
Grid.Row="0"
Grid.Column="0"
Margin="4"
Text="Name:"/>
<TextBox
Grid.Row="0"
Grid.Column="1"
Text="{Binding Path=NewPackageSourceName, UpdateSourceTrigger=PropertyChanged}"
Margin="4, 2"/>
<TextBlock
Grid.Row="1"
Grid.Column="0"
Margin="4"
Text="Source:"/>
<TextBox
Grid.Row="1"
Grid.Column="1"
Text="{Binding Path=NewPackageSourceUrl, UpdateSourceTrigger=PropertyChanged}"
Margin="4,2"/>
</Grid>
<StackPanel
Grid.Column="1"
Grid.Row="0">
<Button
Content="Move Up"
Command="{Binding Path=MovePackageSourceUpCommand}"
Margin="4, 2"
Padding="7, 0"/>
<Button
Content="Move Down"
Command="{Binding Path=MovePackageSourceDownCommand}"
Margin="4, 2"
Padding="7, 0"/>
<Button
Content="Remove"
Command="{Binding Path=RemovePackageSourceCommand}"
Margin="4, 2"
Padding="7, 0"/>
</StackPanel>
<StackPanel
Grid.Column="1"
Grid.Row="1">
<Button
Content="Add"
Command="{Binding Path=AddPackageSourceCommand}"
Margin="4, 6, 4, 4"
Padding="7, 0"/>
<Button
Content="..."
Command="{Binding Path=BrowsePackageFolderCommand}"
HorizontalAlignment="Left"
Margin="4, 4"
Padding="7, 0"/>
</StackPanel>
</Grid>
</gui:OptionPanel>

38
src/AddIns/Misc/PackageManagement/Project/Src/RegisteredProjectTemplatePackageSourcesView.xaml.cs

@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
// 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 ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.PackageManagement
{
public partial class RegisteredProjectTemplatePackageSourcesView : OptionPanel
{
RegisteredPackageSourcesViewModel viewModel;
public RegisteredProjectTemplatePackageSourcesView()
{
InitializeComponent();
}
RegisteredPackageSourcesViewModel ViewModel {
get {
if (viewModel == null) {
viewModel = MainGrid.DataContext as RegisteredPackageSourcesViewModel;
}
return viewModel;
}
}
public override void LoadOptions()
{
ViewModel.Load();
}
public override bool SaveOptions()
{
ViewModel.Save();
return true;
}
}
}

33
src/AddIns/Misc/PackageManagement/Test/Src/RegisteredPackageSourcesViewModelTests.cs

@ -15,16 +15,17 @@ namespace PackageManagement.Tests @@ -15,16 +15,17 @@ namespace PackageManagement.Tests
public class RegisteredPackageSourcesViewModelTests
{
RegisteredPackageSourcesViewModel viewModel;
PackageManagementOptions options;
FakeFolderBrowser fakeFolderBrowser;
List<string> propertiesChanged;
RegisteredPackageSources packageSources;
void CreateViewModel()
{
options = new TestablePackageManagementOptions();
options.PackageSources.Clear();
var options = new TestablePackageManagementOptions();
packageSources = options.PackageSources;
packageSources.Clear();
fakeFolderBrowser = new FakeFolderBrowser();
viewModel = new RegisteredPackageSourcesViewModel(options, fakeFolderBrowser);
viewModel = new RegisteredPackageSourcesViewModel(packageSources, fakeFolderBrowser);
}
void CreateViewModelWithOnePackageSource()
@ -43,7 +44,7 @@ namespace PackageManagement.Tests @@ -43,7 +44,7 @@ namespace PackageManagement.Tests
void AddPackageSourceToOptions(string name, string url)
{
var source = new PackageSource(url, name);
options.PackageSources.Add(source);
packageSources.Add(source);
}
void RecordPropertyChanges()
@ -76,7 +77,7 @@ namespace PackageManagement.Tests @@ -76,7 +77,7 @@ namespace PackageManagement.Tests
viewModel.Load();
var expectedSources = new PackageSource[] {
options.PackageSources[0]
packageSources[0]
};
PackageSourceCollectionAssert.AreEqual(expectedSources, viewModel.PackageSourceViewModels);
@ -89,8 +90,8 @@ namespace PackageManagement.Tests @@ -89,8 +90,8 @@ namespace PackageManagement.Tests
viewModel.Load();
var expectedSources = new PackageSource[] {
options.PackageSources[0],
options.PackageSources[1]
packageSources[0],
packageSources[1]
};
PackageSourceCollectionAssert.AreEqual(expectedSources, viewModel.PackageSourceViewModels);
@ -111,7 +112,7 @@ namespace PackageManagement.Tests @@ -111,7 +112,7 @@ namespace PackageManagement.Tests
new PackageSource("http://sharpdevelop.com", "Test")
};
PackageSourceCollectionAssert.AreEqual(expectedSources, options.PackageSources);
PackageSourceCollectionAssert.AreEqual(expectedSources, packageSources);
}
[Test]
@ -131,7 +132,7 @@ namespace PackageManagement.Tests @@ -131,7 +132,7 @@ namespace PackageManagement.Tests
new PackageSource("url-updated", "Test-updated")
};
PackageSourceCollectionAssert.AreEqual(expectedSources, options.PackageSources);
PackageSourceCollectionAssert.AreEqual(expectedSources, packageSources);
}
[Test]
@ -155,7 +156,7 @@ namespace PackageManagement.Tests @@ -155,7 +156,7 @@ namespace PackageManagement.Tests
newSource
};
PackageSourceCollectionAssert.AreEqual(expectedSources, options.PackageSources);
PackageSourceCollectionAssert.AreEqual(expectedSources, packageSources);
}
[Test]
@ -259,7 +260,7 @@ namespace PackageManagement.Tests @@ -259,7 +260,7 @@ namespace PackageManagement.Tests
viewModel.RemovePackageSourceCommand.Execute(null);
var expectedSources = new PackageSource[] {
options.PackageSources[1]
packageSources[1]
};
PackageSourceCollectionAssert.AreEqual(expectedSources, viewModel.PackageSourceViewModels);
@ -314,8 +315,8 @@ namespace PackageManagement.Tests @@ -314,8 +315,8 @@ namespace PackageManagement.Tests
viewModel.MovePackageSourceUpCommand.Execute(null);
var expectedSources = new PackageSource[] {
options.PackageSources[1],
options.PackageSources[0]
packageSources[1],
packageSources[0]
};
PackageSourceCollectionAssert.AreEqual(expectedSources, viewModel.PackageSourceViewModels);
@ -366,8 +367,8 @@ namespace PackageManagement.Tests @@ -366,8 +367,8 @@ namespace PackageManagement.Tests
viewModel.MovePackageSourceDownCommand.Execute(null);
var expectedSources = new PackageSource[] {
options.PackageSources[1],
options.PackageSources[0]
packageSources[1],
packageSources[0]
};
PackageSourceCollectionAssert.AreEqual(expectedSources, viewModel.PackageSourceViewModels);

Loading…
Cancel
Save