using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Tango.FSE.Diagnostics.Project { public abstract class DiagnosticsConfigurableWidget : DiagnosticsWidget { private DiagnosticsWidgetSettings _settings; public DiagnosticsWidgetSettings Settings { get { return _settings; } set { _settings = value; if (value != null) { OnSettingsChanged(); value.PropertyChanged += _settings_PropertyChanged; } } } private void _settings_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { OnSettingsChanged(); } protected virtual void OnSettingsChanged() { } } public abstract class DiagnosticsConfigurableWidget : DiagnosticsConfigurableWidget where T : DiagnosticsWidgetSettings, new() { public new T Settings { get { return base.Settings as T; } set { base.Settings = value; RaisePropertyChangedAuto(); } } public DiagnosticsConfigurableWidget() : base() { Settings = new T(); } } }