aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Notifications/DefaultNotificationProvider.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Notifications/DefaultNotificationProvider.cs')
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Notifications/DefaultNotificationProvider.cs128
1 files changed, 104 insertions, 24 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Notifications/DefaultNotificationProvider.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Notifications/DefaultNotificationProvider.cs
index b1ba03109..d4d053eaf 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Notifications/DefaultNotificationProvider.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Notifications/DefaultNotificationProvider.cs
@@ -15,6 +15,8 @@ namespace Tango.MachineStudio.UI.Notifications
{
public class DefaultNotificationProvider : ExtendedObject, INotificationProvider
{
+ private static List<Type> viewTypes;
+
public ObservableCollection<TaskItem> TaskItems { get; private set; }
public bool HasTaskItems
@@ -35,48 +37,126 @@ namespace Tango.MachineStudio.UI.Notifications
TaskItems = new ObservableCollection<TaskItem>();
}
- public bool ShowModalWindow<T>(PackIconKind icon, string title, object context) where T : FrameworkElement
- {
- return ShowModalWindow(icon, title, Activator.CreateInstance<T>(), context);
- }
-
- public bool? ShowModalWindow(Window window)
+ public bool? ShowDialog(PackIconKind icon, Brush iconColor, string message, bool hasCancel)
{
- window.Owner = Application.Current.MainWindow;
MainWindow.Instance.shadowGrid.Visibility = Visibility.Visible;
- bool result = window.ShowDialog().Value;
+
+ var result = new MessageBoxWindow()
+ {
+ Owner = Application.Current.MainWindow,
+ Message = message,
+ IconKind = icon,
+ IconColor = iconColor,
+ HasCancel = hasCancel
+
+ }.ShowDialog();
+
MainWindow.Instance.shadowGrid.Visibility = Visibility.Hidden;
return result;
}
- public bool ShowModalWindow(PackIconKind icon, string title, FrameworkElement content, object context)
+ public void ShowModalDialog<View, VM>(Action<VM> onAccept, Action onCancel) where View : FrameworkElement where VM : DialogViewVM
{
- DialogWindow dialog = new DialogWindow(content);
- dialog.DataContext = context;
- dialog.InnerTitle = title;
+ var view = Activator.CreateInstance<View>();
+ DialogWindow dialog = new DialogWindow();
dialog.Owner = Application.Current.MainWindow;
+ dialog.InnerContent = view;
MainWindow.Instance.shadowGrid.Visibility = Visibility.Visible;
- bool result = dialog.ShowDialog().Value;
+ view.Loaded += (x, y) =>
+ {
+ VM context = view.DataContext as VM;
+ dialog.DataContext = context;
+
+ Action onAcceptAction = null;
+ onAcceptAction = new Action(() =>
+ {
+ dialog.Close();
+ onAccept(context);
+ context.Accepted -= onAcceptAction;
+ });
+
+ Action onCancelAction = null;
+ onCancelAction = new Action(() =>
+ {
+ dialog.Close();
+
+ if (onCancel != null)
+ {
+ onCancel();
+ }
+
+ context.Canceled -= onCancelAction;
+ });
+
+ context.Accepted += onAcceptAction;
+ context.Canceled += onCancelAction;
+
+ context.OnShow();
+ };
+ dialog.ShowDialog();
MainWindow.Instance.shadowGrid.Visibility = Visibility.Hidden;
- return result;
}
- public bool? ShowDialog(PackIconKind icon, Brush iconColor, string message, bool hasCancel)
+ public void ShowModalDialog<VM>(Action<VM> onAccept, Action onCancel) where VM : DialogViewVM
{
- MainWindow.Instance.shadowGrid.Visibility = Visibility.Visible;
+ String viewName = typeof(VM).Name.Replace("VM", "");
- var result = new MessageBoxWindow()
+ if (viewTypes == null)
{
- Owner = Application.Current.MainWindow,
- Message = message,
- IconKind = icon,
- IconColor = iconColor,
- HasCancel = hasCancel
+ viewTypes = AppDomain.CurrentDomain.GetAssemblies().Where(x => x.FullName.Contains("MachineStudio")).SelectMany(x => x.GetTypes()).ToList();
+ }
- }.ShowDialog();
+ var viewType = viewTypes.SingleOrDefault(x => x.Name == viewName);
+
+ if (viewType == null)
+ {
+ throw new NullReferenceException("Could not locate view " + viewName);
+ }
+ var view = Activator.CreateInstance(viewType) as FrameworkElement;
+ DialogWindow dialog = new DialogWindow();
+ dialog.Owner = Application.Current.MainWindow;
+ dialog.InnerContent = view;
+ MainWindow.Instance.shadowGrid.Visibility = Visibility.Visible;
+ view.Loaded += (x, y) =>
+ {
+ VM context = view.DataContext as VM;
+ dialog.DataContext = context;
+
+ Action onAcceptAction = null;
+ onAcceptAction = new Action(() =>
+ {
+ dialog.Close();
+ onAccept(context);
+ context.Accepted -= onAcceptAction;
+ });
+
+ Action onCancelAction = null;
+ onCancelAction = new Action(() =>
+ {
+ dialog.Close();
+
+ if (onCancel != null)
+ {
+ onCancel();
+ }
+
+ context.Canceled -= onCancelAction;
+ });
+
+ context.Accepted += onAcceptAction;
+ context.Canceled += onCancelAction;
+
+ context.OnShow();
+ };
+
+ dialog.ShowDialog();
MainWindow.Instance.shadowGrid.Visibility = Visibility.Hidden;
- return result;
+ }
+
+ public void ShowModalDialog<VM>(Action<VM> onAccept) where VM : DialogViewVM
+ {
+ ShowModalDialog<VM>(onAccept, null);
}
public void ShowError(string message)