Browse Source

PackageManagement: Filter if project selected

Exclude solution level packages from Available/Recent if project
selected
pull/374/head
Dragan 12 years ago
parent
commit
149a0c3a1c
  1. 34
      src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs
  2. 9
      src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimePackagesViewModel.cs
  3. 22
      src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackagesViewModel.cs
  4. 21
      src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs
  5. 6
      src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModels.cs
  6. 10
      src/AddIns/Misc/PackageManagement/Project/Src/RecentPackagesViewModel.cs
  7. 5
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackagesViewModel.cs

34
src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs

@ -26,16 +26,17 @@ namespace ICSharpCode.PackageManagement @@ -26,16 +26,17 @@ namespace ICSharpCode.PackageManagement
{
public class AvailablePackagesViewModel : PackagesViewModel
{
IPackageRepository repository;
IPackageManagementEvents packageManagementEvents;
string errorMessage;
IPackageRepository availablePackagesRepository;
public AvailablePackagesViewModel(
IPackageManagementSolution solution,
IPackageManagementEvents packageManagementEvents,
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
: base(
solution,
packageManagementEvents,
registeredPackageRepositories,
packageViewModelFactory,
taskFactory)
@ -65,7 +66,7 @@ namespace ICSharpCode.PackageManagement @@ -65,7 +66,7 @@ namespace ICSharpCode.PackageManagement
protected override void UpdateRepositoryBeforeReadPackagesTaskStarts()
{
try {
repository = RegisteredPackageRepositories.ActiveRepository;
availablePackagesRepository = RegisteredPackageRepositories.ActiveRepository;
} catch (Exception ex) {
errorMessage = ex.Message;
}
@ -73,13 +74,17 @@ namespace ICSharpCode.PackageManagement @@ -73,13 +74,17 @@ namespace ICSharpCode.PackageManagement
protected override IQueryable<IPackage> GetAllPackages()
{
if (repository == null) {
if (availablePackagesRepository == null) {
throw new ApplicationException(errorMessage);
}
IQueryable<IPackage> allPackages;
if (IncludePrerelease) {
return repository.GetPackages();
allPackages = availablePackagesRepository.GetPackages();
}
return repository.GetPackages().Where(package => package.IsLatestVersion);
else {
allPackages = availablePackagesRepository.GetPackages().Where(package => package.IsLatestVersion);
}
return allPackages;
}
/// <summary>
@ -92,13 +97,20 @@ namespace ICSharpCode.PackageManagement @@ -92,13 +97,20 @@ namespace ICSharpCode.PackageManagement
protected override IEnumerable<IPackage> GetFilteredPackagesBeforePagingResults(IQueryable<IPackage> allPackages)
{
IEnumerable<IPackage> filteredPackages;
if (IncludePrerelease) {
return base.GetFilteredPackagesBeforePagingResults(allPackages)
filteredPackages = base.GetFilteredPackagesBeforePagingResults(allPackages)
.DistinctLast<IPackage>(PackageEqualityComparer.Id);
}
else {
filteredPackages = base.GetFilteredPackagesBeforePagingResults(allPackages)
.Where(package => package.IsReleaseVersion())
.DistinctLast<IPackage>(PackageEqualityComparer.Id);
}
return base.GetFilteredPackagesBeforePagingResults(allPackages)
.Where(package => package.IsReleaseVersion())
.DistinctLast<IPackage>(PackageEqualityComparer.Id);
if (project != null) {
filteredPackages = filteredPackages.Where(package => package.HasProjectContent());
}
return filteredPackages;
}
}
}

9
src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimePackagesViewModel.cs

@ -26,16 +26,19 @@ namespace ICSharpCode.PackageManagement.Design @@ -26,16 +26,19 @@ namespace ICSharpCode.PackageManagement.Design
public class DesignTimePackagesViewModel : PackagesViewModel
{
public DesignTimePackagesViewModel()
: this(new DesignTimeRegisteredPackageRepositories(), new FakePackageManagementSolution())
: this(new DesignTimeRegisteredPackageRepositories(), new FakePackageManagementSolution(), new PackageManagementEvents())
{
}
public DesignTimePackagesViewModel(
DesignTimeRegisteredPackageRepositories registeredPackageRepositories,
FakePackageManagementSolution solution)
FakePackageManagementSolution solution,
PackageManagementEvents packageManagementEvents)
: base(
solution,
packageManagementEvents,
registeredPackageRepositories,
new PackageViewModelFactory(solution, null, null),
new PackageViewModelFactory(solution, packageManagementEvents, null),
new PackageManagementTaskFactory())
{
PageSize = 3;

22
src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackagesViewModel.cs

@ -25,11 +25,6 @@ namespace ICSharpCode.PackageManagement @@ -25,11 +25,6 @@ namespace ICSharpCode.PackageManagement
{
public class InstalledPackagesViewModel : PackagesViewModel
{
IPackageManagementSolution solution;
IPackageManagementEvents packageManagementEvents;
IPackageManagementProject project;
string errorMessage;
public InstalledPackagesViewModel(
IPackageManagementSolution solution,
IPackageManagementEvents packageManagementEvents,
@ -37,15 +32,13 @@ namespace ICSharpCode.PackageManagement @@ -37,15 +32,13 @@ namespace ICSharpCode.PackageManagement
IPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
: base(
solution,
packageManagementEvents,
registeredPackageRepositories,
packageViewModelFactory,
taskFactory)
{
this.solution = solution;
this.packageManagementEvents = packageManagementEvents;
RegisterEvents();
TryGetActiveProject();
}
void RegisterEvents()
@ -67,18 +60,9 @@ namespace ICSharpCode.PackageManagement @@ -67,18 +60,9 @@ namespace ICSharpCode.PackageManagement
ReadPackages();
}
void TryGetActiveProject()
{
try {
project = solution.GetActiveProject();
} catch (Exception ex) {
errorMessage = ex.Message;
}
}
protected override IQueryable<IPackage> GetAllPackages()
{
if (errorMessage != null) {
if (!string.IsNullOrEmpty(errorMessage)) {
ThrowOriginalExceptionWhenTryingToGetProjectManager();
}
if (project != null) {

21
src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs

@ -30,6 +30,11 @@ namespace ICSharpCode.PackageManagement @@ -30,6 +30,11 @@ namespace ICSharpCode.PackageManagement
{
Pages pages = new Pages();
protected IPackageManagementEvents packageManagementEvents;
protected IPackageManagementSolution solution;
protected IPackageManagementProject project;
protected string errorMessage = string.Empty;
IRegisteredPackageRepositories registeredPackageRepositories;
IPackageViewModelFactory packageViewModelFactory;
ITaskFactory taskFactory;
@ -38,18 +43,23 @@ namespace ICSharpCode.PackageManagement @@ -38,18 +43,23 @@ namespace ICSharpCode.PackageManagement
bool includePrerelease;
public PackagesViewModel(
IPackageManagementSolution solution,
IPackageManagementEvents packageManagementEvents,
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
{
this.solution = solution;
this.packageManagementEvents = packageManagementEvents;
this.registeredPackageRepositories = registeredPackageRepositories;
this.packageViewModelFactory = packageViewModelFactory;
this.taskFactory = taskFactory;
this.solution = solution;
PackageViewModels = new ObservableCollection<PackageViewModel>();
ErrorMessage = String.Empty;
CreateCommands();
TryGetActiveProject();
}
void CreateCommands()
@ -61,6 +71,15 @@ namespace ICSharpCode.PackageManagement @@ -61,6 +71,15 @@ namespace ICSharpCode.PackageManagement
UpdateAllPackagesCommand = new DelegateCommand(param => UpdateAllPackages());
}
void TryGetActiveProject()
{
try {
project = solution.GetActiveProject();
} catch (Exception ex) {
errorMessage = ex.Message;
}
}
public ICommand ShowNextPageCommand { get; private set; }
public ICommand ShowPreviousPageCommand { get; private set; }
public ICommand ShowPageCommand { get; private set; }

6
src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModels.cs

@ -32,10 +32,10 @@ namespace ICSharpCode.PackageManagement @@ -32,10 +32,10 @@ namespace ICSharpCode.PackageManagement
var packageViewModelFactory = new PackageViewModelFactory(solution, packageManagementEvents, actionRunner);
var updatedPackageViewModelFactory = new UpdatedPackageViewModelFactory(packageViewModelFactory);
AvailablePackagesViewModel = new AvailablePackagesViewModel(packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
AvailablePackagesViewModel = new AvailablePackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
InstalledPackagesViewModel = new InstalledPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
UpdatedPackagesViewModel = new UpdatedPackagesViewModel(solution, registeredPackageRepositories, updatedPackageViewModelFactory, taskFactory);
RecentPackagesViewModel = new RecentPackagesViewModel(packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
UpdatedPackagesViewModel = new UpdatedPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, updatedPackageViewModelFactory, taskFactory);
RecentPackagesViewModel = new RecentPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
}
public AvailablePackagesViewModel AvailablePackagesViewModel { get; private set; }

10
src/AddIns/Misc/PackageManagement/Project/Src/RecentPackagesViewModel.cs

@ -24,20 +24,22 @@ namespace ICSharpCode.PackageManagement @@ -24,20 +24,22 @@ namespace ICSharpCode.PackageManagement
{
public class RecentPackagesViewModel : PackagesViewModel
{
IPackageManagementEvents packageManagementEvents;
IPackageRepository recentPackageRepository;
IPackageRepository recentPackagesRepository;
public RecentPackagesViewModel(
IPackageManagementSolution solution,
IPackageManagementEvents packageManagementEvents,
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
: base(
solution,
packageManagementEvents,
registeredPackageRepositories,
packageViewModelFactory,
taskFactory)
{
recentPackageRepository = registeredPackageRepositories.RecentPackageRepository;
recentPackagesRepository = registeredPackageRepositories.RecentPackageRepository;
this.packageManagementEvents = packageManagementEvents;
RegisterEvents();
@ -64,7 +66,7 @@ namespace ICSharpCode.PackageManagement @@ -64,7 +66,7 @@ namespace ICSharpCode.PackageManagement
protected override IQueryable<IPackage> GetAllPackages()
{
return recentPackageRepository.GetPackages();
return recentPackagesRepository.GetPackages().Where(package => project == null || package.HasProjectContent());
}
}
}

5
src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackagesViewModel.cs

@ -28,16 +28,17 @@ namespace ICSharpCode.PackageManagement @@ -28,16 +28,17 @@ namespace ICSharpCode.PackageManagement
{
PackageManagementSelectedProjects selectedProjects;
UpdatedPackages updatedPackages;
string errorMessage = String.Empty;
ILogger logger;
IPackageManagementEvents packageManagementEvents;
public UpdatedPackagesViewModel(
IPackageManagementSolution solution,
IPackageManagementEvents packageManagementEvents,
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
: base(
solution,
packageManagementEvents,
registeredPackageRepositories,
packageViewModelFactory,
taskFactory)

Loading…
Cancel
Save