namespace OINA.Extender.WPF.Testharness { using System; using System.Collections.Generic; using System.ComponentModel; using System.Globalization; using System.Windows; using OINA.Extender; using OINA.Extender.MicroscopeControl; /// /// Interaction logic for MicroscopeControlPanel.xaml /// public partial class MicroscopeControlPanel : Window { /// /// IMicroscopeController object /// private IMicroscopeController microscopeController = null; /// /// Interaction logic for MicroscopeControlPanel.xaml /// public MicroscopeControlPanel() { this.InitializeComponent(); this.microscopeController = AcquireFactory.CreateMicroscopeControl(); this.microscopeController.ColumnChange += this.MicroscopeController_ColumnChange; this.microscopeController.StageChange += this.MicroscopeController_StageChange; this.UpdateMicroscopeColumnText(); this.UpdateMicroscopeStageText(); } #region Event handlers /// /// OnMicroscopeColumnChange /// /// sender object /// EventArgs private void MicroscopeController_ColumnChange(object sender, EventArgs e) { this.Dispatcher.BeginInvoke((Action)this.UpdateMicroscopeColumnText); } /// /// OnMicroscopeStageChange /// /// sender object /// EventArgs private void MicroscopeController_StageChange(object sender, EventArgs e) { this.Dispatcher.BeginInvoke((Action)this.UpdateMicroscopeStageText); } #endregion #region Update UI content /// /// UpdateMicroscopeStageText Method /// private void UpdateMicroscopeStageText() { this.gbStage.Header = @"Stage " + this.microscopeController.StageConnectionStatus.Name; if (this.microscopeController.StageCapabilities.StageX.CanRead) { this.lbX.Content = this.microscopeController.StageConditions.StageX.ToString(@"F2", CultureInfo.CurrentCulture); this.tbXvalue.Text = this.microscopeController.StageConditions.StageX.ToString(@"F2", CultureInfo.CurrentCulture); } if (this.microscopeController.StageCapabilities.StageY.CanRead) { this.lbY.Content = this.microscopeController.StageConditions.StageY.ToString(@"F2", CultureInfo.CurrentCulture); this.tbYvalue.Text = this.microscopeController.StageConditions.StageY.ToString(@"F2", CultureInfo.CurrentCulture); } if (this.microscopeController.StageCapabilities.StageZ.CanRead) { this.lbZ.Content = this.microscopeController.StageConditions.StageZ.ToString(@"F2", CultureInfo.CurrentCulture); this.tbZvalue.Text = this.microscopeController.StageConditions.StageZ.ToString(@"F2", CultureInfo.CurrentCulture); } if (this.microscopeController.StageCapabilities.StageT.CanRead) { this.lbT.Content = this.microscopeController.StageConditions.StageT.ToString(@"F2", CultureInfo.CurrentCulture); this.tbTiltvalue.Text = this.microscopeController.StageConditions.StageT.ToString(@"F2", CultureInfo.CurrentCulture); } if (this.microscopeController.StageCapabilities.StageR.CanRead) { this.lbR.Content = this.microscopeController.StageConditions.StageR.ToString(@"F2", CultureInfo.CurrentCulture); this.tbRotateValue.Text = this.microscopeController.StageConditions.StageR.ToString(@"F2", CultureInfo.CurrentCulture); } this.lbBacklashStatus.Content = Convert.ToBoolean(this.microscopeController.StageConditions.BacklashOn).ToString(CultureInfo.CurrentCulture); } /// /// UpdateMicroscopeColumnText Method /// private void UpdateMicroscopeColumnText() { this.gbColumn.Header = @"Column " + this.microscopeController.ColumnConnectionStatus.Name; if (this.microscopeController.ColumnCapabilities.Magnification.CanRead) { this.lbMag.Content = this.microscopeController.ColumnConditions.Magnification.ToString(@"F2", CultureInfo.CurrentCulture); this.tbMagValue.Text = this.microscopeController.ColumnConditions.Magnification.ToString(@"F2", CultureInfo.CurrentCulture); } if (this.microscopeController.ColumnCapabilities.WorkingDistance.CanRead) { this.lbWd.Content = this.microscopeController.ColumnConditions.WorkingDistance.ToString(@"F2", CultureInfo.CurrentCulture); this.tbWorkDistance.Text = this.microscopeController.ColumnConditions.WorkingDistance.ToString(@"F2", CultureInfo.CurrentCulture); } if (this.microscopeController.ColumnCapabilities.HighVoltage.CanRead) { this.lbHv.Content = this.microscopeController.ColumnConditions.HighVoltage.ToString(@"F2", CultureInfo.CurrentCulture); this.tbHvValue.Text = this.microscopeController.ColumnConditions.HighVoltage.ToString(@"F2", CultureInfo.CurrentCulture); } if (this.microscopeController.ColumnCapabilities.BeamOn.CanRead) { this.lbBeamStatus.Content = Convert.ToBoolean(this.microscopeController.ColumnConditions.BeamOn).ToString(CultureInfo.CurrentCulture); } if (this.microscopeController.ColumnCapabilities.FilamentOn.CanRead) { this.lbFilamentStatus.Content = Convert.ToBoolean(this.microscopeController.ColumnConditions.FilamentOn).ToString(CultureInfo.CurrentCulture); } } #endregion #region Control Microscope from UI /// /// Set Stage parameters /// /// sender object /// RoutedEventArgs private void SetStageParameters(object sender, RoutedEventArgs e) { Dictionary stageDictionary = new Dictionary { { Stage.StageX, double.Parse(this.tbXvalue.Text, CultureInfo.CurrentCulture) }, { Stage.StageY, double.Parse(this.tbYvalue.Text, CultureInfo.CurrentCulture) }, { Stage.StageZ, double.Parse(this.tbZvalue.Text, CultureInfo.CurrentCulture) }, { Stage.StageT, double.Parse(this.tbTiltvalue.Text, CultureInfo.CurrentCulture) }, { Stage.StageR, double.Parse(this.tbRotateValue.Text, CultureInfo.CurrentCulture) } }; this.microscopeController.SetStageConditions(stageDictionary); } /// /// Set Column parameters /// /// sender object /// RoutedEventArgs private void SetColumnParameters(object sender, RoutedEventArgs e) { Dictionary columnDictionary = new Dictionary { { Column.Magnification, double.Parse(this.tbMagValue.Text, CultureInfo.CurrentCulture) }, { Column.HighVoltage, double.Parse(this.tbHvValue.Text, CultureInfo.CurrentCulture) }, { Column.WorkingDistance, double.Parse(this.tbWorkDistance.Text, CultureInfo.CurrentCulture) } }; this.microscopeController.SetColumnConditions(columnDictionary); } /// /// Set Magnification value /// /// sender object /// RoutedEventArgs private void SetMagButton_Click(object sender, RoutedEventArgs e) { Dictionary columnDictionary = new Dictionary { { Column.Magnification, double.Parse(this.tbMagValue.Text, CultureInfo.CurrentCulture) } }; this.microscopeController.SetColumnConditions(columnDictionary); } /// /// Set Working Distance value /// /// sender object /// RoutedEventArgs private void SetWdButton_Click(object sender, RoutedEventArgs e) { Dictionary columnDictionary = new Dictionary { { Column.WorkingDistance, double.Parse(this.tbWorkDistance.Text, CultureInfo.CurrentCulture) } }; this.microscopeController.SetColumnConditions(columnDictionary); } /// /// Set High Voltage value /// /// sender object /// RoutedEventArgs private void SetHvButton_Click(object sender, RoutedEventArgs e) { Dictionary columnDictionary = new Dictionary { { Column.HighVoltage, double.Parse(this.tbHvValue.Text, CultureInfo.CurrentCulture) } }; this.microscopeController.SetColumnConditions(columnDictionary); } #endregion /// /// Raises the event. /// /// A that contains the event data. protected override void OnClosing(CancelEventArgs e) { IMicroscopeController currentMicroscopeController = this.microscopeController; if (currentMicroscopeController != null) { // Un-hook events. currentMicroscopeController.ColumnChange -= this.MicroscopeController_ColumnChange; currentMicroscopeController.StageChange -= this.MicroscopeController_StageChange; } base.OnClosing(e); } } }