Solves issue with an opened CycleBeginForm after abort and re-selection in Israel:

- CloseCycleBeginForm() -> WaitBeginFormClosed()
- CloseBeginForm() added to SequenceBase(forced dialog close)
- CloseModellFormHandler added to UiBridge.Bridge
This commit is contained in:
Milan Hanajik
2015-03-01 11:13:26 +01:00
parent fc30e160fc
commit c005a5cb26
24 changed files with 363 additions and 145 deletions
@@ -1,5 +1,6 @@
using System;
using System.Windows.Forms;
using log4net;
using TBF.Resources;
#pragma warning disable 162 /// Disables 'Unreachable code detected' warning
@@ -8,6 +9,8 @@ namespace TBF.BenchControl.DataEntry.Munich
{
public partial class CycleBeginningForm : Form, GenericDevices.IHasCompleted
{
private static readonly ILog log = LogManager.GetLogger(typeof(CycleBeginningForm));
// To be retrieved after the form closes
public string[] MainSNText;
public string[] AuxSNText;
@@ -23,6 +26,7 @@ namespace TBF.BenchControl.DataEntry.Munich
MainSNText = new string[Program.WMsCount / 2];
AuxSNText = new string[Program.WMsCount / 2];
completed = false;
StartForceCloseHandler();
if (Program.WMsCount / 2 < 2) Height = 200;
else if (Program.WMsCount / 2 < 3) Height = 355;
@@ -65,5 +69,24 @@ namespace TBF.BenchControl.DataEntry.Munich
completed = true;
Close();
}
}
#region Forced close handling
public void StartForceCloseHandler()
{
UiBridge.Bridge.CloseModelessFormHandler += delegate(object sender, EventArgs args)
{
if (InvokeRequired) { Invoke(new EventHandler<EventArgs>(OnForceClose), sender, args); }
else OnForceClose(sender, args);
};
}
void OnForceClose(object sender, EventArgs args)
{
DialogResult = DialogResult.Cancel;
Close();
}
#endregion
}
}
@@ -1,5 +1,6 @@
using System;
using System.Windows.Forms;
using log4net;
using TBF.Resources;
#pragma warning disable 162 /// Disables 'Unreachable code detected' warning
@@ -8,6 +9,8 @@ namespace TBF.BenchControl.DataEntry.Munich
{
public partial class CycleEndForm : Form, GenericDevices.IHasCompleted
{
private static readonly ILog log = LogManager.GetLogger(typeof(CycleEndForm));
// To be set before the form opens
public string ProtocolName1;
public string ProtocolName2;
@@ -33,6 +36,7 @@ namespace TBF.BenchControl.DataEntry.Munich
QRise = new float[Program.WMsCount / 2];
QFall = new float[Program.WMsCount / 2];
completed = false;
StartForceCloseHandler();
Localize();
}
@@ -127,5 +131,24 @@ namespace TBF.BenchControl.DataEntry.Munich
Close();
}
}
}
#region Forced close handling
public void StartForceCloseHandler()
{
UiBridge.Bridge.CloseModelessFormHandler += delegate(object sender, EventArgs args)
{
if (InvokeRequired) { Invoke(new EventHandler<EventArgs>(OnForceClose), sender, args); }
else OnForceClose(sender, args);
};
}
void OnForceClose(object sender, EventArgs args)
{
DialogResult = DialogResult.Cancel;
Close();
}
#endregion
}
}
@@ -26,7 +26,7 @@ namespace TBF.BenchControl.DataEntry.Munich
public float WMState(int wmNr) { return 0; }
System.Windows.Forms.Form mdlessDlg;
System.Windows.Forms.Form modelessDlg;
bool resultSaved;
@@ -84,8 +84,8 @@ namespace TBF.BenchControl.DataEntry.Munich
///
void OpenBeginningDlg(EntryForm myRef)
{
myRef.mdlessDlg = new CycleBeginningForm();
mdlessDlg.Show();
myRef.modelessDlg = new CycleBeginningForm();
modelessDlg.Show();
}
///
void OpenEndDlg(EntryForm myRef)
@@ -94,8 +94,8 @@ namespace TBF.BenchControl.DataEntry.Munich
endForm.ProtocolName1 = entryFormCfg.ProtocolTitle1;
endForm.ProtocolName2 = entryFormCfg.ProtocolTitle2;
endForm.ProtocolName3 = entryFormCfg.ProtocolTitle3;
myRef.mdlessDlg = endForm;
mdlessDlg.Show();
myRef.modelessDlg = endForm;
modelessDlg.Show();
}
/// <summary>Start this operation</summary>
@@ -117,33 +117,34 @@ namespace TBF.BenchControl.DataEntry.Munich
/// <returns>Event.ResultsPrinted</returns>
public Event Run()
{
if (!(mdlessDlg as IHasCompleted).Completed)
if (!(modelessDlg as IHasCompleted).Completed)
{
return Event.None; /// Return 'None' when form was not closed yet
return Event.ModelessFormIsOpen;
}
if (!resultSaved) /// This is to save the result only once
{
if (mdlessDlg is CycleBeginningForm)
if (modelessDlg is CycleBeginningForm)
{
if (wMeters.Count >= 2 && wMeters[0] != null) wMeters[0].SerialNr = (mdlessDlg as CycleBeginningForm).MainSNText[0];
if (wMeters.Count >= 2 && wMeters[1] != null) wMeters[1].SerialNr = (mdlessDlg as CycleBeginningForm).AuxSNText[0];
if (wMeters.Count >= 4 && wMeters[2] != null) wMeters[2].SerialNr = (mdlessDlg as CycleBeginningForm).MainSNText[1];
if (wMeters.Count >= 4 && wMeters[3] != null) wMeters[3].SerialNr = (mdlessDlg as CycleBeginningForm).AuxSNText[1];
if (wMeters.Count >= 6 && wMeters[4] != null) wMeters[4].SerialNr = (mdlessDlg as CycleBeginningForm).MainSNText[2];
if (wMeters.Count >= 6 && wMeters[5] != null) wMeters[5].SerialNr = (mdlessDlg as CycleBeginningForm).AuxSNText[2];
if (wMeters.Count >= 2 && wMeters[0] != null) wMeters[0].SerialNr = (modelessDlg as CycleBeginningForm).MainSNText[0];
if (wMeters.Count >= 2 && wMeters[1] != null) wMeters[1].SerialNr = (modelessDlg as CycleBeginningForm).AuxSNText[0];
if (wMeters.Count >= 4 && wMeters[2] != null) wMeters[2].SerialNr = (modelessDlg as CycleBeginningForm).MainSNText[1];
if (wMeters.Count >= 4 && wMeters[3] != null) wMeters[3].SerialNr = (modelessDlg as CycleBeginningForm).AuxSNText[1];
if (wMeters.Count >= 6 && wMeters[4] != null) wMeters[4].SerialNr = (modelessDlg as CycleBeginningForm).MainSNText[2];
if (wMeters.Count >= 6 && wMeters[5] != null) wMeters[5].SerialNr = (modelessDlg as CycleBeginningForm).AuxSNText[2];
}
else
{
if (wMeters.Count >= 2 && wMeters[0] != null) wMeters[0].EndState = (mdlessDlg as CycleEndForm).MainStateText[0];
if (wMeters.Count >= 2 && wMeters[1] != null) wMeters[1].EndState = (mdlessDlg as CycleEndForm).AuxStateText[0];
if (wMeters.Count >= 4 && wMeters[2] != null) wMeters[2].EndState = (mdlessDlg as CycleEndForm).MainStateText[1];
if (wMeters.Count >= 4 && wMeters[3] != null) wMeters[3].EndState = (mdlessDlg as CycleEndForm).AuxStateText[1];
if (wMeters.Count >= 6 && wMeters[4] != null) wMeters[4].EndState = (mdlessDlg as CycleEndForm).MainStateText[2];
if (wMeters.Count >= 6 && wMeters[5] != null) wMeters[5].EndState = (mdlessDlg as CycleEndForm).AuxStateText[2];
protocolTitle = (mdlessDlg as CycleEndForm).ProtocolTitle;
if (wMeters.Count >= 2 && wMeters[0] != null) wMeters[0].EndState = (modelessDlg as CycleEndForm).MainStateText[0];
if (wMeters.Count >= 2 && wMeters[1] != null) wMeters[1].EndState = (modelessDlg as CycleEndForm).AuxStateText[0];
if (wMeters.Count >= 4 && wMeters[2] != null) wMeters[2].EndState = (modelessDlg as CycleEndForm).MainStateText[1];
if (wMeters.Count >= 4 && wMeters[3] != null) wMeters[3].EndState = (modelessDlg as CycleEndForm).AuxStateText[1];
if (wMeters.Count >= 6 && wMeters[4] != null) wMeters[4].EndState = (modelessDlg as CycleEndForm).MainStateText[2];
if (wMeters.Count >= 6 && wMeters[5] != null) wMeters[5].EndState = (modelessDlg as CycleEndForm).AuxStateText[2];
protocolTitle = (modelessDlg as CycleEndForm).ProtocolTitle;
}
resultSaved = true;
modelessDlg = null;
}
return Event.ModelessFormClosed; /// Form closed
@@ -152,7 +153,11 @@ namespace TBF.BenchControl.DataEntry.Munich
/// <summary>Stop this operation</summary>
public void Stop()
{
mdlessDlg = null;
if (modelessDlg is IHasCompleted)
{
UiBridge.Bridge.OnCloseModelessForm(this, null);
modelessDlg = null;
}
currentOp = CurrentOp.None;
}
@@ -1,12 +1,15 @@
using System;
using System.Windows.Forms;
using log4net;
using TBF.Resources;
namespace TBF.BenchControl.DataEntry.Munich3
{
public partial class CycleBeginningForm : Form, GenericDevices.IHasCompleted
{
/// <summary> Number of text boxes for serial numbers </summary>
private static readonly ILog log = LogManager.GetLogger(typeof(CycleBeginningForm));
/// <summary> Number of text boxes for serial numbers </summary>
public readonly int WaterMetersCount;
/// To be retrieved after the form is closed
@@ -26,6 +29,7 @@ namespace TBF.BenchControl.DataEntry.Munich3
InitializeComponent();
SNText = new string[WaterMetersCount];
completed = false;
StartForceCloseHandler();
//Height = 55 + WaterMetersCount * 105;
}
@@ -78,5 +82,24 @@ namespace TBF.BenchControl.DataEntry.Munich3
completed = true;
Close();
}
#region Forced close handling
public void StartForceCloseHandler()
{
UiBridge.Bridge.CloseModelessFormHandler += delegate(object sender, EventArgs args)
{
if (InvokeRequired) { Invoke(new EventHandler<EventArgs>(OnForceClose), sender, args); }
else OnForceClose(sender, args);
};
}
private void OnForceClose(object sender, EventArgs args)
{
DialogResult = DialogResult.Cancel;
Close();
}
#endregion
}
}
@@ -1,12 +1,15 @@
using System;
using System.Windows.Forms;
using log4net;
using TBF.Resources;
namespace TBF.BenchControl.DataEntry.Munich3
{
public partial class CycleEndForm : Form, GenericDevices.IHasCompleted
{
/// <summary> Number of text boxes for serial numbers </summary>
private static readonly ILog log = LogManager.GetLogger(typeof(CycleEndForm));
/// <summary> Number of text boxes for serial numbers </summary>
public readonly int WaterMetersCount;
// To be set before the form opens
@@ -32,7 +35,8 @@ namespace TBF.BenchControl.DataEntry.Munich3
InitializeComponent();
EndStateText = new string[WaterMetersCount];
completed = false;
}
StartForceCloseHandler();
}
/// <summary> Parameterless constructor for 3 watermeters </summary>
public CycleEndForm()
@@ -93,5 +97,24 @@ namespace TBF.BenchControl.DataEntry.Munich3
completed = true;
Close();
}
}
#region Forced close handling
public void StartForceCloseHandler()
{
UiBridge.Bridge.CloseModelessFormHandler += delegate(object sender, EventArgs args)
{
if (InvokeRequired) { Invoke(new EventHandler<EventArgs>(OnForceClose), sender, args); }
else OnForceClose(sender, args);
};
}
void OnForceClose(object sender, EventArgs args)
{
DialogResult = DialogResult.Cancel;
Close();
}
#endregion
}
}
@@ -119,7 +119,7 @@ namespace TBF.BenchControl.DataEntry.Munich3
{
if (!(modelessDlg as IHasCompleted).Completed)
{
return Event.None; /// Return 'None' when form was not closed yet
return Event.ModelessFormIsOpen;
}
if (!resultSaved) /// This is to save the result only once
@@ -150,6 +150,7 @@ namespace TBF.BenchControl.DataEntry.Munich3
if (count > 5 && waterMeters[5] != null) waterMeters[5].EndState = dlg.EndStateText[5];
}
resultSaved = true;
modelessDlg = null;
}
return Event.ModelessFormClosed; /// Form closed
@@ -158,7 +159,11 @@ namespace TBF.BenchControl.DataEntry.Munich3
/// <summary>Stop this operation</summary>
public void Stop()
{
modelessDlg = null;
if (modelessDlg is IHasCompleted)
{
UiBridge.Bridge.OnCloseModelessForm(this, null);
modelessDlg = null;
}
currentOp = CurrentOp.None;
}
@@ -128,7 +128,7 @@ namespace TBF.BenchControl.DataEntry.WMStates
{
if (!(modelessDlg as IHasCompleted).Completed)
{
return Event.None; /// Return 'None' when form was not closed yet
return Event.ModelessFormIsOpen;
}
if (!resultSaved) /// This is to save the result only once
@@ -163,6 +163,7 @@ namespace TBF.BenchControl.DataEntry.WMStates
if (dlg.WaterMetersCount > 5) wmState[5] = dlg.WMState[5];
}
resultSaved = true;
modelessDlg = null;
}
return Event.ModelessFormClosed; /// Form closed
@@ -171,7 +172,11 @@ namespace TBF.BenchControl.DataEntry.WMStates
/// <summary>Stop this operation</summary>
public void Stop()
{
modelessDlg = null;
if (modelessDlg is IHasCompleted)
{
UiBridge.Bridge.OnCloseModelessForm(this, null);
modelessDlg = null;
}
currentOp = CurrentOp.None;
}
}
@@ -1,12 +1,15 @@
using System;
using System.Windows.Forms;
using log4net;
using TBF.Resources;
namespace TBF.BenchControl.DataEntry.WMStates
{
public partial class WMSNsAndStatesForm : Form, GenericDevices.IHasCompleted
{
/// <summary> Number of text boxes for serial numbers </summary>
private static readonly ILog log = LogManager.GetLogger(typeof(WMSNsAndStatesForm));
/// <summary> Number of text boxes for serial numbers </summary>
public readonly int WaterMetersCount;
/// To be retrieved after the form is closed
@@ -30,6 +33,7 @@ namespace TBF.BenchControl.DataEntry.WMStates
SNText = new string[WaterMetersCount];
WMState = new float[WaterMetersCount];
completed = false;
StartForceCloseHandler();
//Height = 55 + WaterMetersCount * 105;
}
@@ -102,5 +106,24 @@ namespace TBF.BenchControl.DataEntry.WMStates
completed = true;
Close();
}
}
#region Forced close handling
public void StartForceCloseHandler()
{
UiBridge.Bridge.CloseModelessFormHandler += delegate(object sender, EventArgs args)
{
if (InvokeRequired) { Invoke(new EventHandler<EventArgs>(OnForceClose), sender, args); }
else OnForceClose(sender, args);
};
}
void OnForceClose(object sender, EventArgs args)
{
DialogResult = DialogResult.Cancel;
Close();
}
#endregion
}
}
@@ -1,12 +1,15 @@
using System;
using System.Windows.Forms;
using log4net;
using TBF.Resources;
namespace TBF.BenchControl.DataEntry.WMStates
{
public partial class WMStatesForm : Form, GenericDevices.IHasCompleted
{
/// <summary> Number of text boxes for serial numbers </summary>
private static readonly ILog log = LogManager.GetLogger(typeof(WMStatesForm));
/// <summary> Number of text boxes for serial numbers </summary>
public readonly int WaterMetersCount;
// To be retrieved after the form closes
@@ -26,7 +29,8 @@ namespace TBF.BenchControl.DataEntry.WMStates
InitializeComponent();
WMState = new float[WaterMetersCount];
completed = false;
}
StartForceCloseHandler();
}
/// <summary> Parameterless constructor for 3 watermeters </summary>
public WMStatesForm()
@@ -85,5 +89,24 @@ namespace TBF.BenchControl.DataEntry.WMStates
completed = true;
Close();
}
}
#region Forced close handling
public void StartForceCloseHandler()
{
UiBridge.Bridge.CloseModelessFormHandler += delegate(object sender, EventArgs args)
{
if (InvokeRequired) { Invoke(new EventHandler<EventArgs>(OnForceClose), sender, args); }
else OnForceClose(sender, args);
};
}
void OnForceClose(object sender, EventArgs args)
{
DialogResult = DialogResult.Cancel;
Close();
}
#endregion
}
}