using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Tango.BL.Entities; using Tango.Core.Commands; using Tango.FSE.Common; using Tango.FSE.MachineConfiguration.Navigation; namespace Tango.FSE.MachineConfiguration.ViewModels { public class SelectionViewVM : ConfigurationViewModel { private Machine _selectedMachine; /// /// Gets or sets the selected machine. /// public Machine SelectedMachine { get { return _selectedMachine; } set { _selectedMachine = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); OnSelectedMachineChanged(); } } public RelayCommand ManageMachineCommand { get; set; } public SelectionViewVM() { ManageMachineCommand = new RelayCommand(ManageSelectedMachine, () => SelectedMachine != null); } private async void OnSelectedMachineChanged() { if (SelectedMachine != null) { await Task.Delay(100); this.SetFocus(() => ManageMachineCommand); } } private void ManageSelectedMachine() { if (SelectedMachine == null) { NotificationProvider.ShowError("No machine selected."); return; } ModularNavigationManager.NavigateTo(ConfigurationView.MachineView, new MachineViewVM.NavigationObject() { MachineGuid = SelectedMachine.Guid }, true); } public override void OnNavigatedTo() { base.OnNavigatedTo(); if (SelectedMachine == null && MachineProvider.Machine != null) { SelectedMachine = MachineProvider.Machine; } } public override Task OnApplicationLogout() { ModularNavigationManager.NavigateTo(ConfigurationView.SelectionView); SelectedMachine = null; return base.OnApplicationLogout(); } } }