using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using Tango.Core.Commands; using Tango.Core.DI; using Tango.FSE.Common; using Tango.FSE.Common.Authentication; using Tango.FSE.Common.Diagnostics; using Tango.FSE.Diagnostics.Project; using Tango.PMR.Diagnostics; using Tango.Settings; namespace Tango.FSE.Diagnostics.ViewModels { public class DiagnosticsTabViewVM : FSEViewModelWithModuleSettings { private DiagnosticsProjectTab _tab; public DiagnosticsProjectTab Tab { get { return _tab; } set { _tab = value; RaisePropertyChangedAuto(); OnTabChanged(); } } private bool _isSelected; public bool IsSelected { get { return _isSelected; } set { _isSelected = value; RaisePropertyChangedAuto(); OnIsSelectedChanged(); } } private bool _isVisible; public new bool IsVisible { get { return _isVisible; } set { _isVisible = value; RaisePropertyChangedAuto(); OnIsSelectedChanged(); } } private DiagnosticsWidget _selectedWidget; public DiagnosticsWidget SelectedWidget { get { return _selectedWidget; } set { _selectedWidget = value; RaisePropertyChangedAuto(); } } private bool _isWidgetSettingsOpened; public bool IsWidgetSettingsOpened { get { return _isWidgetSettingsOpened; } set { _isWidgetSettingsOpened = value; RaisePropertyChangedAuto(); } } private bool _editMode; public bool EditMode { get { return _editMode; } set { _editMode = value; RaisePropertyChangedAuto(); Tab.Widgets.ToList().ForEach(x => x.EditMode = value); } } private bool _showGridLines; public bool ShowGridLines { get { return _showGridLines; } set { _showGridLines = value; RaisePropertyChangedAuto(); } } public RelayCommand OpenWidgetSettingsCommand { get; set; } public RelayCommand CloseWidgetSettingsCommand { get; set; } public DiagnosticsTabViewVM() { OpenWidgetSettingsCommand = new RelayCommand(OpenWidgetSettings); CloseWidgetSettingsCommand = new RelayCommand(() => { IsWidgetSettingsOpened = false; SelectedWidget = null; }); } private void OpenWidgetSettings(DiagnosticsWidget widget) { IsWidgetSettingsOpened = true; } private void OnIsSelectedChanged() { Tab.Widgets.ToList().ForEach(x => x.IsVisible = IsSelected && IsVisible); } public void PopulateDiagnosticsData(DiagnosticsPackage package) { foreach (var widget in Tab.Widgets.ToList()) { widget.OnDiagnosticsData(package); } } private void OnTabChanged() { if (Tab != null) { Tab.Widgets.CollectionChanged += Widgets_CollectionChanged; } } private void Widgets_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e) { Tab.Widgets.ToList().ForEach(x => x.EditMode = EditMode); } } }