// Copyright (c) 2020 LG Electronics Inc. // SPDX-License-Identifier: LicenseRef-LGE-Proprietary using Aurora; using System.Windows; using System.Windows.Controls; using System.Windows.Input; namespace AuroraMotor.Views { public partial class UCAuroraMotor : UserControl { public static readonly DependencyProperty SelectedMotorProperty = DependencyProperty.Register( nameof(SelectedMotor), typeof(AuroraMotorBase), typeof(UCAuroraMotor), new FrameworkPropertyMetadata( (d, e) => (d as UCAuroraMotor).SelectedMotorChanged(e) ) ); UCAuroraMotorViewModel ViewModel { get; } public AuroraMotorBase SelectedMotor { get => GetValue(SelectedMotorProperty) as AuroraMotorBase; set => SetValue(SelectedMotorProperty, value); } public UCAuroraMotor() { ViewModel = new UCAuroraMotorViewModel( Application.Current.AuroraEnv().EventObservable ); InitializeComponent(); DataContext = ViewModel; } void SelectedMotorChanged( DependencyPropertyChangedEventArgs e) { ViewModel.SelectedMotor = SelectedMotor; } void ExecuteJogCommand( object sender, string commandProperty, object param = null) { (sender as UIElement).Focus(); var cmd = DataContext .GetType() .GetProperty(commandProperty) .GetValue(DataContext) as ICommand; cmd.Execute(param); } private void OnJogPositivePressed( object sender, System.Windows.Input.MouseButtonEventArgs e) { ExecuteJogCommand(sender, "CMD_JogPositive"); e.Handled = true; } private void OnJogNegativePressed( object sender, System.Windows.Input.MouseButtonEventArgs e) { ExecuteJogCommand(sender, "CMD_JogNegative"); e.Handled = true; } private void OnJogStop( object sender, System.Windows.Input.MouseButtonEventArgs e) { ExecuteJogCommand(sender, "CMD_Stop"); e.Handled = true; } } }