Plane.Libraries/Plane.Windows.Messages/AlertWindow.xaml.cs
2017-02-27 02:04:13 +08:00

260 lines
8.0 KiB
C#

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();
}
}
}