#develop (short for SharpDevelop) is a free IDE for .NET programming languages.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

76 lines
2.4 KiB

// 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.PackageManagement.Design;
namespace ICSharpCode.PackageManagement
{
public class ViewModelLocator
{
AddPackageReferenceViewModel addPackageReferenceViewModel;
RegisteredPackageSourcesViewModel registeredPackageSourcesViewModel;
PackageManagementOptionsViewModel packageManagementOptionsViewModel;
IPackageManagementService packageManagementService;
public AddPackageReferenceViewModel AddPackageReferenceViewModel {
get {
if (addPackageReferenceViewModel == null) {
CreateAddPackageReferenceViewModel();
}
return addPackageReferenceViewModel;
}
}
void CreateAddPackageReferenceViewModel()
{
CreatePackageManagementService();
addPackageReferenceViewModel = new AddPackageReferenceViewModel(packageManagementService, new PackageManagementTaskFactory());
}
void CreatePackageManagementService()
{
if (packageManagementService == null) {
if (IsInDesignMode()) {
packageManagementService = new DesignTimePackageManagementService();
}
packageManagementService = ServiceLocator.PackageManagementService;
}
}
bool IsInDesignMode()
{
return WpfDesigner.IsInDesignMode();
}
public RegisteredPackageSourcesViewModel RegisteredPackageSourcesViewModel {
get {
if (registeredPackageSourcesViewModel == null) {
CreateRegisteredPackageSourcesViewModel();
}
return registeredPackageSourcesViewModel;
}
}
void CreateRegisteredPackageSourcesViewModel()
{
CreatePackageManagementService();
if (IsInDesignMode()) {
registeredPackageSourcesViewModel = new DesignTimeRegisteredPackageSourcesViewModel();
} else {
registeredPackageSourcesViewModel = new RegisteredPackageSourcesViewModel(packageManagementService.Options);
}
}
public PackageManagementOptionsViewModel PackageManagementOptionsViewModel {
get {
if (packageManagementOptionsViewModel == null) {
CreatePackageManagementService();
IRecentPackageRepository recentRepository = packageManagementService.RecentPackageRepository;
packageManagementOptionsViewModel = new PackageManagementOptionsViewModel(recentRepository);
}
return packageManagementOptionsViewModel;
}
}
}
}