using System.ComponentModel; using System.Windows.Media; using BS.Shared; using BS.Shared.DataContracts; using BeWo.ViewModel; namespace BeWo.Core { public class ServiceCategoryTreeItem : INotifyPropertyChanged, IFilterableDC { private BindingList _Children; private ServiceCategoryDC _ServiceCategory; private ServiceDescriptionDC _ServiceDescription; private ServiceAccountingDC _ServiceAccounting; private ServiceAccountingVM _ServiceAccountingVM; private bool _IsChecked; private bool _IsExpanded; public event PropertyChangedEventHandler PropertyChanged; public BindingList Children { get { return this._Children ?? (this._Children = new BindingList()); } set { this._Children = value; } } public ServiceCategoryTreeItem Parent { get; set; } public ServiceCategoryDC ServiceCategory { get { return this._ServiceCategory; } set { this._ServiceCategory = value; } } public ServiceDescriptionDC ServiceDescription { get { return this._ServiceDescription; } set { this._ServiceDescription = value; } } public ServiceAccountingDC ServiceAccounting { get { return this._ServiceAccounting; } set { this._ServiceAccounting = value; } } public ServiceAccountingVM ServiceAccountingVM { get { return this._ServiceAccountingVM; } set { this._ServiceAccountingVM = value; } } public bool IsChecked { get { return this._IsChecked; } set { this._IsChecked = value; foreach (var item in this.Children) { if (item.IsChecked != value) item.IsChecked = value; } this.RaisePropertyChanged("IsChecked"); } } public bool IsExpanded { get { return this._IsExpanded; } set { this._IsExpanded = value; this.RaisePropertyChanged("IsExpanded"); } } public SolidColorBrush FilterableBrush { get { return new SolidColorBrush(Colors.Transparent); } } public string Name { get { if (this._ServiceCategory != null) { return this._ServiceCategory.Name; } else if (this._ServiceDescription != null) { return this._ServiceDescription.Name; } else if (this._ServiceAccounting != null) { return this._ServiceAccounting.ServiceDescription.Name; } else if (this._ServiceAccountingVM != null) { return this._ServiceAccountingVM.ServiceDescription.Name; } return null; } set { if (this._ServiceCategory != null) { this._ServiceCategory.Name = value; } else if (this._ServiceDescription != null) { this._ServiceDescription.Name = value; } else if (this._ServiceAccounting != null) { this._ServiceAccounting.ServiceDescription.Name = value; } else if (this._ServiceAccountingVM != null) { this._ServiceAccountingVM.ServiceDescription.Name = value; } } } protected void RaisePropertyChanged(string propertyName) { PropertyChangedEventHandler propertyChanged = this.PropertyChanged; if (propertyChanged != null) { propertyChanged(this, new PropertyChangedEventArgs(propertyName)); } } internal void SetChecked(bool checkedValue) { this._IsChecked = checkedValue; } #region IFilterableDC Members public string IconPath { get { return string.Empty; } } public string DetailDescription { get { return Name; } } public string FilterRelevants { get { return Name; } } public bool SupportsActivationType { get { return true; } } public long Version { get { return 0; } set { } } public string SimpleDescription { get { return Name; } } public ActivationTypeId ActivationType { get { return ActivationTypeId.Active; } set { } } #endregion } }