1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
|
using MaterialDesignThemes.Wpf;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Media;
using Tango.SharedUI;
namespace Tango.MachineStudio.Common.Notifications
{
/// <summary>
/// Represents the Machine Studio user notification provider responsible for displaying information, alerts and dialogs to the user.
/// </summary>
public interface INotificationProvider
{
/// <summary>
/// Gets the collection of active task items.
/// </summary>
ObservableCollection<TaskItem> TaskItems { get; }
/// <summary>
/// Gets the collection of active bar items.
/// </summary>
ObservableCollection<BarItem> BarItems { get; }
/// <summary>
/// Gets the current displayed task item.
/// </summary>
TaskItem CurrentTaskItem { get; }
/// <summary>
/// Gets a value indicating whether there are any queued task items.
/// </summary>
bool HasTaskItems { get; }
/// <summary>
/// Pushes the specified task item to the queue.
/// </summary>
/// <param name="taskItem">The task item.</param>
void PushTaskItem(TaskItem taskItem);
/// <summary>
/// Create and push a new task item from the specified message.
/// </summary>
/// <param name="message">The message.</param>
/// <returns></returns>
TaskItem PushTaskItem(String message);
/// <summary>
/// Creates and push a new bar item from the specified framework element.
/// </summary>
/// <param name="element">The element.</param>
/// <returns></returns>
BarItem PushBarItem(FrameworkElement element);
/// <summary>
/// Pushes the specified bar item.
/// </summary>
/// <param name="barItem">The bar item.</param>
/// <returns></returns>
BarItem PushBarItem(BarItem barItem);
/// <summary>
/// Removed the specified task item from the queue.
/// </summary>
/// <param name="taskItem">The task item.</param>
void PopTaskItem(TaskItem taskItem);
/// <summary>
/// Removed the specified bar item.
/// </summary>
/// <param name="barItem">The bar item.</param>
void PopBarItem(BarItem barItem);
/// <summary>
/// Creates a new instance of the specified View type and displays it as a modal dialog.
/// </summary>
/// <typeparam name="View">The type of the view.</typeparam>
/// <typeparam name="VM">The type of the view model.</typeparam>
/// <param name="onAccept">Accept button callback.</param>
/// <param name="onCancel">Cancel button callback.</param>
void ShowModalDialog<View, VM>(Action<VM> onAccept, Action onCancel) where View : FrameworkElement where VM : DialogViewVM;
/// <summary>
/// Creates a new view by a naming convention of the specified view model type.
/// </summary>
/// <typeparam name="VM">The type of the view model.</typeparam>
/// <param name="onAccept">Accept button callback.</param>
/// <param name="onCancel">Cancel button callback.</param>
void ShowModalDialog<VM>(Action<VM> onAccept, Action onCancel) where VM : DialogViewVM;
/// <summary>
/// Shows the specified view with the specified view model as it's data context.
/// </summary>
/// <typeparam name="VM">The type of the mm.</typeparam>
/// <typeparam name="View">The type of the view.</typeparam>
/// <param name="vm">The view model.</param>
/// <param name="onAccept">The accept action.</param>
/// <param name="onCancel">The cancel action.</param>
void ShowModalDialog<VM, View>(VM vm, Action<VM> onAccept, Action onCancel) where View : FrameworkElement where VM : DialogViewVM;
/// <summary>
/// Shows the specified view with the specified view model as it's data context.
/// </summary>
/// <typeparam name="VM">The type of the mm.</typeparam>
/// <typeparam name="View">The type of the view.</typeparam>
/// <param name="vm">The view model.</param>
/// <param name="view">The view.</param>
/// <param name="onAccept">The accept action.</param>
/// <param name="onCancel">The cancel action.</param>
void ShowModalDialog<VM, View>(VM vm, View view, Action<VM> onAccept, Action onCancel) where View : FrameworkElement where VM : DialogViewVM;
/// <summary>
/// Creates a new view by a naming convention of the specified view model type.
/// </summary>
/// <typeparam name="VM">The type of the view model.</typeparam>
/// <param name="onAccept">Accept button callback.</param>
void ShowModalDialog<VM>(Action<VM> onAccept) where VM : DialogViewVM;
/// <summary>
/// Display a message box.
/// </summary>
/// <param name="icon">The icon.</param>
/// <param name="iconColor">Color of the icon.</param>
/// <param name="message">The message.</param>
/// <param name="hasCancel">if set to <c>true</c> displays the cancel button.</param>
/// <returns></returns>
bool? ShowMessageBox(PackIconKind icon, Brush iconColor, String message, bool hasCancel);
/// <summary>
/// Shows an information message box.
/// </summary>
/// <param name="message">The message.</param>
void ShowInfo(String message);
/// <summary>
/// Shows warning message box.
/// </summary>
/// <param name="message">The message.</param>
void ShowWarning(String message);
/// <summary>
/// Shows an error message box.
/// </summary>
/// <param name="message">The message.</param>
void ShowError(String message);
/// <summary>
/// Shows a question message box.
/// </summary>
/// <param name="message">The message.</param>
bool ShowQuestion(String message);
/// <summary>
/// Shows a question message box with an error icon.
/// </summary>
/// <param name="message">The message.</param>
bool ShowErrorQuestion(String message);
/// <summary>
/// Shows a dialog with a text input field and returns the response.
/// </summary>
/// <param name="message">The message.</param>
/// <param name="hint">Text field hint.</param>
/// <param name="defaultResponse">Optional default response.</param>
/// <returns></returns>
String ShowTextInput(String message, String hint, String defaultResponse = null);
}
}
|