using DTS.Common; using DTS.Common.Converters; using DTS.Common.Enums.Hardware; using DTS.Common.Interface.Hardware.AddEditHardware; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Windows; using System.Windows.Controls; // ReSharper disable CheckNamespace namespace AddEditHardware { /// /// /// Interaction logic for AddEditHardwareView.xaml /// public partial class AddEditHardwareView : IAddEditHardwareView, INotifyPropertyChanged { #region IPropertyNotified public event PropertyChangedEventHandler PropertyChanged; protected bool SetProperty(ref T storage, T value, string propertyName = null) { if (Equals(storage, value)) return false; storage = value; OnPropertyChanged(propertyName); return true; } protected void OnPropertyChanged(string propertyName = null) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } #endregion #PropertyNotified /// /// whether the SLICE6TreeView should be shown or not /// public bool AllowStandin { get { if (null == DataContext) { return true; } if (!(DataContext is IAddEditHardwareViewModel vm)) { return true; } return vm.AllowStandin; } } private static List _allDASTypes = new List(); private static HardwareTypes[] AvailableDASType(int ConnectionDbVersion) { lock (_allDASTypes) { if (!_allDASTypes.Any()) { PopulateDASTypes(ConnectionDbVersion); } } return _allDASTypes.ToArray(); } private static void PopulateDASTypes(int ConnectionDbVersion) { lock (_allDASTypes) { _allDASTypes.AddRange(new[] { HardwareTypes.TDAS_Pro_Rack, HardwareTypes.TDAS_LabRack, HardwareTypes.G5INDUMMY, HardwareTypes.G5VDS, HardwareTypes.SLICE_NANO_Base, HardwareTypes.SLICE_Micro_Base, HardwareTypes.SLICE_Distributor, HardwareTypes.SLICE_EthernetController, HardwareTypes.SLICE_Mini_Distributor, HardwareTypes.SLICE_LabEthernet, HardwareTypes.SLICE1_5_Nano_Base, HardwareTypes.SLICE1_5_Micro_Base, HardwareTypes.SLICE2_SIM, HardwareTypes.SLICE2_DIM, HardwareTypes.SLICE2_TOM, HardwareTypes.SLICE2_SLS, HardwareTypes.SLICE2_SLD, HardwareTypes.SLICE2_SLT, HardwareTypes.SLICE6DB, HardwareTypes.SLICE6DB3, HardwareTypes.SLICE_Pro_Distributor, HardwareTypes.SLICE6DB_InDummy, HardwareTypes.SLICE6_Base, HardwareTypes.SLICE6_AIR, HardwareTypes.PowerPro, HardwareTypes.TSR_AIR_RevB, HardwareTypes.SLICE1_G5Stack, HardwareTypes.S6A_EthernetRecorder }); if (ConnectionDbVersion >= Constants.SLICE6AIR_BR_DB_VERSION) { _allDASTypes.Add(HardwareTypes.SLICE6_AIR_BR); } if (ConnectionDbVersion >= Constants.SLICE_TC_DB_VERSION) { _allDASTypes.Add(HardwareTypes.SLICE6_AIR_TC); } _allDASTypes.Sort((a, b) => { return EnumDescriptionTypeConverter.GetEnumDescription(a) .CompareTo(EnumDescriptionTypeConverter.GetEnumDescription(b)); }); } } private static SLICEPROSIMConfigurations[] _availableSliceProSimConfigurations = new[] { SLICEPROSIMConfigurations.MEGA, SLICEPROSIMConfigurations.EIGHT_HUNDRED, SLICEPROSIMConfigurations.SEVEN_HUNDRED, SLICEPROSIMConfigurations.SIX_HUNDRED }; private static SLICETCConfigurations[] _availableSliceTCConfigurations = new[] { SLICETCConfigurations.EIGHT, SLICETCConfigurations.SIXTEEN, SLICETCConfigurations.TWENTYFOUR }; private static RackSizes[] _availableRackSizes = new[] { RackSizes.FOUR, RackSizes.EIGHT }; public AddEditHardwareView() { InitializeComponent(); cbHardwareTypes.ItemsSource = AvailableDASType(ViewDbVersion); cbSliceProSimConfigurations.ItemsSource = _availableSliceProSimConfigurations; cbSliceTCConfigurations.ItemsSource = _availableSliceTCConfigurations; cbRackSize.ItemsSource = _availableRackSizes; } private void btnRemoveModule_Click(object sender, RoutedEventArgs e) { if (!(sender is Control control)) { return; } if (!(control.DataContext is IAddEditHardwareDASModule dasModule)) { return; } dasModule.OwningHardware.RemoveModule(dasModule); if (!(ctrlView.DataContext is AddEditHardwareViewModel vm)) { return; } vm.NotifyModified(); } private void btnAdd_Click(object sender, RoutedEventArgs e) { if (!(sender is Control control)) { return; } if (!(control.DataContext is IAddEditHardwareHardware hardware)) { return; } hardware.AddModule(); if (!(ctrlView.DataContext is AddEditHardwareViewModel vm)) { return; } vm.NotifyModified(); } private void cb_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (!(ctrlView.DataContext is AddEditHardwareViewModel vm)) { return; } vm.NotifyModified(); } private void cb_Checked(object sender, RoutedEventArgs e) { if (!(ctrlView.DataContext is AddEditHardwareViewModel vm)) { return; } vm.NotifyModified(); } private void cb_Unchecked(object sender, RoutedEventArgs e) { if (!(ctrlView.DataContext is AddEditHardwareViewModel vm)) { return; } vm.NotifyModified(); } private void tb_TextChanged(object sender, TextChangedEventArgs e) { if (!(ctrlView.DataContext is AddEditHardwareViewModel vm)) { return; } vm.NotifyModified(); } /// /// handle any initialization that should occur when view is activated /// public void Activated() { OnPropertyChanged("AllowStandin"); if (!(DataContext is IAddEditHardwareViewModel vm)) { return; } if (null != vm.SLICE6TreeView) { SLICE6TreeView.Content = vm.SLICE6TreeView; } } private int _DbVersion = DTS.Common.Storage.DbOperations.MINIMUM_LTS_DB_VERSION; public int ViewDbVersion { get => _DbVersion; set { SetProperty(ref _DbVersion, value, "ViewDbVersion"); lock (_allDASTypes) { _allDASTypes.Clear(); } cbHardwareTypes.ItemsSource = AvailableDASType(ViewDbVersion); } } } }