~halega/+junk/sharpdevelop

« back to all changes in this revision

Viewing changes to src/AddIns/Misc/PackageManagement/Project/Src/PackageManagementProject.cs

  • Committer: sk
  • Date: 2011-09-10 05:17:57 UTC
  • Revision ID: halega@halega.com-20110910051757-qfouz1llya9m6boy
4.1.0.7915 Release Candidate 1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
 
2
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
 
3
 
 
4
using System;
 
5
using System.Collections.Generic;
 
6
using System.Linq;
 
7
 
 
8
using ICSharpCode.PackageManagement.EnvDTE;
 
9
using ICSharpCode.SharpDevelop.Project;
 
10
using NuGet;
 
11
 
 
12
namespace ICSharpCode.PackageManagement
 
13
{
 
14
        public class PackageManagementProject : IPackageManagementProject
 
15
        {
 
16
                ISharpDevelopPackageManager packageManager;
 
17
                ISharpDevelopProjectManager projectManager;
 
18
                IPackageManagementEvents packageManagementEvents;
 
19
                MSBuildBasedProject msbuildProject;
 
20
                
 
21
                public PackageManagementProject(
 
22
                        IPackageRepository sourceRepository,
 
23
                        MSBuildBasedProject project,
 
24
                        IPackageManagementEvents packageManagementEvents,
 
25
                        IPackageManagerFactory packageManagerFactory)
 
26
                {
 
27
                        SourceRepository = sourceRepository;
 
28
                        msbuildProject = project;
 
29
                        this.packageManagementEvents = packageManagementEvents;
 
30
                        
 
31
                        packageManager = packageManagerFactory.CreatePackageManager(sourceRepository, project);
 
32
                        projectManager = packageManager.ProjectManager;
 
33
                }
 
34
                
 
35
                public string Name {
 
36
                        get { return msbuildProject.Name; }
 
37
                }
 
38
                
 
39
                public IPackageRepository SourceRepository { get; private set; }
 
40
                
 
41
                public ILogger Logger {
 
42
                        get { return packageManager.Logger; }
 
43
                        set {
 
44
                                packageManager.Logger = value;
 
45
                                packageManager.FileSystem.Logger = value;
 
46
                        
 
47
                                projectManager.Logger = value;
 
48
                                projectManager.Project.Logger = value;
 
49
                        }
 
50
                }
 
51
                
 
52
                public event EventHandler<PackageOperationEventArgs> PackageInstalled {
 
53
                        add { packageManager.PackageInstalled += value; }
 
54
                        remove { packageManager.PackageInstalled -= value; }
 
55
                }
 
56
                
 
57
                public event EventHandler<PackageOperationEventArgs> PackageUninstalled {
 
58
                        add { packageManager.PackageUninstalled += value; }
 
59
                        remove { packageManager.PackageUninstalled -= value; }
 
60
                }
 
61
                
 
62
                public event EventHandler<PackageOperationEventArgs> PackageReferenceAdded {
 
63
                        add { projectManager.PackageReferenceAdded += value; }
 
64
                        remove { projectManager.PackageReferenceAdded -= value; }
 
65
                }
 
66
                
 
67
                public event EventHandler<PackageOperationEventArgs> PackageReferenceRemoved {
 
68
                        add { projectManager.PackageReferenceRemoved += value; }
 
69
                        remove { projectManager.PackageReferenceRemoved -= value; }
 
70
                }
 
71
                
 
72
                public bool IsPackageInstalled(IPackage package)
 
73
                {
 
74
                        return projectManager.IsInstalled(package);
 
75
                }
 
76
                
 
77
                public bool IsPackageInstalled(string packageId)
 
78
                {
 
79
                        return projectManager.IsInstalled(packageId);
 
80
                }
 
81
                
 
82
                public IQueryable<IPackage> GetPackages()
 
83
                {
 
84
                        return projectManager.LocalRepository.GetPackages();
 
85
                }
 
86
                
 
87
                public IEnumerable<PackageOperation> GetInstallPackageOperations(IPackage package, bool ignoreDependencies)
 
88
                {
 
89
                        return packageManager.GetInstallPackageOperations(package, ignoreDependencies);
 
90
                }
 
91
                
 
92
                public void InstallPackage(IPackage package, IEnumerable<PackageOperation> operations, bool ignoreDependencies)
 
93
                {
 
94
                        packageManager.InstallPackage(package, operations, ignoreDependencies);
 
95
                }
 
96
                
 
97
                public void UninstallPackage(IPackage package, bool forceRemove, bool removeDependencies)
 
98
                {
 
99
                        packageManager.UninstallPackage(package, forceRemove, removeDependencies);
 
100
                }
 
101
                
 
102
                public void UpdatePackage(IPackage package, IEnumerable<PackageOperation> operations, bool updateDependencies)
 
103
                {
 
104
                        packageManager.UpdatePackage(package, operations, updateDependencies);
 
105
                }
 
106
                
 
107
                public InstallPackageAction CreateInstallPackageAction()
 
108
                {
 
109
                        return new InstallPackageAction(this, packageManagementEvents);
 
110
                }
 
111
                
 
112
                public UninstallPackageAction CreateUninstallPackageAction()
 
113
                {
 
114
                        return new UninstallPackageAction(this, packageManagementEvents);
 
115
                }
 
116
                
 
117
                public UpdatePackageAction CreateUpdatePackageAction()
 
118
                {
 
119
                        return new UpdatePackageAction(this, packageManagementEvents);
 
120
                }
 
121
                
 
122
                public Project ConvertToDTEProject()
 
123
                {
 
124
                        return new Project(msbuildProject);
 
125
                }
 
126
                
 
127
                public IEnumerable<IPackage> GetPackagesInReverseDependencyOrder()
 
128
                {
 
129
                        var packageSorter = new PackageSorter();
 
130
                        return packageSorter
 
131
                                .GetPackagesByDependencyOrder(projectManager.LocalRepository)
 
132
                                .Reverse();
 
133
                }
 
134
        }
 
135
}