using System; using System.Collections.Generic; using System.Data.Entity; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL; using Tango.BL.Entities; using Tango.Core.DI; using Tango.FSE.BL; using Tango.FSE.Common; using Tango.FSE.Common.AutoComplete; using Tango.Integration.ExternalBridge; namespace Tango.FSE.UI.Dialogs { /// /// Represents a machine USB connection view model. /// /// public class MachineConnectionUsbViewVM : MachineConnectionBaseViewVM { [TangoInject] protected FSEServicesContainer Services { get; set; } public IExternalBridgeClient Machine { get; set; } /// /// Gets or sets the machines completion source. /// public AutoCompleteSource Machines { get; set; } private Machine _selectedMachine; /// /// Gets or sets the selected virtualized machine. /// public Machine SelectedMachine { get { return _selectedMachine; } set { _selectedMachine = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } } /// /// Initializes a new instance of the class. /// public MachineConnectionUsbViewVM() : base() { TangoIOC.Default.Inject(this); Machines = new AutoCompleteSource(AutoCompleteMachines); } /// /// Gets the machine serial number. /// /// public override string GetMachineSerialNumber() { return SelectedMachine?.SerialNumber; } /// /// Determines whether this instance can invoke the OK command. /// /// protected override bool CanOK() { return SelectedMachine != null; } /// /// Called when the dialog has been shown. /// public async override void OnShow() { base.OnShow(); try { if (Settings.LastVirtualizedMachineSerialNumber != null) { var machine = await Services.MachinesService.GetMachine(Settings.LastVirtualizedMachineSerialNumber); if (SelectedMachine == null) { SelectedMachine = machine; } } } catch (Exception ex) { LogManager.Log(ex, "Error retrieving last virtualized machine."); } if (SelectedMachine == null) { this.SetFocus(() => SelectedMachine); } } /// /// Invokes the event. /// protected override void Accept() { Settings.LastVirtualizedMachineSerialNumber = SelectedMachine.SerialNumber; Settings.Save(); base.Accept(); } private List AutoCompleteMachines(string key) { key = key ?? String.Empty; try { return Services.MachinesService.GetAllMachines().Result.Where(x => x.SerialNumber.ToLower().StartsWith(key)).Take(4).ToList(); } catch (Exception ex) { LogManager.Log(ex, "Error on auto complete virtualized machine filter."); return new List(); } } } }