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

67 lines
2.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.IO;
using System.Linq;
using ICSharpCode.SharpDevelop.Gui;
using SD = ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.PackageManagement.EnvDTE
{
/// <summary>
/// A file can have child project items if it has files that depend upon it.
/// For example, winform designer files (MainForm.Designer.cs)
/// </summary>
public class FileProjectItems : ProjectItems
{
ProjectItem projectItem;
IPackageManagementFileService fileService;
public FileProjectItems(ProjectItem projectItem)
: this(projectItem, new PackageManagementFileService())
{
}
public FileProjectItems(ProjectItem projectItem, IPackageManagementFileService fileService)
: base(projectItem.ContainingProject, projectItem, fileService)
{
this.projectItem = projectItem;
this.fileService = fileService;
}
protected override IEnumerable<ProjectItem> GetProjectItems()
{
return GetChildDependentProjectItems().ToList();
}
IEnumerable<ProjectItem> GetChildDependentProjectItems()
{
foreach (SD.FileProjectItem fileProjectItem in GetFileProjectItems()) {
if (fileProjectItem.IsDependentUpon(projectItem.MSBuildProjectItem)) {
yield return new ProjectItem(Project, fileProjectItem);
}
}
}
IEnumerable<SD.FileProjectItem> GetFileProjectItems()
{
return Project
.MSBuildProject
.Items
.Where(item => item is SD.FileProjectItem)
.Select(item => (SD.FileProjectItem)item);
}
protected override ProjectItem AddFileProjectItemToProject(string fileName)
{
return AddFileProjectItemWithDependent(fileName);
}
ProjectItem AddFileProjectItemWithDependent(string fileName)
{
return Project.AddFileProjectItemWithDependentUsingFullPath(fileName, projectItem.Name);
}
}
}