From d6f46df0e9ccd08276912bcdcded246de0bc4447 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Thu, 15 Mar 2018 12:29:05 +0200 Subject: Implemented virtual machine selection when connecting via USB. --- .../AutoComplete/MachinesProvider.cs | 29 +++++++++ .../Tango.MachineStudio.Common.csproj | 1 + .../Tango.MachineStudio.UI.csproj | 12 ++++ .../ViewModels/MachineSerialViewVM.cs | 32 ++++++++++ .../ViewModels/MainViewVM.cs | 35 +++++++---- .../Views/MachineSerialView.xaml | 73 ++++++++++++++++++++++ .../Views/MachineSerialView.xaml.cs | 28 +++++++++ 7 files changed, 198 insertions(+), 12 deletions(-) create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/AutoComplete/MachinesProvider.cs create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MachineSerialViewVM.cs create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MachineSerialView.xaml create mode 100644 Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MachineSerialView.xaml.cs (limited to 'Software/Visual_Studio/MachineStudio') diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/AutoComplete/MachinesProvider.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/AutoComplete/MachinesProvider.cs new file mode 100644 index 000000000..e486ec79a --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/AutoComplete/MachinesProvider.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.AutoComplete.Editors; +using Tango.BL; +using Tango.BL.Entities; + +namespace Tango.MachineStudio.Common.AutoComplete +{ + /// + /// Represents an auto-complete machines suggestions provider. + /// + /// + public class MachinesProvider : ISuggestionProvider + { + /// + /// Gets the suggestions. + /// + /// The filter. + /// + public IEnumerable GetSuggestions(string filter) + { + return ObservablesEntitiesAdapter.Instance.Machines.Where(x => x.SerialNumber.StartsWith(filter, StringComparison.CurrentCultureIgnoreCase) || x.Name.ToLower().Contains(filter.ToLower())).ToList(); + } + } +} diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj index 529419bd7..7c28cb4c8 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/Tango.MachineStudio.Common.csproj @@ -80,6 +80,7 @@ + HiveColorPickerControl.xaml diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj index 6fc530627..6a879e965 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj @@ -159,6 +159,7 @@ + @@ -176,6 +177,9 @@ MachineLoginView.xaml + + MachineSerialView.xaml + MainView.xaml @@ -238,6 +242,10 @@ Designer MSBuild:Compile + + Designer + MSBuild:Compile + Designer MSBuild:Compile @@ -299,6 +307,10 @@ {b9ae25d6-be35-492f-9079-21a7f3e6f7cc} RealTimeGraphEx + + {bb2abb74-ba58-4812-83aa-ec8171f42df4} + Tango.AutoComplete + {f441feee-322a-4943-b566-110e12fd3b72} Tango.BL diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MachineSerialViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MachineSerialViewVM.cs new file mode 100644 index 000000000..219bd9e63 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MachineSerialViewVM.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Tango.BL; +using Tango.BL.Entities; +using Tango.Core.Commands; +using Tango.MachineStudio.Common.Notifications; +using Tango.Settings; + +namespace Tango.MachineStudio.UI.ViewModels +{ + public class MachineSerialViewVM : DialogViewVM + { + private Machine _selectedMachine; + + public Machine SelectedMachine + { + get { return _selectedMachine; } + set { _selectedMachine = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } + } + + public RelayCommand OKCommand { get; set; } + + public MachineSerialViewVM() + { + OKCommand = new RelayCommand(Accept, () => SelectedMachine != null); + SelectedMachine = ObservablesEntitiesAdapter.Instance.Machines.SingleOrDefault(x => x.SerialNumber == SettingsManager.Default.MachineStudio.LastVirtualMachineSerialNumber); + } + } +} 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 57f1d704c..84c4e2dd3 100644 --- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs @@ -26,6 +26,7 @@ using Tango.MachineStudio.UI.SupervisingController; using Tango.MachineStudio.UI.Views; using Tango.MachineStudio.UI.Windows; using Tango.PMR.Stubs; +using Tango.Settings; using Tango.SharedUI; using Tango.SharedUI.Helpers; using Tango.Transport.Adapters; @@ -333,21 +334,31 @@ namespace Tango.MachineStudio.UI.ViewModels } else { - using (NotificationProvider.PushTaskItem("Connecting to " + x.SelectedMachine.ToString() + "...")) + _notificationProvider.ShowModalDialog(async (vm) => { - try + if (vm.SelectedMachine != null) { - await x.SelectedMachine.Connect(); - ApplicationManager.ConnectedMachine = x.SelectedMachine; - } - catch (Exception ex) - { - logManager.Log(ex); - _notificationProvider.ShowError(ex.Message); - } + using (NotificationProvider.PushTaskItem("Connecting to " + x.SelectedMachine.ToString() + "...")) + { + try + { + await x.SelectedMachine.Connect(); + x.SelectedMachine.SerialNumber = vm.SelectedMachine.SerialNumber; + ApplicationManager.ConnectedMachine = x.SelectedMachine; - InvalidateRelayCommands(); - } + SettingsManager.Default.MachineStudio.LastVirtualMachineSerialNumber = vm.SelectedMachine.SerialNumber; + SettingsManager.SaveDefaultSettings(); + } + catch (Exception ex) + { + logManager.Log(ex); + _notificationProvider.ShowError(ex.Message); + } + + InvalidateRelayCommands(); + } + } + }); } InvalidateRelayCommands(); diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MachineSerialView.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MachineSerialView.xaml new file mode 100644 index 000000000..83a6eece6 --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MachineSerialView.xaml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Connecting directly to a machine's embedded firmware requires the selection of an existing machine from the database in order for machine studio to function properly. + + + Please select a 'virtual machine' by entering the machine serial number + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MachineSerialView.xaml.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MachineSerialView.xaml.cs new file mode 100644 index 000000000..0d6c0413a --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MachineSerialView.xaml.cs @@ -0,0 +1,28 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; + +namespace Tango.MachineStudio.UI.Views +{ + /// + /// Interaction logic for MachineSerialView.xaml + /// + public partial class MachineSerialView : UserControl + { + public MachineSerialView() + { + InitializeComponent(); + } + } +} -- cgit v1.3.1