// Copyright (c) 2017-today schick Informatik // Description: Select classes for import // Returns: Array of selected classes as property using System; using System.Collections.Generic; using System.ComponentModel; using System.Windows; using bsmd.database; namespace ENI2.EditControls { /// /// Interaction logic for SelectImportClassesDialog.xaml /// public partial class SelectImportClassesDialog : ENI2.Controls.EditWindowBase { private readonly List _selectClasses = new List(); private readonly List _selectedClasses = new List(); public SelectImportClassesDialog() { InitializeComponent(); this.Loaded += SelectImportClassesDialog_Loaded; } public List SelectedClasses { get { return _selectedClasses; } } /// /// These messages are needed to derive message classes from, already sorted in the right manner /// public List Messages { get; set; } public bool IsTransit { get; set; } private void SelectImportClassesDialog_Loaded(object sender, RoutedEventArgs e) { foreach(Message aMessage in this.Messages) { if ((aMessage.MessageNotificationClass == Message.NotificationClass.VISIT) || (aMessage.MessageNotificationClass == Message.NotificationClass.TRANSIT) || (aMessage.MessageNotificationClass == Message.NotificationClass.ATA) || (aMessage.MessageNotificationClass == Message.NotificationClass.ATD) || (aMessage.MessageNotificationClass == Message.NotificationClass.STO) ) continue; if (IsTransit && ((aMessage.MessageNotificationClass == Message.NotificationClass.BKRD) || (aMessage.MessageNotificationClass == Message.NotificationClass.BPOL) || (aMessage.MessageNotificationClass == Message.NotificationClass.HAZD) || (aMessage.MessageNotificationClass == Message.NotificationClass.INFO) || (aMessage.MessageNotificationClass == Message.NotificationClass.LADG) || (aMessage.MessageNotificationClass == Message.NotificationClass.NAME) || (aMessage.MessageNotificationClass == Message.NotificationClass.PRE72H) || (aMessage.MessageNotificationClass == Message.NotificationClass.SERV) || (aMessage.MessageNotificationClass == Message.NotificationClass.TIEFD) || (aMessage.MessageNotificationClass == Message.NotificationClass.TOWD) || (aMessage.MessageNotificationClass == Message.NotificationClass.WAS) || (aMessage.MessageNotificationClass == Message.NotificationClass.WAS_RCPT) )) continue; SelectClass sc = new SelectClass(); sc.Name = Enum.GetName(typeof(bsmd.database.Message.NotificationClass), aMessage.MessageNotificationClass); sc.Class = aMessage.MessageNotificationClass; sc.IsSelected = false; _selectClasses.Add(sc); } this.checkListBoxClasses.ItemsSource = _selectClasses; this.OKClicked += SelectImportClassesDialog_OKClicked; } private void SelectImportClassesDialog_OKClicked() { foreach(SelectClass sc in _selectClasses) { if (sc.IsSelected) _selectedClasses.Add(sc.Class); } } class SelectClass : INotifyPropertyChanged { private bool _isSelected; public string Name { get; set; } public Message.NotificationClass Class { get; set; } public bool IsSelected { get { return _isSelected; } set { _isSelected = value; OnPropertyChanged("IsSelected"); } } public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string propertyName) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); } } private void buttonAll_Click(object sender, RoutedEventArgs e) { foreach (SelectClass sc in _selectClasses) sc.IsSelected = true; } private void buttonNone_Click(object sender, RoutedEventArgs e) { foreach (SelectClass sc in _selectClasses) sc.IsSelected = false; } } }