aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-10-24 16:18:39 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-10-24 16:18:39 +0300
commit1e24679bf65e42e5df96113bd1eef371036f0940 (patch)
treebb954219f7f5ec0f6e37631cae2c6aa0ac9d184b /Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI
parenta4f4b3be2917b13667217cf826c21e8bd644a8c4 (diff)
downloadTango-1e24679bf65e42e5df96113bd1eef371036f0940.tar.gz
Tango-1e24679bf65e42e5df96113bd1eef371036f0940.zip
Implemented job resume!!
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI')
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Modules/DefaultStudioModuleLoader.cs5
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Navigation/DefaultNavigationManager.cs12
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Notifications/DefaultNotificationProvider.cs38
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs17
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MainView.xaml20
6 files changed, 77 insertions, 17 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Modules/DefaultStudioModuleLoader.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Modules/DefaultStudioModuleLoader.cs
index 0def3c943..28f56e521 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Modules/DefaultStudioModuleLoader.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Modules/DefaultStudioModuleLoader.cs
@@ -44,7 +44,10 @@ namespace Tango.MachineStudio.UI.Modules
/// <param name="e">The e.</param>
private void _authenticationProvider_CurrentUserChanged(object sender, User e)
{
- LoadModules();
+ if (e != null)
+ {
+ LoadModules();
+ }
}
private SynchronizedObservableCollection<IStudioModule> _allModules;
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Navigation/DefaultNavigationManager.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Navigation/DefaultNavigationManager.cs
index 899ba846e..13ec6161d 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Navigation/DefaultNavigationManager.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Navigation/DefaultNavigationManager.cs
@@ -5,6 +5,7 @@ using System.Text;
using System.Threading.Tasks;
using Tango.Core;
using Tango.Core.Commands;
+using Tango.Core.DI;
using Tango.MachineStudio.Common;
using Tango.MachineStudio.Common.Modules;
using Tango.MachineStudio.Common.Navigation;
@@ -384,5 +385,16 @@ namespace Tango.MachineStudio.UI.Navigation
RaisePropertyChanged(nameof(CanNavigateBack));
}
+
+ public void NavigateToModule<T>() where T : IStudioModule
+ {
+ var loader = TangoIOC.Default.GetInstance<IStudioModuleLoader>();
+ var module = loader.UserModules.SingleOrDefault(x => x.GetType() == typeof(T));
+
+ if (module != null)
+ {
+ TangoIOC.Default.GetInstance<ViewModels.MainViewVM>().StartModule(module);
+ }
+ }
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Notifications/DefaultNotificationProvider.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Notifications/DefaultNotificationProvider.cs
index 6cff1ba17..80509e6c0 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Notifications/DefaultNotificationProvider.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Notifications/DefaultNotificationProvider.cs
@@ -11,6 +11,7 @@ using System.Windows.Media;
using Tango.Core;
using System.Collections.ObjectModel;
using Tango.SharedUI;
+using System.Collections.Concurrent;
namespace Tango.MachineStudio.UI.Notifications
{
@@ -21,6 +22,8 @@ namespace Tango.MachineStudio.UI.Notifications
/// <seealso cref="Tango.MachineStudio.Common.Notifications.INotificationProvider" />
public class DefaultNotificationProvider : ExtendedObject, INotificationProvider
{
+ private int _message_count = 0;
+
/// <summary>
/// The view types
/// </summary>
@@ -79,6 +82,8 @@ namespace Tango.MachineStudio.UI.Notifications
{
MainWindow.Instance.shadowGrid.Visibility = Visibility.Visible;
+ _message_count++;
+
var result = new MessageBoxWindow()
{
Owner = Application.Current.MainWindow,
@@ -89,7 +94,13 @@ namespace Tango.MachineStudio.UI.Notifications
}.ShowDialog();
- MainWindow.Instance.shadowGrid.Visibility = Visibility.Hidden;
+ _message_count--;
+
+ if (_message_count == 0)
+ {
+ MainWindow.Instance.shadowGrid.Visibility = Visibility.Hidden;
+ }
+
return result;
}
@@ -377,8 +388,11 @@ namespace Tango.MachineStudio.UI.Notifications
/// <param name="taskItem">The task item.</param>
public void PushTaskItem(TaskItem taskItem)
{
- TaskItems.Add(taskItem);
- CurrentTaskItem = taskItem;
+ InvokeUI(() =>
+ {
+ TaskItems.Add(taskItem);
+ CurrentTaskItem = taskItem;
+ });
}
/// <summary>
@@ -400,14 +414,20 @@ namespace Tango.MachineStudio.UI.Notifications
/// <param name="taskItem">The task item.</param>
public void PopTaskItem(TaskItem taskItem)
{
- TaskItems.Remove(taskItem);
-
- if (TaskItems.Count > 0)
+ Task.Delay(1000).ContinueWith((x) =>
{
- CurrentTaskItem = TaskItems.Last();
- }
+ InvokeUI(() =>
+ {
+ TaskItems.Remove(taskItem);
- RaisePropertyChanged(nameof(HasTaskItems));
+ if (TaskItems.Count > 0)
+ {
+ CurrentTaskItem = TaskItems.Last();
+ }
+
+ RaisePropertyChanged(nameof(HasTaskItems));
+ });
+ });
}
/// <summary>
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs
index 8be7f486a..3864708fc 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/StudioApplication/DefaultStudioApplicationManager.cs
@@ -25,6 +25,7 @@ using Tango.MachineStudio.UI.ViewModels;
using Tango.MachineStudio.Common.Notifications;
using Tango.MachineStudio.UI.Views;
using Tango.Integration.Operation;
+using Tango.MachineStudio.UI.Windows;
namespace Tango.MachineStudio.UI.StudioApplication
{
@@ -39,6 +40,7 @@ namespace Tango.MachineStudio.UI.StudioApplication
private IStudioModuleLoader _moduleLoader;
private INotificationProvider _notification;
private List<Window> _openedWindows;
+ private List<IStudioViewModel> _notified_view_models;
/// <summary>
/// Initializes a new instance of the <see cref="DefaultStudioApplicationManager" /> class.
@@ -50,6 +52,7 @@ namespace Tango.MachineStudio.UI.StudioApplication
_navigationManager = navigationManager;
_notification = notification;
_openedWindows = new List<Window>();
+ _notified_view_models = new List<IStudioViewModel>();
Application.Current.MainWindow.ContentRendered += (_, __) =>
{
@@ -286,6 +289,11 @@ namespace Tango.MachineStudio.UI.StudioApplication
window.Closed += (x, y) => { _openedWindows.Remove(window); };
}
+ public bool IsModuleInNewWindow(IStudioModule module)
+ {
+ return _openedWindows.Exists(x => (x as ModuleWindow).ModuleContext.Module == module);
+ }
+
/// <summary>
/// Gets the core libraries version.
/// </summary>
@@ -324,7 +332,14 @@ namespace Tango.MachineStudio.UI.StudioApplication
/// </summary>
public void NotifyApplicationReady()
{
- TangoIOC.Default.GetAllInstancesByBase<IStudioViewModel>().ToList().ForEach(x => x.OnApplicationReady());
+ TangoIOC.Default.GetAllInstancesByBase<IStudioViewModel>().ToList().ForEach(x =>
+ {
+ if (!_notified_view_models.Contains(x))
+ {
+ x.OnApplicationReady();
+ _notified_view_models.Add(x);
+ }
+ });
}
/// <summary>
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
index 9b625a6ee..31e297cd1 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
@@ -649,6 +649,8 @@ namespace Tango.MachineStudio.UI.ViewModels
{
IsMenuOpened = false;
+ if ((_applicationManager as DefaultStudioApplicationManager).IsModuleInNewWindow(module)) return;
+
if (module != null)
{
LogManager.Log(String.Format("Starting module '{0}'...", module.Name));
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MainView.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MainView.xaml
index 7edfa50c6..f66e247a9 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MainView.xaml
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MainView.xaml
@@ -467,7 +467,7 @@
</Grid>
</Grid>
- <Border HorizontalAlignment="Right" Margin="0 -1 10 0" VerticalAlignment="Top" Width="300" Height="40" Padding="5" CornerRadius="0 0 30 30" BorderThickness="1 0 1 1" BorderBrush="DimGray">
+ <Border HorizontalAlignment="Right" Margin="0 -1 10 0" VerticalAlignment="Top" Width="300" Height="Auto" CornerRadius="0 0 30 30" BorderThickness="1 0 1 1" BorderBrush="DimGray">
<Border.Style>
<Style TargetType="Border">
<Setter Property="RenderTransform">
@@ -487,7 +487,7 @@
<DataTrigger.ExitActions>
<BeginStoryboard HandoffBehavior="Compose">
<Storyboard>
- <DoubleAnimation BeginTime="00:00:02" FillBehavior="HoldEnd" Storyboard.TargetProperty="RenderTransform.ScaleY" To="0" From="1" Duration="00:00:0.5"></DoubleAnimation>
+ <DoubleAnimation FillBehavior="HoldEnd" Storyboard.TargetProperty="RenderTransform.ScaleY" To="0" From="1" Duration="00:00:0.5"></DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</DataTrigger.ExitActions>
@@ -502,10 +502,18 @@
</LinearGradientBrush>
</Border.Background>
- <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="20 0 0 0">
- <mahapps:ProgressRing Width="24" Height="24" Foreground="White"></mahapps:ProgressRing>
- <TextBlock Text="{Binding NotificationProvider.CurrentTaskItem.Message,Converter={StaticResource StringEllipsisConverter},ConverterParameter=35}" Foreground="White" VerticalAlignment="Center" Margin="10 0 0 0" TextWrapping="Wrap"></TextBlock>
- </StackPanel>
+ <ItemsControl ItemsSource="{Binding NotificationProvider.TaskItems}">
+ <ItemsControl.ItemTemplate>
+ <DataTemplate>
+ <Border Margin="5">
+ <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="20 0 0 0">
+ <mahapps:ProgressRing Width="24" Height="24" Foreground="White"></mahapps:ProgressRing>
+ <TextBlock Text="{Binding Message,Converter={StaticResource StringEllipsisConverter},ConverterParameter=35}" Foreground="White" VerticalAlignment="Center" Margin="10 0 0 0" TextWrapping="Wrap"></TextBlock>
+ </StackPanel>
+ </Border>
+ </DataTemplate>
+ </ItemsControl.ItemTemplate>
+ </ItemsControl>
</Border>
<Grid HorizontalAlignment="Right" VerticalAlignment="Top" Margin="10" Visibility="{Binding IsMachineErrorsOpened,Converter={StaticResource BooleanToVisibilityConverter}}">