diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2019-04-10 14:38:10 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2019-04-10 14:38:10 +0300 |
| commit | 4f6dcbb46919167f2478fb70368fcf00ae52b2a8 (patch) | |
| tree | b4b4c80bf903a0bdbb6c3be6bd34fe41f735987b /Software/Visual_Studio/Scripting/Tango.Scripting.IDE/Notifications/DefaultNotificationManager.cs | |
| parent | 3df4879fafbcac567e17a560e727935102f296cd (diff) | |
| parent | 254a8529c649da07f302db8ba1173be2153850e6 (diff) | |
| download | Tango-4f6dcbb46919167f2478fb70368fcf00ae52b2a8.tar.gz Tango-4f6dcbb46919167f2478fb70368fcf00ae52b2a8.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Visual_Studio/Scripting/Tango.Scripting.IDE/Notifications/DefaultNotificationManager.cs')
| -rw-r--r-- | Software/Visual_Studio/Scripting/Tango.Scripting.IDE/Notifications/DefaultNotificationManager.cs | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Scripting/Tango.Scripting.IDE/Notifications/DefaultNotificationManager.cs b/Software/Visual_Studio/Scripting/Tango.Scripting.IDE/Notifications/DefaultNotificationManager.cs new file mode 100644 index 000000000..7121e6ce0 --- /dev/null +++ b/Software/Visual_Studio/Scripting/Tango.Scripting.IDE/Notifications/DefaultNotificationManager.cs @@ -0,0 +1,94 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Media.Imaging; +using Tango.Scripting.IDE.Windows; +using Tango.SharedUI; + +namespace Tango.Scripting.IDE.Notifications +{ + public class DefaultNotificationManager : INotificationManager + { + public Task<TViewModel> ShowDialog<TViewModel, TView>(TViewModel viewModel, TView view) + where TViewModel : IDEDialogViewModel + where TView : FrameworkElement + { + TaskCompletionSource<TViewModel> source = new TaskCompletionSource<TViewModel>(); + + Application.Current.Dispatcher.BeginInvoke(new Action(() => + { + DialogWindow window = new DialogWindow(); + window.Title = viewModel.Title; + window.Content = view; + view.DataContext = viewModel; + window.WindowStartupLocation = WindowStartupLocation.CenterOwner; + window.Owner = Application.Current.MainWindow; + viewModel.Accepted += () => + { + window.Close(); + source.SetResult(viewModel); + }; + viewModel.Canceled += () => + { + window.Close(); + source.SetResult(viewModel); + }; + window.ShowDialog(); + })); + + return source.Task; + } + + public Task<TViewModel> ShowDialog<TViewModel>(TViewModel viewModel) where TViewModel : IDEDialogViewModel + { + var modelName = typeof(TViewModel).Name; + var viewName = modelName.Replace("VM", ""); + var viewType = typeof(TViewModel).Assembly.GetType(typeof(TViewModel).Namespace + "." + viewName); + var view = Activator.CreateInstance(viewType) as FrameworkElement; + return ShowDialog(viewModel, view); + } + + public Task<TViewModel> ShowDialog<TViewModel>() where TViewModel : IDEDialogViewModel + { + return ShowDialog(Activator.CreateInstance<TViewModel>()); + } + + public Task ShowError(string title, string message) + { + throw new NotImplementedException(); + } + + public Task ShowInfo(string title, string message) + { + throw new NotImplementedException(); + } + + public ProgressNotificationHandler ShowProgress(string title, string message, bool canCancel = false) + { + throw new NotImplementedException(); + } + + public Task<bool> ShowQuestion(string title, string message) + { + throw new NotImplementedException(); + } + + public Task ShowSuccess(string title, string message) + { + throw new NotImplementedException(); + } + + public Task ShowWarning(string title, string message) + { + throw new NotImplementedException(); + } + + private Task ShowMessageBox(String title, String message, bool hasCancel, BitmapSource icon) + { + return null; + } + } +} |
