using MahApps.Metro.Controls; using System; using System.Drawing; using System.Windows; namespace Plane.Windows.Messages { internal partial class AlertWindow : MetroWindow { internal string Caption { get { return Title; } set { Title = value; } } internal string Message { get { return TextBlock_Message.Text; } set { TextBlock_Message.Text = value; } } internal string OkButtonText { get { return Label_Ok.Content.ToString(); } set { Label_Ok.Content = value.TryAddKeyboardAccellerator(); } } internal string CancelButtonText { get { return Label_Cancel.Content.ToString(); } set { Label_Cancel.Content = value.TryAddKeyboardAccellerator(); } } internal string YesButtonText { get { return Label_Yes.Content.ToString(); } set { Label_Yes.Content = value.TryAddKeyboardAccellerator(); } } internal string NoButtonText { get { return Label_No.Content.ToString(); } set { Label_No.Content = value.TryAddKeyboardAccellerator(); } } public MessageBoxResult Result { get; set; } private AlertWindow() { InitializeComponent(); } internal AlertWindow(string message) { InitializeComponent(); Message = message; Image_MessageBox.Visibility = System.Windows.Visibility.Collapsed; DisplayButtons(MessageBoxButton.OK); } internal AlertWindow(string message, string caption) { InitializeComponent(); Message = message; Caption = caption; Image_MessageBox.Visibility = System.Windows.Visibility.Collapsed; DisplayButtons(MessageBoxButton.OK); } internal AlertWindow(string message, string caption, MessageBoxButton button) { InitializeComponent(); Message = message; Caption = caption; Image_MessageBox.Visibility = System.Windows.Visibility.Collapsed; DisplayButtons(button); } internal AlertWindow(string message, string caption, MessageBoxImage image) { InitializeComponent(); Message = message; Caption = caption; DisplayImage(image); DisplayButtons(MessageBoxButton.OK); } internal AlertWindow(string message, string caption, MessageBoxButton button, MessageBoxImage image) { InitializeComponent(); Message = message; Caption = caption; Image_MessageBox.Visibility = System.Windows.Visibility.Collapsed; DisplayButtons(button); DisplayImage(image); } internal static AlertWindow CreateProgressWindow(string loadingText) { var window = new AlertWindow(); window.Message = loadingText; window.progressBar.Visibility = Visibility.Visible; window.Image_MessageBox.Visibility = System.Windows.Visibility.Collapsed; window.Button_OK.Visibility = System.Windows.Visibility.Collapsed; window.Button_Yes.Visibility = System.Windows.Visibility.Collapsed; window.Button_No.Visibility = System.Windows.Visibility.Collapsed; window.Button_Cancel.Visibility = System.Windows.Visibility.Collapsed; return window; } internal void CompleteProgress(string completedText) { this.Dispatcher.Invoke(new Action(() => { Message = completedText; progressBar.Visibility = Visibility.Hidden; Button_OK.Visibility = Visibility.Visible; Button_OK.Focus(); })); } private void DisplayButtons(MessageBoxButton button) { switch (button) { case MessageBoxButton.OKCancel: // Hide all but OK, Cancel Button_OK.Visibility = System.Windows.Visibility.Visible; Button_OK.Focus(); Button_Cancel.Visibility = System.Windows.Visibility.Visible; Button_Yes.Visibility = System.Windows.Visibility.Collapsed; Button_No.Visibility = System.Windows.Visibility.Collapsed; break; case MessageBoxButton.YesNo: // Hide all but Yes, No Button_Yes.Visibility = System.Windows.Visibility.Visible; Button_Yes.Focus(); Button_No.Visibility = System.Windows.Visibility.Visible; Button_OK.Visibility = System.Windows.Visibility.Collapsed; Button_Cancel.Visibility = System.Windows.Visibility.Collapsed; break; case MessageBoxButton.YesNoCancel: // Hide only OK Button_Yes.Visibility = System.Windows.Visibility.Visible; Button_Yes.Focus(); Button_No.Visibility = System.Windows.Visibility.Visible; Button_Cancel.Visibility = System.Windows.Visibility.Visible; Button_OK.Visibility = System.Windows.Visibility.Collapsed; break; default: // Hide all but OK Button_OK.Visibility = System.Windows.Visibility.Visible; Button_OK.Focus(); Button_Yes.Visibility = System.Windows.Visibility.Collapsed; Button_No.Visibility = System.Windows.Visibility.Collapsed; Button_Cancel.Visibility = System.Windows.Visibility.Collapsed; break; } } private void DisplayImage(MessageBoxImage image) { Icon icon; switch (image) { case MessageBoxImage.Exclamation: // Enumeration value 48 - also covers "Warning" icon = SystemIcons.Exclamation; break; case MessageBoxImage.Error: // Enumeration value 16, also covers "Hand" and "Stop" icon = SystemIcons.Hand; break; case MessageBoxImage.Information: // Enumeration value 64 - also covers "Asterisk" icon = SystemIcons.Information; break; case MessageBoxImage.Question: icon = SystemIcons.Question; break; default: icon = SystemIcons.Information; break; } Image_MessageBox.Source = icon.ToImageSource(); Image_MessageBox.Visibility = System.Windows.Visibility.Visible; } private void Button_OK_Click(object sender, RoutedEventArgs e) { Result = MessageBoxResult.OK; Close(); } private void Button_Cancel_Click(object sender, RoutedEventArgs e) { Result = MessageBoxResult.Cancel; Close(); } private void Button_Yes_Click(object sender, RoutedEventArgs e) { Result = MessageBoxResult.Yes; Close(); } private void Button_No_Click(object sender, RoutedEventArgs e) { Result = MessageBoxResult.No; Close(); } } }