using System;
using System.IO;
using System.Windows.Media.Imaging;
using GalaSoft.MvvmLight.Messaging;
using IssueVision.Data.Web;
namespace IssueVision.Common
{
/// <summary>
/// class that defines all messages used in this application
/// </summary>
public static class AppMessages
{
enum MessageTypes
{
// MainPage View messages
ChangeScreen,
RaiseError,
PleaseConfirm,
StatusUpdate,
// IssueEditorViewModel messages
EditIssue,
SubmitChanges,
CancelChanges,
// IssueEditor View message
ReadOnlyIssue,
OpenFile,
SaveFile,
// Reports View message
GetCharts
}
public static class ChangeScreenMessage
{
public static void Send(string screenName)
{
Messenger.Default.Send<string>(screenName, MessageTypes.ChangeScreen);
}
public static void Register(object recipient, Action<string> action)
{
Messenger.Default.Register<string>(recipient, MessageTypes.ChangeScreen, action);
}
}
public static class RaiseErrorMessage
{
public static void Send(Exception ex)
{
Messenger.Default.Send<Exception>(ex, MessageTypes.RaiseError);
}
public static void Register(object recipient, Action<Exception> action)
{
Messenger.Default.Register<Exception>(recipient, MessageTypes.RaiseError, action);
}
}
public static class PleaseConfirmMessage
{
public static void Send(DialogMessage dialogMessage)
{
Messenger.Default.Send<DialogMessage>(dialogMessage, MessageTypes.PleaseConfirm);
}
public static void Register(object recipient, Action<DialogMessage> action)
{
Messenger.Default.Register<DialogMessage>(recipient, MessageTypes.PleaseConfirm, action);
}
}
public static class StatusUpdateMessage
{
public static void Send(DialogMessage dialogMessage)
{
Messenger.Default.Send<DialogMessage>(dialogMessage, MessageTypes.StatusUpdate);
}
public static void Register(object recipient, Action<DialogMessage> action)
{
Messenger.Default.Register<DialogMessage>(recipient, MessageTypes.StatusUpdate, action);
}
}
public static class EditIssueMessage
{
public static void Send(Issue issue)
{
Messenger.Default.Send<Issue>(issue, MessageTypes.EditIssue);
}
public static void Register(object recipient, Action<Issue> action)
{
Messenger.Default.Register<Issue>(recipient, MessageTypes.EditIssue, action);
}
}
public static class SubmitChangesMessage
{
public static void Send()
{
Messenger.Default.Send<Boolean>(true, MessageTypes.SubmitChanges);
}
public static void Register(object recipient, Action<Boolean> action)
{
Messenger.Default.Register<Boolean>(recipient, MessageTypes.SubmitChanges, action);
}
}
public static class CancelChangesMessage
{
public static void Send()
{
Messenger.Default.Send<Boolean>(true, MessageTypes.CancelChanges);
}
public static void Register(object recipient, Action<Boolean> action)
{
Messenger.Default.Register<Boolean>(recipient, MessageTypes.CancelChanges, action);
}
}
public static class ReadOnlyIssueMessage
{
public static void Send(Boolean readOnly)
{
Messenger.Default.Send<Boolean>(readOnly, MessageTypes.ReadOnlyIssue);
}
public static void Register(object recipient, Action<Boolean> action)
{
Messenger.Default.Register<Boolean>(recipient, MessageTypes.ReadOnlyIssue, action);
}
}
public static class OpenFileMessage
{
public static void Send(NotificationMessageAction<FileInfo> message)
{
Messenger.Default.Send<NotificationMessageAction<FileInfo>>(message, MessageTypes.OpenFile);
}
public static void Register(object recipient, Action<NotificationMessageAction<FileInfo>> action)
{
Messenger.Default.Register<NotificationMessageAction<FileInfo>>(recipient, MessageTypes.OpenFile, action);
}
}
public static class SaveFileMessage
{
public static void Send(IssueVision.Data.Web.File saveFile)
{
Messenger.Default.Send<IssueVision.Data.Web.File>(saveFile, MessageTypes.SaveFile);
}
public static void Register(object recipient, Action<IssueVision.Data.Web.File> action)
{
Messenger.Default.Register<IssueVision.Data.Web.File>(recipient, MessageTypes.SaveFile, action);
}
}
public static class GetChartsMessage
{
public static void Send(NotificationMessageAction<WriteableBitmap> message)
{
Messenger.Default.Send<NotificationMessageAction<WriteableBitmap>>(message, MessageTypes.GetCharts);
}
public static void Register(object recipient, Action<NotificationMessageAction<WriteableBitmap>> action)
{
Messenger.Default.Register<NotificationMessageAction<WriteableBitmap>>(recipient, MessageTypes.GetCharts, action);
}
}
}
}