| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- using System.Collections.ObjectModel;
- using System.ComponentModel;
- using System.Runtime.CompilerServices;
- namespace Quadarax.Application.Tools.Vsix.FilteredSolutionsExtension.Models
- {
- public class ProjectNode : INotifyPropertyChanged
- {
- private bool _isSelected = true;
- private bool _isVisible = true;
- public string Name { get; set; }
- public string Path { get; set; }
- public string ProjectGuid { get; set; }
- public string TypeGuid { get; set; }
- public ObservableCollection<ProjectNode> Dependencies { get; set; }
- public ObservableCollection<ProjectNode> Dependents { get; set; }
- public bool IsSelected
- {
- get => _isSelected;
- set
- {
- if (_isSelected != value)
- {
- _isSelected = value;
- OnPropertyChanged();
- UpdateDependencies(value);
- }
- }
- }
- public bool IsVisible
- {
- get => _isVisible;
- set
- {
- _isVisible = value;
- OnPropertyChanged();
- }
- }
- public ProjectNode()
- {
- Dependencies = new ObservableCollection<ProjectNode>();
- Dependents = new ObservableCollection<ProjectNode>();
- }
- private void UpdateDependencies(bool isSelected)
- {
- if (isSelected)
- {
- // When selecting, select all dependencies
- foreach (var dependency in Dependencies)
- {
- dependency.IsSelected = true;
- }
- }
- else
- {
- // When deselecting, deselect all dependents
- foreach (var dependent in Dependents)
- {
- dependent.IsSelected = false;
- }
- }
- }
- public event PropertyChangedEventHandler PropertyChanged;
- protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
- {
- PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
- }
- }
- }
|