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);
}
}
}