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 ShowDialog(TViewModel viewModel, TView view) where TViewModel : IDEDialogViewModel where TView : FrameworkElement { TaskCompletionSource source = new TaskCompletionSource(); 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 ShowDialog(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 ShowDialog() where TViewModel : IDEDialogViewModel { return ShowDialog(Activator.CreateInstance()); } 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 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; } } }