123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397 |
- namespace OINA.Extender.WPF.Testharness
- {
- using System;
- using System.ComponentModel;
- using System.Globalization;
- using System.Windows;
- using OINA.Extender.DetectorControl;
- /// <summary>
- /// Interaction logic for DetectorControlPanel.xaml
- /// </summary>
- public partial class DetectorControlPanel : Window
- {
- /// <summary>
- /// IEdDetectorControl object
- /// </summary>
- private IEdDetectorControl currentDetector;
- /// <summary>
- /// Detector Control Panel constructor
- /// </summary>
- /// <param name="currentDetector">current detector</param>
- public DetectorControlPanel(IEdDetectorControl currentDetector)
- {
- this.InitializeComponent();
- if (currentDetector != null)
- {
- this.currentDetector = currentDetector;
- this.currentDetector.ThermalControl.StatusChanged += this.ThermalControl_StatusChanged;
- this.currentDetector.OverloadControl.StatusChanged += this.OverloadControl_StatusChanged;
- if (this.currentDetector.ShutterControl != null)
- {
- this.currentDetector.ShutterControl.StatusChanged += this.ShutterControl_StatusChanged;
- this.UpdateShutterStatusText();
- this.shutterControlGroup.Visibility = Visibility.Visible;
- }
- else
- {
- this.shutterControlGroup.Visibility = Visibility.Collapsed;
- }
- this.currentDetector.SlideControl.StatusChanged += this.SlideControl_StatusChanged;
- this.UpdateDetectorStatusText();
- this.UpdateOverloadStatusText();
- this.UpdateSlideStatusText();
- this.UpdateThermalStatusText();
- this.tbDelayValue.Text = this.currentDetector.OverloadControl.Status.OverloadDelay.ToString(@"F2", CultureInfo.CurrentCulture);
- this.tbThresholdValue.Text = this.currentDetector.OverloadControl.Status.OverloadThreshold.ToString(@"F2", CultureInfo.CurrentCulture);
- }
- }
- #region Event Handlers
- /// <summary>
- /// OnThermalControlStatusChanged
- /// </summary>
- /// <param name="sender">sender object</param>
- /// <param name="e">EventArgs</param>
- private void ThermalControl_StatusChanged(object sender, EventArgs e)
- {
- this.Dispatcher.BeginInvoke((Action)this.UpdateThermalStatusText);
- }
- /// <summary>
- /// OnOverloadControlStatusChanged
- /// </summary>
- /// <param name="sender">sender object</param>
- /// <param name="e">EventArgs</param>
- private void OverloadControl_StatusChanged(object sender, EventArgs e)
- {
- this.Dispatcher.BeginInvoke((Action)this.UpdateOverloadStatusText);
- }
- /// <summary>
- /// OnShutterControlStatusChanged
- /// </summary>
- /// <param name="sender">sender object</param>
- /// <param name="e">EventArgs</param>
- private void ShutterControl_StatusChanged(object sender, EventArgs e)
- {
- this.Dispatcher.BeginInvoke((Action)this.UpdateShutterStatusText);
- }
- /// <summary>
- /// OnSlideControlStatusChanged
- /// </summary>
- /// <param name="sender">sender object</param>
- /// <param name="e">EventArgs</param>
- private void SlideControl_StatusChanged(object sender, EventArgs e)
- {
- this.Dispatcher.BeginInvoke((Action)this.UpdateSlideStatusText);
- }
- #endregion
- #region Update UI content
- /// <summary>
- /// UpdateDetectorStatusText Method
- /// Gets and updates the UI with the detector status information
- /// </summary>
- private void UpdateDetectorStatusText()
- {
- this.lbDetectorStatus.Content = this.currentDetector.DetectorStatus.IsDetectorReady.ToString(CultureInfo.CurrentCulture);
- this.tbDetectorDescription.Text = this.currentDetector.DetectorStatus.StatusDescription;
- }
- /// <summary>
- /// UpdatePositionText Method
- /// Gets and updates the UI with the detectors slide status.
- /// </summary>
- private void UpdateSlideStatusText()
- {
- switch (this.currentDetector.SlideControl.Status.PositionState)
- {
- case DetectorSlidePositionState.In:
- this.lbSlidePosition.Content = @"Fully Inserted";
- break;
- case DetectorSlidePositionState.Out:
- this.lbSlidePosition.Content = @"Fully Retracted";
- break;
- case DetectorSlidePositionState.Indeterminate:
- this.lbSlidePosition.Content = @"Indeterminate Position";
- break;
- default:
- this.lbSlidePosition.Content = @"Unknown";
- break;
- }
- switch (this.currentDetector.SlideControl.Status.Activity)
- {
- case DetectorSlideActivity.NotMoving:
- this.lbSlideActivity.Content = @"Not Moving";
- break;
- case DetectorSlideActivity.MovingIn:
- this.lbSlideActivity.Content = @"Moving In";
- break;
- case DetectorSlideActivity.MovingOut:
- this.lbSlideActivity.Content = @"Moving Out";
- break;
- case DetectorSlideActivity.AutoRetracting:
- this.lbSlideActivity.Content = @"Auto Retracting";
- break;
- default:
- this.lbSlideActivity.Content = @"Unknown";
- break;
- }
- this.UpdateDetectorStatusText();
- }
- /// <summary>
- /// UpdateShutterStatusText Method
- /// Gets and updates the UI with the detectors shutter status.
- /// </summary>
- private void UpdateShutterStatusText()
- {
- if (this.currentDetector.ShutterControl.Status.Enabled)
- {
- switch (this.currentDetector.ShutterControl.Status.State)
- {
- case DetectorShutterState.Closed:
- this.lbShutterStatus.Content = @"Closed";
- break;
- case DetectorShutterState.Open:
- this.lbShutterStatus.Content = @"Open";
- break;
- case DetectorShutterState.Fault:
- this.lbShutterStatus.Content = @"Fault";
- break;
- case DetectorShutterState.ClosedDueToOverload:
- this.lbShutterStatus.Content = @"Closed due to overload";
- break;
- default:
- this.lbShutterStatus.Content = @"Unknown";
- break;
- }
- }
- this.UpdateDetectorStatusText();
- }
- /// <summary>
- /// UpdateOverloadStatusText Method
- /// Gets and updates the UI with the detectors overload status.
- /// </summary>
- private void UpdateOverloadStatusText()
- {
- if (this.currentDetector.OverloadControl.Status.OverloadDetectionEnabled)
- {
- this.lbOverloadProtection.Content = @"Enabled";
- }
- else
- {
- this.lbOverloadProtection.Content = @"Disabled";
- }
- this.lbOverloadDelay.Content = this.currentDetector.OverloadControl.Status.OverloadDelay.ToString(@"F2", CultureInfo.CurrentCulture);
- this.lbOverloadThreshold.Content = this.currentDetector.OverloadControl.Status.OverloadThreshold.ToString(@"F2", CultureInfo.CurrentCulture);
- switch (this.currentDetector.OverloadControl.Status.LowMagInterlock)
- {
- case LowMagInterlock.Enabled:
- this.lbInterlockStatus.Content = @"Enabled";
- break;
- case LowMagInterlock.Disabled:
- this.lbInterlockStatus.Content = @"Disabled";
- break;
- case LowMagInterlock.Unknown:
- default:
- this.lbInterlockStatus.Content = @"Unknown";
- break;
- }
- this.UpdateDetectorStatusText();
- }
- /// <summary>
- /// UpdateOperatingStatusText Method
- /// Gets and updates the UI with the detectors Thermal status.
- /// </summary>
- private void UpdateThermalStatusText()
- {
- this.lbOperatingStatus.Content = this.currentDetector.ThermalControl.Status.OperatingState.ToString();
- this.UpdateDetectorStatusText();
- }
- #endregion
- #region Control Detector from UI
- /// <summary>
- /// In button click handler
- /// </summary>
- /// <param name="sender">sender object</param>
- /// <param name="e">RoutedEventArgs</param>
- private void MoveIn(object sender, RoutedEventArgs e)
- {
- if (this.currentDetector.SlideControl.CanDriveIn())
- {
- this.currentDetector.SlideControl.DriveIn();
- }
- }
- /// <summary>
- /// Out button click handler
- /// </summary>
- /// <param name="sender">sender object</param>
- /// <param name="e">RoutedEventArgs</param>
- private void MoveOut(object sender, RoutedEventArgs e)
- {
- if (this.currentDetector.SlideControl.CanDriveOut())
- {
- this.currentDetector.SlideControl.DriveOut();
- }
- }
- /// <summary>
- /// Stop button click handler
- /// </summary>
- /// <param name="sender">sender object</param>
- /// <param name="e">RoutedEventArgs</param>
- private void MoveStop(object sender, RoutedEventArgs e)
- {
- if (this.currentDetector.SlideControl.CanStop())
- {
- this.currentDetector.SlideControl.Stop();
- }
- }
- /// <summary>
- /// Operate button click handler
- /// </summary>
- /// <param name="sender">sender object</param>
- /// <param name="e">RoutedEventArgs</param>
- private void Operate_Click(object sender, RoutedEventArgs e)
- {
- if (this.currentDetector.ThermalControl.CanEnterAutomaticMode())
- {
- this.currentDetector.ThermalControl.EnterAutomaticMode();
- }
- }
- /// <summary>
- /// Standby button click handler
- /// </summary>
- /// <param name="sender">sender object</param>
- /// <param name="e">RoutedEventArgs</param>
- private void Standby_Click(object sender, RoutedEventArgs e)
- {
- if (this.currentDetector.ThermalControl.CanEnterStandbyMode())
- {
- this.currentDetector.ThermalControl.EnterStandbyMode();
- }
- }
- /// <summary>
- /// Open button click handler
- /// </summary>
- /// <param name="sender">sender object</param>
- /// <param name="e">RoutedEventArgs</param>
- private void Open_Click(object sender, RoutedEventArgs e)
- {
- if (this.currentDetector.ShutterControl.CanOpenShutter())
- {
- this.currentDetector.ShutterControl.OpenShutter();
- }
- }
- /// <summary>
- /// Close button click handler
- /// </summary>
- /// <param name="sender">sender object</param>
- /// <param name="e">RoutedEventArgs</param>
- private void Close_Click(object sender, RoutedEventArgs e)
- {
- if (this.currentDetector.ShutterControl.CanCloseShutter())
- {
- this.currentDetector.ShutterControl.CloseShutter();
- }
- }
- /// <summary>
- /// Toggle Overload Protection button click handler
- /// </summary>
- /// <param name="sender">sender object</param>
- /// <param name="e">RoutedEventArgs</param>
- private void ToggleOverloadProtection_Click(object sender, RoutedEventArgs e)
- {
- if (this.currentDetector.OverloadControl.CanToggleOverloadDetection())
- {
- if (!this.currentDetector.OverloadControl.Status.OverloadDetectionEnabled)
- {
- this.currentDetector.OverloadControl.ToggleOverloadDetection(true);
- }
- else
- {
- this.currentDetector.OverloadControl.ToggleOverloadDetection(false);
- }
- }
- this.UpdateOverloadStatusText();
- }
- /// <summary>
- /// Set Overload Value button click handler
- /// </summary>
- /// <param name="sender">sender object</param>
- /// <param name="e">RoutedEventArgs</param>
- private void SetOverloadValue_Click(object sender, RoutedEventArgs e)
- {
- float delay = float.Parse(this.tbDelayValue.Text, CultureInfo.CurrentCulture);
- float threshold = float.Parse(this.tbThresholdValue.Text, CultureInfo.CurrentCulture);
- if (this.currentDetector.OverloadControl.CanSetOverloadDelay(delay))
- {
- this.currentDetector.OverloadControl.SetOverloadDelay(delay);
- }
- if (this.currentDetector.OverloadControl.CanSetOverloadThreshold(threshold))
- {
- this.currentDetector.OverloadControl.SetOverloadThreshold(threshold);
- }
- this.UpdateOverloadStatusText();
- }
- #endregion
- /// <summary>
- /// Raises the <see cref="System.Windows.Window.Closing" /> event.
- /// </summary>
- /// <param name="e">A <see cref="System.ComponentModel.CancelEventArgs" /> that contains the event data.</param>
- protected override void OnClosing(CancelEventArgs e)
- {
- IEdDetectorControl detector = this.currentDetector;
- if (detector != null)
- {
- // Un-hook events!
- detector.ThermalControl.StatusChanged -= this.ThermalControl_StatusChanged;
- detector.OverloadControl.StatusChanged -= this.OverloadControl_StatusChanged;
- if (detector.ShutterControl != null)
- {
- detector.ShutterControl.StatusChanged -= this.ShutterControl_StatusChanged;
- }
- detector.SlideControl.StatusChanged -= this.SlideControl_StatusChanged;
- }
- base.OnClosing(e);
- }
- }
- }
|