public SolutionFolder(SolutionFolder parent) : base(parent) { _items.CollectionChanged += (sender, args) => { var folder = this; do { folder.NotifyOfPropertyChange(() => ProjectCount); folder = folder.Parent; } while (folder != null); }; }
public SolutionFolder GetOrCreateSubfolder(string folderName) { var folder = _items.OfType<SolutionFolder>().SingleOrDefault(p => p.Name == folderName); if (folder == null) { folder = new SolutionFolder(this) { Guid = Guid.NewGuid(), Name = folderName }; _items.Add(folder); } return folder; }
public SolutionProject(Project project, SolutionFolder parent) : base(parent) { _project = project; }
private static bool RemoveProject(SolutionFolder solutionFolder, Project project) { bool removed = false; var item = solutionFolder.Items.SingleOrDefault(p => p.Guid == project.Guid); if (item != null) { solutionFolder.Items.Remove(item); removed = true; } var foldersToRemove = new List<SolutionFolder>(); foreach (var subfolder in solutionFolder.Items.OfType<SolutionFolder>()) { if (RemoveProject(subfolder, project)) { removed = true; if (subfolder.Items.Count == 0) { foldersToRemove.Add(subfolder); } } } if (foldersToRemove.Count > 0) { foreach (var folder in foldersToRemove) { solutionFolder.Items.Remove(folder); } } return removed; }
protected SolutionItem(SolutionFolder parent) { _parent = parent; }
public SolutionFolder(SolutionFolder parent) : base(parent) { }