- CloseCycleBeginForm() -> WaitBeginFormClosed() - CloseBeginForm() added to SequenceBase(forced dialog close) - CloseModellFormHandler added to UiBridge.Bridge
184 lines
5.6 KiB
C#
184 lines
5.6 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using log4net;
|
|
using TBF.BenchControl;
|
|
using TBF.BenchControl.GenericDevices;
|
|
|
|
namespace TBF.BenchControl.DataEntry.WMStates
|
|
{
|
|
public class EntryForm : ComponentBase, IOperation, IDataEntry, IHasWMStatesForm
|
|
{
|
|
private static readonly ILog log = LogManager.GetLogger(typeof(EntryForm));
|
|
public override string ToString() { return string.Format("DataEntry.WMStates({0})", Cfg.ToString(1)); }
|
|
|
|
readonly EntryFormCfg entryFormCfg;
|
|
|
|
/// <summary>
|
|
/// Water meter serial numbers set by forms
|
|
/// </summary>
|
|
string[] serialNr;
|
|
public string SerialNr(int wmNr)
|
|
{
|
|
if (serialNr == null || serialNr.Length <= wmNr) return string.Empty;
|
|
return serialNr[wmNr];
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// Water meter states set by forms
|
|
/// </summary>
|
|
float[] wmState;
|
|
public float WMState(int wmNr)
|
|
{
|
|
if (wmState == null || wmState.Length <= wmNr) return 0;
|
|
return wmState[wmNr];
|
|
}
|
|
|
|
|
|
/// <summary> Not supported </summary>
|
|
public void UpdateTestResults(IList<IWaterMeter> waterMeters, IList<Entities.TestResult> results)
|
|
{
|
|
}
|
|
|
|
|
|
System.Windows.Forms.Form modelessDlg;
|
|
|
|
bool resultSaved;
|
|
|
|
public enum CurrentOp
|
|
{
|
|
None,
|
|
EnterWMSNsAndStates,
|
|
EnterWMStates,
|
|
}
|
|
|
|
CurrentOp currentOp;
|
|
|
|
|
|
public EntryForm(EntryFormCfg cfg)
|
|
: base(cfg)
|
|
{
|
|
entryFormCfg = cfg;
|
|
serialNr = new string[Program.WMsCount];
|
|
wmState = new float[Program.WMsCount];
|
|
currentOp = CurrentOp.None;
|
|
log.Debug(this.ToString());
|
|
}
|
|
|
|
/// <returns>Reference to the operation</returns>
|
|
public IOperation ShowCycleBeginFormOp(IList<IWaterMeter> waterMeters)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
/// <returns>Reference to the operation</returns>
|
|
public IOperation ShowCycleEndFormOp(IList<IWaterMeter> waterMeters)
|
|
{
|
|
return null;
|
|
}
|
|
|
|
/// <returns>Reference to the operation</returns>
|
|
public IOperation ShowWMSNsAndStatesFormOp()
|
|
{
|
|
if (currentOp != CurrentOp.None) throw new Exception("Sequence error");
|
|
currentOp = CurrentOp.EnterWMSNsAndStates;
|
|
return this;
|
|
}
|
|
|
|
/// <returns>Reference to the operation</returns>
|
|
public IOperation ShowWMStatesFormOp()
|
|
{
|
|
if (currentOp != CurrentOp.None) throw new Exception("Sequence error");
|
|
currentOp = CurrentOp.EnterWMStates;
|
|
return this;
|
|
}
|
|
|
|
delegate void EntryFormDlgt(EntryForm myRef);
|
|
///
|
|
void OpenBeginningDlg(EntryForm myRef)
|
|
{
|
|
myRef.modelessDlg = new WMSNsAndStatesForm(Program.WMsCount);
|
|
modelessDlg.Show();
|
|
}
|
|
///
|
|
void OpenEndDlg(EntryForm myRef)
|
|
{
|
|
myRef.modelessDlg = new WMStatesForm(Program.WMsCount);
|
|
modelessDlg.Show();
|
|
}
|
|
|
|
/// <summary>Start this operation</summary>
|
|
public void Start()
|
|
{
|
|
resultSaved = false;
|
|
switch (currentOp)
|
|
{
|
|
case CurrentOp.EnterWMSNsAndStates:
|
|
Program.MainWnd.Invoke(new EntryFormDlgt(OpenBeginningDlg), this);
|
|
break;
|
|
case CurrentOp.EnterWMStates:
|
|
Program.MainWnd.Invoke(new EntryFormDlgt(OpenEndDlg), this);
|
|
break;
|
|
}
|
|
}
|
|
|
|
/// <summary>Run this operation</summary>
|
|
/// <returns>Event.ResultsPrinted</returns>
|
|
public Event Run()
|
|
{
|
|
if (!(modelessDlg as IHasCompleted).Completed)
|
|
{
|
|
return Event.ModelessFormIsOpen;
|
|
}
|
|
|
|
if (!resultSaved) /// This is to save the result only once
|
|
{
|
|
if (modelessDlg is WMSNsAndStatesForm)
|
|
{
|
|
WMSNsAndStatesForm dlg = (modelessDlg as WMSNsAndStatesForm);
|
|
|
|
if (dlg.WaterMetersCount > 0) wmState[0] = dlg.WMState[0];
|
|
if (dlg.WaterMetersCount > 1) wmState[1] = dlg.WMState[1];
|
|
if (dlg.WaterMetersCount > 2) wmState[2] = dlg.WMState[2];
|
|
if (dlg.WaterMetersCount > 3) wmState[3] = dlg.WMState[3];
|
|
if (dlg.WaterMetersCount > 4) wmState[4] = dlg.WMState[4];
|
|
if (dlg.WaterMetersCount > 5) wmState[5] = dlg.WMState[5];
|
|
|
|
if (dlg.WaterMetersCount > 0) serialNr[0] = dlg.SNText[0];
|
|
if (dlg.WaterMetersCount > 1) serialNr[1] = dlg.SNText[1];
|
|
if (dlg.WaterMetersCount > 2) serialNr[2] = dlg.SNText[2];
|
|
if (dlg.WaterMetersCount > 3) serialNr[3] = dlg.SNText[3];
|
|
if (dlg.WaterMetersCount > 4) serialNr[4] = dlg.SNText[4];
|
|
if (dlg.WaterMetersCount > 5) serialNr[5] = dlg.SNText[5];
|
|
}
|
|
else if (modelessDlg is WMStatesForm)
|
|
{
|
|
WMStatesForm dlg = (modelessDlg as WMStatesForm);
|
|
|
|
if (dlg.WaterMetersCount > 0) wmState[0] = dlg.WMState[0];
|
|
if (dlg.WaterMetersCount > 1) wmState[1] = dlg.WMState[1];
|
|
if (dlg.WaterMetersCount > 2) wmState[2] = dlg.WMState[2];
|
|
if (dlg.WaterMetersCount > 3) wmState[3] = dlg.WMState[3];
|
|
if (dlg.WaterMetersCount > 4) wmState[4] = dlg.WMState[4];
|
|
if (dlg.WaterMetersCount > 5) wmState[5] = dlg.WMState[5];
|
|
}
|
|
resultSaved = true;
|
|
modelessDlg = null;
|
|
}
|
|
|
|
return Event.ModelessFormClosed; /// Form closed
|
|
}
|
|
|
|
/// <summary>Stop this operation</summary>
|
|
public void Stop()
|
|
{
|
|
if (modelessDlg is IHasCompleted)
|
|
{
|
|
UiBridge.Bridge.OnCloseModelessForm(this, null);
|
|
modelessDlg = null;
|
|
}
|
|
currentOp = CurrentOp.None;
|
|
}
|
|
}
|
|
}
|