Skip to content
This repository was archived by the owner on Oct 16, 2020. It is now read-only.

Commit 149a0c3

Browse files
author
Dragan
committed
PackageManagement: Filter if project selected
Exclude solution level packages from Available/Recent if project selected
1 parent e751bed commit 149a0c3

7 files changed

Lines changed: 64 additions & 43 deletions

File tree

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

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,17 @@ namespace ICSharpCode.PackageManagement
2626
{
2727
public class AvailablePackagesViewModel : PackagesViewModel
2828
{
29-
IPackageRepository repository;
30-
IPackageManagementEvents packageManagementEvents;
31-
string errorMessage;
29+
IPackageRepository availablePackagesRepository;
3230

3331
public AvailablePackagesViewModel(
32+
IPackageManagementSolution solution,
3433
IPackageManagementEvents packageManagementEvents,
3534
IRegisteredPackageRepositories registeredPackageRepositories,
3635
IPackageViewModelFactory packageViewModelFactory,
3736
ITaskFactory taskFactory)
3837
: base(
38+
solution,
39+
packageManagementEvents,
3940
registeredPackageRepositories,
4041
packageViewModelFactory,
4142
taskFactory)
@@ -65,21 +66,25 @@ protected override void OnDispose()
6566
protected override void UpdateRepositoryBeforeReadPackagesTaskStarts()
6667
{
6768
try {
68-
repository = RegisteredPackageRepositories.ActiveRepository;
69+
availablePackagesRepository = RegisteredPackageRepositories.ActiveRepository;
6970
} catch (Exception ex) {
7071
errorMessage = ex.Message;
7172
}
7273
}
7374

7475
protected override IQueryable<IPackage> GetAllPackages()
7576
{
76-
if (repository == null) {
77+
if (availablePackagesRepository == null) {
7778
throw new ApplicationException(errorMessage);
7879
}
80+
IQueryable<IPackage> allPackages;
7981
if (IncludePrerelease) {
80-
return repository.GetPackages();
82+
allPackages = availablePackagesRepository.GetPackages();
8183
}
82-
return repository.GetPackages().Where(package => package.IsLatestVersion);
84+
else {
85+
allPackages = availablePackagesRepository.GetPackages().Where(package => package.IsLatestVersion);
86+
}
87+
return allPackages;
8388
}
8489

8590
/// <summary>
@@ -92,13 +97,20 @@ protected override IQueryable<IPackage> OrderPackages(IQueryable<IPackage> packa
9297

9398
protected override IEnumerable<IPackage> GetFilteredPackagesBeforePagingResults(IQueryable<IPackage> allPackages)
9499
{
100+
IEnumerable<IPackage> filteredPackages;
95101
if (IncludePrerelease) {
96-
return base.GetFilteredPackagesBeforePagingResults(allPackages)
102+
filteredPackages = base.GetFilteredPackagesBeforePagingResults(allPackages)
103+
.DistinctLast<IPackage>(PackageEqualityComparer.Id);
104+
}
105+
else {
106+
filteredPackages = base.GetFilteredPackagesBeforePagingResults(allPackages)
107+
.Where(package => package.IsReleaseVersion())
97108
.DistinctLast<IPackage>(PackageEqualityComparer.Id);
98109
}
99-
return base.GetFilteredPackagesBeforePagingResults(allPackages)
100-
.Where(package => package.IsReleaseVersion())
101-
.DistinctLast<IPackage>(PackageEqualityComparer.Id);
110+
if (project != null) {
111+
filteredPackages = filteredPackages.Where(package => package.HasProjectContent());
112+
}
113+
return filteredPackages;
102114
}
103115
}
104116
}

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

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,16 +26,19 @@ namespace ICSharpCode.PackageManagement.Design
2626
public class DesignTimePackagesViewModel : PackagesViewModel
2727
{
2828
public DesignTimePackagesViewModel()
29-
: this(new DesignTimeRegisteredPackageRepositories(), new FakePackageManagementSolution())
29+
: this(new DesignTimeRegisteredPackageRepositories(), new FakePackageManagementSolution(), new PackageManagementEvents())
3030
{
3131
}
3232

3333
public DesignTimePackagesViewModel(
3434
DesignTimeRegisteredPackageRepositories registeredPackageRepositories,
35-
FakePackageManagementSolution solution)
35+
FakePackageManagementSolution solution,
36+
PackageManagementEvents packageManagementEvents)
3637
: base(
38+
solution,
39+
packageManagementEvents,
3740
registeredPackageRepositories,
38-
new PackageViewModelFactory(solution, null, null),
41+
new PackageViewModelFactory(solution, packageManagementEvents, null),
3942
new PackageManagementTaskFactory())
4043
{
4144
PageSize = 3;

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

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -25,27 +25,20 @@ namespace ICSharpCode.PackageManagement
2525
{
2626
public class InstalledPackagesViewModel : PackagesViewModel
2727
{
28-
IPackageManagementSolution solution;
29-
IPackageManagementEvents packageManagementEvents;
30-
IPackageManagementProject project;
31-
string errorMessage;
32-
3328
public InstalledPackagesViewModel(
3429
IPackageManagementSolution solution,
3530
IPackageManagementEvents packageManagementEvents,
3631
IRegisteredPackageRepositories registeredPackageRepositories,
3732
IPackageViewModelFactory packageViewModelFactory,
3833
ITaskFactory taskFactory)
3934
: base(
35+
solution,
36+
packageManagementEvents,
4037
registeredPackageRepositories,
4138
packageViewModelFactory,
4239
taskFactory)
4340
{
44-
this.solution = solution;
45-
this.packageManagementEvents = packageManagementEvents;
46-
4741
RegisterEvents();
48-
TryGetActiveProject();
4942
}
5043

5144
void RegisterEvents()
@@ -67,18 +60,9 @@ void InstalledPackagesChanged(object sender, EventArgs e)
6760
ReadPackages();
6861
}
6962

70-
void TryGetActiveProject()
71-
{
72-
try {
73-
project = solution.GetActiveProject();
74-
} catch (Exception ex) {
75-
errorMessage = ex.Message;
76-
}
77-
}
78-
7963
protected override IQueryable<IPackage> GetAllPackages()
8064
{
81-
if (errorMessage != null) {
65+
if (!string.IsNullOrEmpty(errorMessage)) {
8266
ThrowOriginalExceptionWhenTryingToGetProjectManager();
8367
}
8468
if (project != null) {

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

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,11 @@ public abstract class PackagesViewModel : ViewModelBase<PackagesViewModel>, IDis
3030
{
3131
Pages pages = new Pages();
3232

33+
protected IPackageManagementEvents packageManagementEvents;
34+
protected IPackageManagementSolution solution;
35+
protected IPackageManagementProject project;
36+
protected string errorMessage = string.Empty;
37+
3338
IRegisteredPackageRepositories registeredPackageRepositories;
3439
IPackageViewModelFactory packageViewModelFactory;
3540
ITaskFactory taskFactory;
@@ -38,18 +43,23 @@ public abstract class PackagesViewModel : ViewModelBase<PackagesViewModel>, IDis
3843
bool includePrerelease;
3944

4045
public PackagesViewModel(
46+
IPackageManagementSolution solution,
47+
IPackageManagementEvents packageManagementEvents,
4148
IRegisteredPackageRepositories registeredPackageRepositories,
4249
IPackageViewModelFactory packageViewModelFactory,
4350
ITaskFactory taskFactory)
4451
{
52+
this.solution = solution;
53+
this.packageManagementEvents = packageManagementEvents;
4554
this.registeredPackageRepositories = registeredPackageRepositories;
4655
this.packageViewModelFactory = packageViewModelFactory;
4756
this.taskFactory = taskFactory;
57+
this.solution = solution;
4858

4959
PackageViewModels = new ObservableCollection<PackageViewModel>();
50-
ErrorMessage = String.Empty;
5160

5261
CreateCommands();
62+
TryGetActiveProject();
5363
}
5464

5565
void CreateCommands()
@@ -61,6 +71,15 @@ void CreateCommands()
6171
UpdateAllPackagesCommand = new DelegateCommand(param => UpdateAllPackages());
6272
}
6373

74+
void TryGetActiveProject()
75+
{
76+
try {
77+
project = solution.GetActiveProject();
78+
} catch (Exception ex) {
79+
errorMessage = ex.Message;
80+
}
81+
}
82+
6483
public ICommand ShowNextPageCommand { get; private set; }
6584
public ICommand ShowPreviousPageCommand { get; private set; }
6685
public ICommand ShowPageCommand { get; private set; }

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ public PackagesViewModels(
3232
var packageViewModelFactory = new PackageViewModelFactory(solution, packageManagementEvents, actionRunner);
3333
var updatedPackageViewModelFactory = new UpdatedPackageViewModelFactory(packageViewModelFactory);
3434

35-
AvailablePackagesViewModel = new AvailablePackagesViewModel(packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
35+
AvailablePackagesViewModel = new AvailablePackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
3636
InstalledPackagesViewModel = new InstalledPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
37-
UpdatedPackagesViewModel = new UpdatedPackagesViewModel(solution, registeredPackageRepositories, updatedPackageViewModelFactory, taskFactory);
38-
RecentPackagesViewModel = new RecentPackagesViewModel(packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
37+
UpdatedPackagesViewModel = new UpdatedPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, updatedPackageViewModelFactory, taskFactory);
38+
RecentPackagesViewModel = new RecentPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
3939
}
4040

4141
public AvailablePackagesViewModel AvailablePackagesViewModel { get; private set; }

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,20 +24,22 @@ namespace ICSharpCode.PackageManagement
2424
{
2525
public class RecentPackagesViewModel : PackagesViewModel
2626
{
27-
IPackageManagementEvents packageManagementEvents;
28-
IPackageRepository recentPackageRepository;
27+
IPackageRepository recentPackagesRepository;
2928

3029
public RecentPackagesViewModel(
30+
IPackageManagementSolution solution,
3131
IPackageManagementEvents packageManagementEvents,
3232
IRegisteredPackageRepositories registeredPackageRepositories,
3333
IPackageViewModelFactory packageViewModelFactory,
3434
ITaskFactory taskFactory)
3535
: base(
36+
solution,
37+
packageManagementEvents,
3638
registeredPackageRepositories,
3739
packageViewModelFactory,
3840
taskFactory)
3941
{
40-
recentPackageRepository = registeredPackageRepositories.RecentPackageRepository;
42+
recentPackagesRepository = registeredPackageRepositories.RecentPackageRepository;
4143

4244
this.packageManagementEvents = packageManagementEvents;
4345
RegisterEvents();
@@ -64,7 +66,7 @@ void OnAddRecentPackage(object sender, EventArgs e)
6466

6567
protected override IQueryable<IPackage> GetAllPackages()
6668
{
67-
return recentPackageRepository.GetPackages();
69+
return recentPackagesRepository.GetPackages().Where(package => project == null || package.HasProjectContent());
6870
}
6971
}
7072
}

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,16 +28,17 @@ public class UpdatedPackagesViewModel : PackagesViewModel
2828
{
2929
PackageManagementSelectedProjects selectedProjects;
3030
UpdatedPackages updatedPackages;
31-
string errorMessage = String.Empty;
3231
ILogger logger;
33-
IPackageManagementEvents packageManagementEvents;
3432

3533
public UpdatedPackagesViewModel(
3634
IPackageManagementSolution solution,
35+
IPackageManagementEvents packageManagementEvents,
3736
IRegisteredPackageRepositories registeredPackageRepositories,
3837
IPackageViewModelFactory packageViewModelFactory,
3938
ITaskFactory taskFactory)
4039
: base(
40+
solution,
41+
packageManagementEvents,
4142
registeredPackageRepositories,
4243
packageViewModelFactory,
4344
taskFactory)

0 commit comments

Comments
 (0)