//****************************************************************************************************** // InternalSubscriptionUserControl.xaml.cs - Gbtc // // Copyright © 2010, Grid Protection Alliance. All Rights Reserved. // // Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See // the NOTICE file distributed with this work for additional information regarding copyright ownership. // The GPA licenses this file to you under the MIT License (MIT), the "License"; you may // not use this file except in compliance with the License. You may obtain a copy of the License at: // // http://www.opensource.org/licenses/MIT // // Unless agreed to in writing, the subject software distributed under the License is distributed on an // "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the // License for the specific language governing permissions and limitations. // // Code Modification History: // ---------------------------------------------------------------------------------------------------- // 08/23/2013 - Stephen C. Wills // Generated original version of source code. // //****************************************************************************************************** using System.Text.RegularExpressions; using GSF.TimeSeries.Transport.UI.ViewModels; using System.Windows; using System.Windows.Controls; using System.Windows.Input; using GSF.ComponentModel.DataAnnotations; namespace GSF.TimeSeries.Transport.UI.UserControls { /// /// Interaction logic for InternalSubscriptionUserControl.xaml /// public partial class InternalSubscriptionUserControl { #region [ Members ] // Fields private bool m_defaultsInitialized; #endregion #region [ Constructors ] /// /// Creates a new . /// public InternalSubscriptionUserControl() => InitializeComponent(); #endregion #region [ Properties ] private SubscriberRequestViewModel ViewModel => Resources["ViewModel"] as SubscriberRequestViewModel; #endregion #region [ Methods ] private void InternalSubscriptionUserControl_Unloaded(object sender, RoutedEventArgs e) { SubscriberRequestViewModel model = ViewModel; model?.Dispose(); } private void EnableDataGapRecovery_Checked(object sender, RoutedEventArgs e) { if (!m_defaultsInitialized && EnableDataGapRecovery.IsChecked.GetValueOrDefault()) { SubscriberRequestViewModel model = ViewModel; if ((object)model != null) model.InitializeDefaultInternalSubscriptionSettings(); m_defaultsInitialized = true; } } private void Acronym_TextChanged(object sender, TextChangedEventArgs e) { if (!(SourcePrefix?.Content is null)) SourcePrefix.Content = $"Use Source Prefix: \"{Acronym?.Text}!\""; } private void STTP_Checked(object sender, RoutedEventArgs e) { openPDCPort.Content = "7165"; openHistorianPort.Content = "7175"; SIEGatePort.Content = "7170"; openMICPort.Content = "7195"; HostNameNote.Visibility = Visibility.Visible; SubscriberRequestViewModel model = ViewModel; if ((object)model != null) model.PublisherPort = 7165; } private void GEP_Checked(object sender, RoutedEventArgs e) { openPDCPort.Content = "6165"; openHistorianPort.Content = "6175"; SIEGatePort.Content = "6170"; openMICPort.Content = "6195"; HostNameNote.Visibility = Visibility.Hidden; SubscriberRequestViewModel model = ViewModel; if ((object)model != null) model.PublisherPort = 6165; } private void Acronym_PreviewTextInput(object sender, TextCompositionEventArgs e) => e.Handled = !ValidAcronym(((TextBox)sender).Text + e.Text); private void PortRange_PreviewTextInput(object sender, TextCompositionEventArgs e) => e.Handled = !InRange(((TextBox)sender).Text + e.Text, ushort.MinValue, ushort.MaxValue); private void PositiveInt_PreviewTextInput(object sender, TextCompositionEventArgs e) => e.Handled = !IsPositiveInt(e.Text); private void PositiveFloat_PreviewTextInput(object sender, TextCompositionEventArgs e) => e.Handled = !IsPositiveFloat(e.Text); #endregion #region [ Static ] // Static Fields private static readonly Regex s_acronymValidator = new Regex($"[a-z{AcronymValidationAttribute.ValidationPattern.Substring(2)}"); private static readonly Regex s_positiveFloat = new Regex("[0-9.]+"); private static readonly Regex s_positiveInt = new Regex("[0-9]+"); // Static Methods private static bool ValidAcronym(string text) => s_acronymValidator.IsMatch(text); private static bool IsPositiveFloat(string text) => s_positiveFloat.IsMatch(text); private static bool IsPositiveInt(string text) => s_positiveInt.IsMatch(text); private static bool InRange(string text, int low, int high) { if (int.TryParse(text, out int value)) return value > low && value < high; return false; } #endregion } }