aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication')
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs53
1 files changed, 53 insertions, 0 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs
new file mode 100644
index 000000000..b95a74a3e
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs
@@ -0,0 +1,53 @@
+using Microsoft.Practices.ServiceLocation;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+using Tango.Core.Helpers;
+using Tango.MachineStudio.Common.StudioApplication;
+using Tango.MachineStudio.Common.Navigation;
+using GalaSoft.MvvmLight.Ioc;
+using System.Reflection;
+using System.Collections;
+
+namespace Tango.MachineStudio.UI.StudioApplication
+{
+ public class DefaultStudioApplicationManager : IStudioApplicationManager
+ {
+ private INavigationManager _navigationManager;
+
+ public DefaultStudioApplicationManager(INavigationManager navigationManager)
+ {
+ _navigationManager = navigationManager;
+ }
+
+ public async void ShutDown()
+ {
+ _navigationManager.NavigateTo(NavigationView.ShutdownView);
+
+ await Task.Factory.StartNew(async () =>
+ {
+
+ //Do Shutdown Procedures...
+ foreach (var vm in ServiceLocator.Current.GetAllInstancesByBase<IShutdownRequestBlocker>())
+ {
+ var result = await vm.OnShutdownRequest();
+ if (!result)
+ {
+ ThreadsHelper.InvokeUI(() =>
+ {
+ _navigationManager.NavigateTo(NavigationView.MainView);
+ });
+ return;
+ }
+ }
+
+ Thread.Sleep(3000);
+ Environment.Exit(0);
+
+ });
+ }
+ }
+}