aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.IDE/Notifications
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2019-04-08 00:45:08 +0300
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2019-04-08 00:45:08 +0300
commit1608e69a417bc5e40a607c3958c4a60f19f66f1a (patch)
treec04d78e2abb5aac8c22350c90cb8b469f6eca30d /Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.IDE/Notifications
parent08dd6000fe3a218221003876a699f448835b62e4 (diff)
parentb4a71931ea52636c6b36376aa9d71697ccf73524 (diff)
downloadTango-1608e69a417bc5e40a607c3958c4a60f19f66f1a.tar.gz
Tango-1608e69a417bc5e40a607c3958c4a60f19f66f1a.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.IDE/Notifications')
-rw-r--r--Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.IDE/Notifications/DefaultNotificationManager.cs94
-rw-r--r--Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.IDE/Notifications/INotificationManager.cs95
-rw-r--r--Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.IDE/Notifications/ProgressNotificationHandler.cs23
3 files changed, 212 insertions, 0 deletions
diff --git a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.IDE/Notifications/DefaultNotificationManager.cs b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.IDE/Notifications/DefaultNotificationManager.cs
new file mode 100644
index 000000000..7121e6ce0
--- /dev/null
+++ b/Software/Visual_Studio/TEMP/Tango.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;
+ }
+ }
+}
diff --git a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.IDE/Notifications/INotificationManager.cs b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.IDE/Notifications/INotificationManager.cs
new file mode 100644
index 000000000..1ed516b28
--- /dev/null
+++ b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.IDE/Notifications/INotificationManager.cs
@@ -0,0 +1,95 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using Tango.SharedUI;
+
+namespace Tango.Scripting.IDE.Notifications
+{
+ /// <summary>
+ /// Represents the IDE notification manager.
+ /// </summary>
+ public interface INotificationManager
+ {
+ /// <summary>
+ /// Displays the specified TView as a dialog and TViewModel as it's data context.
+ /// </summary>
+ /// <typeparam name="TViewModel">The type of the view model.</typeparam>
+ /// <typeparam name="TView">The type of the view.</typeparam>
+ /// <param name="viewModel">The view model.</param>
+ /// <param name="view">The view.</param>
+ /// <returns></returns>
+ Task<TViewModel> ShowDialog<TViewModel, TView>(TViewModel viewModel, TView view) where TViewModel : IDEDialogViewModel where TView : FrameworkElement;
+
+ /// <summary>
+ /// Finds (by convention )the appropriate view by the specified TViewModel name.
+ /// The search pattern is ViewVM - VM + View.
+ /// </summary>
+ /// <typeparam name="TViewModel">The type of the view model.</typeparam>
+ /// <param name="viewModel">The view model.</param>
+ /// <returns></returns>
+ Task<TViewModel> ShowDialog<TViewModel>(TViewModel viewModel) where TViewModel : IDEDialogViewModel;
+
+ /// <summary>
+ /// Finds (by convention )the appropriate view by the specified TViewModel name.
+ /// The search pattern is ViewVM - VM + View.
+ /// The view model instance will be created automatically and must contain a parameterless constructor.
+ /// </summary>
+ /// <typeparam name="TViewModel">The type of the view model.</typeparam>
+ /// <param name="viewModel">The view model.</param>
+ /// <returns></returns>
+ Task<TViewModel> ShowDialog<TViewModel>() where TViewModel : IDEDialogViewModel;
+
+ /// <summary>
+ /// Displays an error message.
+ /// </summary>
+ /// <param name="title">The title.</param>
+ /// <param name="message">The message.</param>
+ /// <returns></returns>
+ Task ShowError(String title, String message);
+
+ /// <summary>
+ /// Displays an error message.
+ /// </summary>
+ /// <param name="title">The title.</param>
+ /// <param name="message">The message.</param>
+ /// <returns></returns>
+ Task ShowInfo(String title, String message);
+
+ /// <summary>
+ /// Displays a warning message.
+ /// </summary>
+ /// <param name="title">The title.</param>
+ /// <param name="message">The message.</param>
+ /// <returns></returns>
+ Task ShowWarning(String title, String message);
+
+ /// <summary>
+ /// Displays a positive message.
+ /// </summary>
+ /// <param name="title">The title.</param>
+ /// <param name="message">The message.</param>
+ /// <returns></returns>
+ Task ShowSuccess(String title, String message);
+
+ /// <summary>
+ /// Displays a question and returns the result.
+ /// </summary>
+ /// <param name="title">The title.</param>
+ /// <param name="message">The message.</param>
+ /// <returns></returns>
+ Task<bool> ShowQuestion(String title, String message);
+
+ /// <summary>
+ /// Displays an intermediate progress dialog and returns an instance of <see cref="ProgressNotificationHandler"/>.
+ /// Once the progress notification handler will be disposed the dialog will close.
+ /// </summary>
+ /// <param name="title">The title.</param>
+ /// <param name="message">The message.</param>
+ /// <param name="canCancel">if set to <c>true</c> the dialog will contain a cancel button.</param>
+ /// <returns></returns>
+ ProgressNotificationHandler ShowProgress(String title, String message, bool canCancel = false);
+ }
+}
diff --git a/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.IDE/Notifications/ProgressNotificationHandler.cs b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.IDE/Notifications/ProgressNotificationHandler.cs
new file mode 100644
index 000000000..b36419400
--- /dev/null
+++ b/Software/Visual_Studio/TEMP/Tango.Scripting/Tango.Scripting.IDE/Notifications/ProgressNotificationHandler.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace Tango.Scripting.IDE.Notifications
+{
+ public class ProgressNotificationHandler : IDisposable
+ {
+ private Action _disposeAction;
+
+ public ProgressNotificationHandler(Action disposeAction)
+ {
+ _disposeAction = disposeAction;
+ }
+
+ public void Dispose()
+ {
+ _disposeAction?.Invoke();
+ }
+ }
+}