using System;
using System.IO;
using System.Windows.Forms;
namespace TenTec.Utils
{
/// <summary>
/// Provides the unified way of displaying messages and questions
/// (such as system message boxes) in the app
/// </summary>
internal class MessagesManager
{
#region Methods
private static string GetExeName()
{
return Path.GetFileNameWithoutExtension(Application.ExecutablePath);
}
public static DialogResult ShowError(Control control, string message)
{
return (DialogResult)control.Invoke(new ShowMessageDelegate(ShowErrorInternal), new object[] { control, message});
}
public static DialogResult ShowQuestion(Control control, string message, MessageBoxButtons buttons)
{
return (DialogResult)control.Invoke(new ShowQuestionDelegate(ShowQuestionInternal), new object[] { control, message, buttons, MessageBoxDefaultButton.Button1 });
}
public static DialogResult ShowQuestion(Control control, string message, MessageBoxButtons buttons, MessageBoxDefaultButton defaultButton)
{
return (DialogResult)control.Invoke(new ShowQuestionDelegate(ShowQuestionInternal), new object[] { control, message, buttons, defaultButton });
}
public static DialogResult ShowInfo(Control control, string message)
{
return (DialogResult)control.Invoke(new ShowMessageDelegate(ShowInfoInternal), new object[] { control, message });
}
private static DialogResult ShowErrorInternal(Control control, string message)
{
return MessageBox.Show(control, message, GetExeName(), MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1);
}
private static DialogResult ShowQuestionInternal(Control control, string message, MessageBoxButtons buttons, MessageBoxDefaultButton defaultButton)
{
return MessageBox.Show(control, message, GetExeName(), buttons, MessageBoxIcon.Question, defaultButton);
}
private static DialogResult ShowInfoInternal(Control control, string message)
{
return MessageBox.Show(control, message, GetExeName(), MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
}
private delegate DialogResult ShowMessageDelegate(Control control, string message);
private delegate DialogResult ShowQuestionDelegate(Control control, string message, MessageBoxButtons buttons, MessageBoxDefaultButton defaultButton);
#endregion
}
}