217 lines · 8.3 KB · C#
RawDownload
//******************************************************************************************************//  OutputStreamCurrentDeviceUserControl.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://  ----------------------------------------------------------------------------------------------------//  09/22/2011 - Mehulbhai P Thakkar//       Generated original version of source code.//  09/14/2012 - Aniket Salver //          Added paging and sorting technique. //****************************************************************************************************** using System;using System.Collections.Generic;using System.Collections.ObjectModel;using System.Linq;using System.Windows;using System.Windows.Input;using GSF.PhasorProtocols.UI.DataModels;using GSF.TimeSeries.UI; namespace GSF.PhasorProtocols.UI.UserControls{    /// <summary>    /// Interaction logic for OutputStreamCurrentDeviceUserControl.xaml    /// </summary>    public partial class OutputStreamCurrentDeviceUserControl    {        #region [ Members ]         private const string PhaseFilterSetting = "OutputStreamLastPhaseFilter";         private readonly int m_outputStreamID;        private ObservableCollection<OutputStreamDevice> m_currentDevices;        private ObservableCollection<Device> m_newDevices;         #endregion         #region [ Constructor ]         /// <summary>        /// Creates an instance of <see cref="OutputStreamCurrentDeviceUserControl"/>.        /// <param name="outputStreamID">ID of the output stream to filter data.</param>        /// </summary>        public OutputStreamCurrentDeviceUserControl(int outputStreamID)        {            InitializeComponent();                        m_outputStreamID = outputStreamID;            m_currentDevices = new ObservableCollection<OutputStreamDevice>();            m_newDevices = new ObservableCollection<Device>();                        Loaded += OutputStreamCurrentDeviceUserControl_Loaded;            KeyUp += OutputStreamCurrentDeviceUserControl_KeyUp;             string phaseFilter = IsolatedStorageManager.ReadFromIsolatedStorage(PhaseFilterSetting).ToNonNullString("*");            TextBoxPhaseFilter.Text = string.IsNullOrWhiteSpace(phaseFilter) ? "*" : phaseFilter;        }         #endregion         #region [ Methods ]         private void PopupAddMore_Closed(object sender, EventArgs e)        {            IsolatedStorageManager.WriteToIsolatedStorage(PhaseFilterSetting, TextBoxPhaseFilter.Text);        }         private void OutputStreamCurrentDeviceUserControl_KeyUp(object sender, KeyEventArgs e)        {            if (e.Key == Key.Escape && PopupAddMore.IsOpen)                PopupAddMore.IsOpen = false;        }         private void LoadCurrentDevices()        {            IList<int> keys = OutputStreamDevice.LoadKeys(null, m_outputStreamID);            m_currentDevices = OutputStreamDevice.Load(null, keys);                        DataGridCurrentDevices.ItemsSource = m_currentDevices;                        if (m_currentDevices.Count == 0)                PopupAddMore.IsOpen = true;        }         private void OutputStreamCurrentDeviceUserControl_Loaded(object sender, RoutedEventArgs e)        {            LoadCurrentDevices();            LoadNewDevices(string.Empty);        }         private void CheckBoxAll_Checked(object sender, RoutedEventArgs e)        {            foreach (OutputStreamDevice outputStreamDevice in m_currentDevices)                outputStreamDevice.Selected = true;        }         private void CheckBoxAll_Unchecked(object sender, RoutedEventArgs e)        {            foreach (OutputStreamDevice outputStreamDevice in m_currentDevices)                outputStreamDevice.Selected = false;        }         private void ButtonDelete_Click(object sender, RoutedEventArgs e)        {            try            {                foreach (OutputStreamDevice outputStreamDevice in m_currentDevices)                {                    if (outputStreamDevice.Selected)                        OutputStreamDevice.Delete(null, m_outputStreamID, outputStreamDevice.Acronym);                }                 LoadCurrentDevices();                LoadNewDevices(string.Empty);            }            catch (Exception ex)            {                MessageBox.Show(ex.Message, "Delete Output Stream Device");            }        }         private void ButtonAdd_Click(object sender, RoutedEventArgs e)        {            LoadNewDevices(string.Empty);            PopupAddMore.IsOpen = true;        }         private void LoadNewDevices(string filterText)        {             if (string.IsNullOrEmpty(filterText))            {                m_newDevices = Device.GetNewDevicesForOutputStream(null, m_outputStreamID);            }            else            {                filterText = filterText.ToLower();                 m_newDevices = new ObservableCollection<Device>(Device.GetNewDevicesForOutputStream(null, m_outputStreamID).Where(device =>                    device.Acronym.ToNonNullString().ToLower().Contains(filterText) ||                    device.Name.ToNonNullString().ToLower().Contains(filterText) ||                    device.CompanyAcronym.ToNonNullString().ToLower().Contains(filterText) ||                    device.CompanyName.ToNonNullString().ToLower().Contains(filterText) ||                    device.ParentAcronym.ToNonNullString().ToLower().Contains(filterText))                );            }             DataGridAddDevices.ItemsSource = m_newDevices;        }         private void CheckBoxAddMore_Checked(object sender, RoutedEventArgs e)        {            foreach (Device device in m_newDevices)                device.Enabled = true;        }         private void CheckBoxAddMore_Unchecked(object sender, RoutedEventArgs e)        {            foreach (Device device in m_newDevices)                device.Enabled = false;        }         private void ButtonAddMore_Click(object sender, RoutedEventArgs e)        {            try            {                OutputStreamDevice.AddDevices(null, m_outputStreamID, new ObservableCollection<Device>(m_newDevices.Where(device => device.Enabled)),                    CheckBoxAddDigitals.IsChecked.GetValueOrDefault(), CheckBoxAddAnalogs.IsChecked.GetValueOrDefault(), TextBoxPhaseFilter.Text);                 LoadCurrentDevices();                PopupAddMore.IsOpen = false;            }            catch (Exception ex)            {                string message = $"Error while adding device to output stream:{Environment.NewLine}{ex.Message}";                 if (ex.Message.Contains("FK_OutputStreamMeasurement_Historian"))                    message += Environment.NewLine + Environment.NewLine + "The device may be referencing a non-existent historian.";                 // ReSharper disable once AssignNullToNotNullAttribute                MessageBox.Show(Application.Current.MainWindow, message, "ERROR", MessageBoxButton.OK, MessageBoxImage.Error);                CommonFunctions.LogException(null, "Output Wizard Add More", ex);            }        }         private void ButtonCancel_Click(object sender, RoutedEventArgs e)        {            LoadCurrentDevices();            PopupAddMore.IsOpen = false;        }         private void ButtonSearch_Click(object sender, RoutedEventArgs e)        {            LoadNewDevices(TextBoxSearch.Text.Replace("'", "").Replace("%", ""));        }         private void ButtonShowAll_Click(object sender, RoutedEventArgs e)        {            LoadNewDevices(string.Empty);        }         #endregion    }}

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t