#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.
 
 
 
 
 
 

115 lines
3.0 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 System.Collections.Generic;
using System.Linq;
using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Gui;
using ICSharpCode.SharpDevelop.Project;
using ICSharpCode.SharpDevelop.Project.Commands;
namespace ICSharpCode.PackageManagement
{
public class PackageManagementProjectService : IPackageManagementProjectService
{
public PackageManagementProjectService()
{
ProjectBuilder = new ProjectBuilder();
}
public IProject CurrentProject {
get { return ProjectService.CurrentProject; }
}
public ISolution OpenSolution {
get { return ProjectService.OpenSolution; }
}
public IProjectBuilder ProjectBuilder { get; private set; }
public void RefreshProjectBrowser()
{
SD.MainThread.InvokeIfRequired(() => {
var refreshCommand = new RefreshProjectBrowser();
refreshCommand.Run();
});
}
void InvokeIfRequired(Action action)
{
SD.MainThread.InvokeIfRequired(action);
}
T InvokeIfRequired<T>(Func<T> callback)
{
return SD.MainThread.InvokeIfRequired(callback);
}
public IEnumerable<IProject> GetOpenProjects()
{
ISolution solution = OpenSolution;
if (solution != null) {
return solution.Projects;
}
return new IProject[0];
}
public void AddProjectItem(IProject project, ProjectItem item)
{
InvokeIfRequired(() => ProjectService.AddProjectItem(project, item));
}
public void RemoveProjectItem(IProject project, ProjectItem item)
{
InvokeIfRequired(() => ProjectService.RemoveProjectItem(project, item));
}
public void Save(IProject project)
{
InvokeIfRequired(() => project.Save());
}
public void Save(ISolution solution)
{
InvokeIfRequired(() => solution.Save());
}
// public IProjectContent GetProjectContent(IProject project)
// {
// return SD.ParserService.GetProjectContent(project);
// }
public event EventHandler<ProjectEventArgs> ProjectAdded {
add { ProjectService.ProjectAdded += value; }
remove { ProjectService.ProjectAdded -= value; }
}
public event EventHandler SolutionClosed {
add { ProjectService.SolutionClosed += value; }
remove { ProjectService.SolutionClosed -= value; }
}
public event EventHandler<SolutionEventArgs> SolutionLoaded {
add { ProjectService.SolutionLoaded += value; }
remove { ProjectService.SolutionLoaded -= value; }
}
public event SolutionFolderEventHandler SolutionFolderRemoved {
add { ProjectService.SolutionFolderRemoved += value; }
remove { ProjectService.SolutionFolderRemoved -= value; }
}
public IProjectBrowserUpdater CreateProjectBrowserUpdater()
{
return new ThreadSafeProjectBrowserUpdater();
}
public string GetDefaultCustomToolForFileName(FileProjectItem projectItem)
{
return CustomToolsService.GetCompatibleCustomToolNames(projectItem).FirstOrDefault();
}
}
}