Browse Source

PackageManagement: OnPackageManaged

pull/374/head
Dragan 12 years ago
parent
commit
b6f06a064a
  1. 3
      src/AddIns/Misc/PackageManagement/Project/Src/AvailablePackagesViewModel.cs
  2. 1
      src/AddIns/Misc/PackageManagement/Project/Src/Design/DesignTimePackagesViewModel.cs
  3. 1
      src/AddIns/Misc/PackageManagement/Project/Src/IPackageViewModelParent.cs
  4. 3
      src/AddIns/Misc/PackageManagement/Project/Src/InstalledPackagesViewModel.cs
  5. 5
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs
  6. 37
      src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModel.cs
  7. 17
      src/AddIns/Misc/PackageManagement/Project/Src/PackagesViewModels.cs
  8. 3
      src/AddIns/Misc/PackageManagement/Project/Src/RecentPackagesViewModel.cs
  9. 2
      src/AddIns/Misc/PackageManagement/Project/Src/UpdatedPackagesViewModel.cs

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

@ -30,10 +30,11 @@ namespace ICSharpCode.PackageManagement @@ -30,10 +30,11 @@ namespace ICSharpCode.PackageManagement
string errorMessage;
public AvailablePackagesViewModel(
PackagesViewModels packagesViewModelParent,
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
: base(registeredPackageRepositories, packageViewModelFactory, taskFactory)
: base(packagesViewModelParent, registeredPackageRepositories, packageViewModelFactory, taskFactory)
{
IsSearchable = true;
ShowPackageSources = true;

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

@ -34,6 +34,7 @@ namespace ICSharpCode.PackageManagement.Design @@ -34,6 +34,7 @@ namespace ICSharpCode.PackageManagement.Design
DesignTimeRegisteredPackageRepositories registeredPackageRepositories,
FakePackageManagementSolution solution)
: base(
null,
registeredPackageRepositories,
new PackageViewModelFactory(solution, null, null),
new PackageManagementTaskFactory())

1
src/AddIns/Misc/PackageManagement/Project/Src/IPackageViewModelParent.cs

@ -23,5 +23,6 @@ namespace ICSharpCode.PackageManagement @@ -23,5 +23,6 @@ namespace ICSharpCode.PackageManagement
public interface IPackageViewModelParent
{
bool IncludePrerelease { get; }
void OnPackageManaged (IPackageFromRepository package);
}
}

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

@ -31,12 +31,13 @@ namespace ICSharpCode.PackageManagement @@ -31,12 +31,13 @@ namespace ICSharpCode.PackageManagement
string errorMessage;
public InstalledPackagesViewModel(
PackagesViewModels packagesViewModelParent,
IPackageManagementSolution solution,
IPackageManagementEvents packageManagementEvents,
IRegisteredPackageRepositories registeredPackageRepositories,
InstalledPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
: base(registeredPackageRepositories, packageViewModelFactory, taskFactory)
: base(packagesViewModelParent, registeredPackageRepositories, packageViewModelFactory, taskFactory)
{
this.solution = solution;
this.packageManagementEvents = packageManagementEvents;

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

@ -223,6 +223,7 @@ namespace ICSharpCode.PackageManagement @@ -223,6 +223,7 @@ namespace ICSharpCode.PackageManagement
logger.LogAfterPackageOperationCompletes();
OnPropertyChanged(model => model.IsAdded);
OnPropertyChanged(model => model.IsManaged);
parent.OnPackageManaged (package);
}
protected virtual IDisposable StartInstallOperation(IPackageFromRepository package)
@ -296,7 +297,6 @@ namespace ICSharpCode.PackageManagement @@ -296,7 +297,6 @@ namespace ICSharpCode.PackageManagement
var solutionPackageRepository = PackageManagementServices.Solution.CreateSolutionPackageRepository();
var packageManager = new NuGet.PackageManager(package.Repository, solutionPackageRepository.PackagePathResolver, solutionPackageRepository.FileSystem, solutionPackageRepository.Repository);
packageManager.InstallPackage(package.Id, package.Version, false, parent.IncludePrerelease);
packageManagementEvents.OnParentPackageInstalled(package);
} catch (Exception ex) {
ReportError(ex);
logger.LogError(ex);
@ -370,6 +370,7 @@ namespace ICSharpCode.PackageManagement @@ -370,6 +370,7 @@ namespace ICSharpCode.PackageManagement
logger.LogAfterPackageOperationCompletes();
OnPropertyChanged(model => model.IsAdded);
OnPropertyChanged(model => model.IsManaged);
parent.OnPackageManaged (package);
}
void LogRemovingPackage()
@ -383,7 +384,6 @@ namespace ICSharpCode.PackageManagement @@ -383,7 +384,6 @@ namespace ICSharpCode.PackageManagement
var solutionPackageRepository = PackageManagementServices.Solution.CreateSolutionPackageRepository();
var packageManager = new NuGet.PackageManager(solutionPackageRepository.Repository, solutionPackageRepository.PackagePathResolver, solutionPackageRepository.FileSystem);
packageManager.UninstallPackage(package.Id, package.Version);
packageManagementEvents.OnParentPackageUninstalled(package);
} catch (Exception ex) {
ReportError(ex);
logger.LogError(ex);
@ -454,6 +454,7 @@ namespace ICSharpCode.PackageManagement @@ -454,6 +454,7 @@ namespace ICSharpCode.PackageManagement
logger.LogAfterPackageOperationCompletes();
OnPropertyChanged(model => model.IsAdded);
OnPropertyChanged(model => model.IsManaged);
parent.OnPackageManaged (package);
}
void TryInstallingPackagesForSelectedProjects(IList<IPackageManagementSelectedProject> projects)

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

@ -38,12 +38,15 @@ namespace ICSharpCode.PackageManagement @@ -38,12 +38,15 @@ namespace ICSharpCode.PackageManagement
IEnumerable<IPackage> allPackages;
ITask<PackagesForSelectedPageResult> task;
bool includePrerelease;
readonly PackagesViewModels packagesViewModelParent;
public PackagesViewModel(
PackagesViewModels packagesViewModelParent,
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
{
this.packagesViewModelParent = packagesViewModelParent;
this.registeredPackageRepositories = registeredPackageRepositories;
this.packageViewModelFactory = packageViewModelFactory;
this.taskFactory = taskFactory;
@ -125,9 +128,41 @@ namespace ICSharpCode.PackageManagement @@ -125,9 +128,41 @@ namespace ICSharpCode.PackageManagement
{
task = taskFactory.CreateTask(
() => GetPackagesForSelectedPageResult(),
(result) => OnPackagesReadForSelectedPage(result));
OnPackagesReadForSelectedPage);
}
public void RefreshSiblingViews (IPackageFromRepository package) {
foreach (PackagesViewModel packagesViewModel in packagesViewModelParent.GetPackagesViewModels) {
if (packagesViewModel != this) {
if (packagesViewModel is AvailablePackagesViewModel) {
// package installed from "Available Packages" Tab,
// unistaled from "Installed/Recent Packages" Tab,
// does not refresh same package in "Available Packages" Tab
packagesViewModel.allPackages = null;
packagesViewModel.StartReadPackagesTask();
// To slow: UpdatePackageViewModel(packagesViewModel, package);
}
else { // refresh other siblings?
}
}
}
}
static void UpdatePackageViewModel (PackagesViewModel packagesViewModel, IPackageName package) {
for (int i = 0; i < packagesViewModel.PackageViewModels.Count; i++) {
var found = packagesViewModel.PackageViewModels[i];
if (found.Id == package.Id && found.Version == package.Version) {
foreach (IPackage item in packagesViewModel.GetAllPackages()) {
if (item.Id == package.Id && item.Version == package.Version) {
packagesViewModel.PackageViewModels[i] = packagesViewModel.CreatePackageViewModel(item);
break;
}
}
break;
}
}
}
PackagesForSelectedPageResult GetPackagesForSelectedPageResult()
{
IEnumerable<IPackage> packages = GetPackagesForSelectedPage();

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

@ -33,10 +33,10 @@ namespace ICSharpCode.PackageManagement @@ -33,10 +33,10 @@ namespace ICSharpCode.PackageManagement
var updatedPackageViewModelFactory = new UpdatedPackageViewModelFactory(packageViewModelFactory);
var installedPackageViewModelFactory = new InstalledPackageViewModelFactory(packageViewModelFactory);
AvailablePackagesViewModel = new AvailablePackagesViewModel(registeredPackageRepositories, packageViewModelFactory, taskFactory);
InstalledPackagesViewModel = new InstalledPackagesViewModel(solution, packageManagementEvents, registeredPackageRepositories, installedPackageViewModelFactory, taskFactory);
UpdatedPackagesViewModel = new UpdatedPackagesViewModel(solution, registeredPackageRepositories, updatedPackageViewModelFactory, taskFactory);
RecentPackagesViewModel = new RecentPackagesViewModel(packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
AvailablePackagesViewModel = new AvailablePackagesViewModel(this, registeredPackageRepositories, packageViewModelFactory, taskFactory);
InstalledPackagesViewModel = new InstalledPackagesViewModel(this, solution, packageManagementEvents, registeredPackageRepositories, installedPackageViewModelFactory, taskFactory);
UpdatedPackagesViewModel = new UpdatedPackagesViewModel(this, solution, registeredPackageRepositories, updatedPackageViewModelFactory, taskFactory);
RecentPackagesViewModel = new RecentPackagesViewModel(this, packageManagementEvents, registeredPackageRepositories, packageViewModelFactory, taskFactory);
}
public AvailablePackagesViewModel AvailablePackagesViewModel { get; private set; }
@ -59,5 +59,14 @@ namespace ICSharpCode.PackageManagement @@ -59,5 +59,14 @@ namespace ICSharpCode.PackageManagement
RecentPackagesViewModel.Dispose();
UpdatedPackagesViewModel.Dispose();
}
public System.Collections.Generic.IEnumerable<PackagesViewModel> GetPackagesViewModels {
get {
yield return AvailablePackagesViewModel;
yield return InstalledPackagesViewModel;
yield return UpdatedPackagesViewModel;
yield return RecentPackagesViewModel;
}
}
}
}

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

@ -28,11 +28,12 @@ namespace ICSharpCode.PackageManagement @@ -28,11 +28,12 @@ namespace ICSharpCode.PackageManagement
IPackageRepository recentPackageRepository;
public RecentPackagesViewModel(
PackagesViewModels packagesViewModelParent,
IPackageManagementEvents packageManagementEvents,
IRegisteredPackageRepositories registeredPackageRepositories,
IPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
: base(registeredPackageRepositories, packageViewModelFactory, taskFactory)
: base(packagesViewModelParent, registeredPackageRepositories, packageViewModelFactory, taskFactory)
{
this.packageManagementEvents = packageManagementEvents;

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

@ -33,11 +33,13 @@ namespace ICSharpCode.PackageManagement @@ -33,11 +33,13 @@ namespace ICSharpCode.PackageManagement
IPackageManagementEvents packageManagementEvents;
public UpdatedPackagesViewModel(
PackagesViewModels packagesViewModelParent,
IPackageManagementSolution solution,
IRegisteredPackageRepositories registeredPackageRepositories,
UpdatedPackageViewModelFactory packageViewModelFactory,
ITaskFactory taskFactory)
: base(
packagesViewModelParent,
registeredPackageRepositories,
packageViewModelFactory,
taskFactory)

Loading…
Cancel
Save