Inheritance: SolutionItem
 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;
        }
Exemple #5
0
 protected SolutionItem(SolutionFolder parent)
 {
     _parent = parent;
 }
 public SolutionFolder(SolutionFolder parent)
     : base(parent)
 {
 }