using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; using NHibernate; using log4net; using TBF.Entities; using TBF.UiBridge; namespace TBF.UiControls { public partial class BenchControlPanel : UserControl { static readonly ILog log = LogManager.GetLogger(typeof(BenchControlPanel)); public string TestName; // Original (enabled) colors of buttons and empty bench Color colorStopEn; Color colorTestsEn; Color colorCycleEn; Color colorPurgeEn; Color colorAcceptEn; Color colorEmptyEn; Color colorOtherEn; Color colorBenchEmpty; // Colors of disabled buttons Color colorStopDis; Color colorTestsDis; Color colorCycleDis; Color colorPurgeDis; Color colorAcceptDis; Color colorEmptyDis; Color colorOtherDis; public BenchControlPanel() { InitializeComponent(); Bridge.ButtonsEtcHandler += delegate(object sender, ButtonsEtcEventArgs args) { if (InvokeRequired) { Invoke(new EventHandler(OnButtonsEtc), sender, args); } else OnButtonsEtc(sender, args); }; Bridge.ProcedureSelectedHandler += delegate(object sender, ProcedureSelectedEventArgs args) { if (InvokeRequired) { Invoke(new EventHandler(OnProcedureSelected), sender, args); } else OnProcedureSelected(sender, args); }; Bridge.TestSelectedHandler += delegate(object sender, TestSelectedEventArgs args) { if (InvokeRequired) { Invoke(new EventHandler(OnTestSelected), sender, args); } else OnTestSelected(sender, args); }; #if DEBUG nextButton.Visible = true; nextButton.Enabled = true; #endif } int Lghtr(int component) { return 255 - (255 - component) / 2; } private void BenchControlPanel_Load(object sender, EventArgs e) { // Original (enabled) colors of buttons colorStopEn = stopBtn.BackColor; colorTestsEn = startTestBtn.BackColor; colorCycleEn = startCycleBtn.BackColor; colorPurgeEn = purgeBeginBtn.BackColor; colorAcceptEn = acceptResultsBtn.BackColor; colorEmptyEn = emptyTank1Btn.BackColor; colorOtherEn = tryHeadsBtn.BackColor; colorBenchEmpty = emptyGroupBox.BackColor; // Colors of disabled buttons colorStopDis = Color.FromArgb(Lghtr(colorStopEn.R), Lghtr(colorStopEn.G), Lghtr(colorStopEn.B)); colorTestsDis = Color.FromArgb(Lghtr(colorTestsEn.R), Lghtr(colorTestsEn.G), Lghtr(colorTestsEn.B)); colorCycleDis = Color.FromArgb(Lghtr(colorCycleEn.R), Lghtr(colorCycleEn.G), Lghtr(colorCycleEn.B)); colorPurgeDis = Color.FromArgb(Lghtr(colorPurgeEn.R), Lghtr(colorPurgeEn.G), Lghtr(colorPurgeEn.B)); colorAcceptDis = Color.FromArgb(Lghtr(colorAcceptEn.R), Lghtr(colorAcceptEn.G), Lghtr(colorAcceptEn.B)); colorEmptyDis = Color.FromArgb(Lghtr(colorEmptyEn.R), Lghtr(colorEmptyEn.G), Lghtr(colorEmptyEn.B)); colorOtherDis = Color.FromArgb(Lghtr(colorOtherEn.R), Lghtr(colorOtherEn.G), Lghtr(colorOtherEn.B)); } /// /// Read the database and re-initialize testComboBox items. /// Try to preserve the original selection. /// public void ReloadTests() { if (Program.MainWnd.ProcedureName == null) return; string oriTestName = testComboBox.Text; IList procedures = FluentCommon.CreateSession(Database.Procedures) .CreateQuery("FROM Procedure WHERE Name = :name") .SetParameter("name", Program.MainWnd.ProcedureName) .List(); if (procedures.Count != 1) { testComboBox.Text = string.Empty; TestName = null; Program.MainWnd.CurrentProcedure = null; return; } Program.MainWnd.CurrentProcedure = procedures[0]; testComboBox.Items.Clear(); foreach (var test in procedures[0].Tests) testComboBox.Items.Add(test.Name); if (testComboBox.Items.Contains(oriTestName)) { testComboBox.Text = oriTestName; TestName = oriTestName; } else if (procedures[0].Tests.Count > 0) { testComboBox.Text = procedures[0].Tests[0].Name; TestName = procedures[0].Tests[0].Name; } else { testComboBox.Text = string.Empty; TestName = null; } } private void testComboBox_SelectedIndexChanged(object sender, EventArgs e) { TestName = testComboBox.Text; startTestBtn.Select(); } private void startTestBtn_Click(object sender, EventArgs e) { Bridge.Ui2Bench(UI2BenchCmd.StartTest); } private void startQ1Btn_Click(object sender, EventArgs e) { Bridge.Ui2Bench(UI2BenchCmd.StartQ1); } private void startQ2Btn_Click(object sender, EventArgs e) { Bridge.Ui2Bench(UI2BenchCmd.StartQ2); } private void startQ3Btn_Click(object sender, EventArgs e) { Bridge.Ui2Bench(UI2BenchCmd.StartQ3); } private void startCycleBtn_Click(object sender, EventArgs e) { Bridge.Ui2Bench(UI2BenchCmd.StartCycle); } private void stopBtn_Click(object sender, EventArgs e) { Bridge.Ui2Bench(UI2BenchCmd.Stop); } private void purgeBeginBtn_Click(object sender, EventArgs e) { Bridge.Ui2Bench(UI2BenchCmd.PurgeBegin); } private void purgeEndBtn_Click(object sender, EventArgs e) { Bridge.Ui2Bench(UI2BenchCmd.PurgeEnd); } private void emptyTank1Btn_Click(object sender, EventArgs e) { Bridge.Ui2Bench(UI2BenchCmd.EmptyTank1); } private void emptyTank2Btn_Click(object sender, EventArgs e) { Bridge.Ui2Bench(UI2BenchCmd.EmptyTank2); } private void tryHeadsBtn_Click(object sender, EventArgs e) { Bridge.Ui2Bench(UI2BenchCmd.TryOpticalHeads); } private void resetResultsBtn_Click(object sender, EventArgs e) { Bridge.Ui2Bench(UI2BenchCmd.ResetResults); } private void acceptResultsBtn_Click(object sender, EventArgs e) { Bridge.Ui2Bench(UI2BenchCmd.AcceptResults); } private void calibrationBtn_Click(object sender, EventArgs e) { Bridge.Ui2Bench(UI2BenchCmd.CameraTest); } private void sensitivityTestBtn_Click(object sender, EventArgs e){ Bridge.Ui2Bench(UI2BenchCmd.SensitivityTest); } private void button1_Click(object sender, EventArgs e) { Bridge.Ui2Bench(UI2BenchCmd.B1); } private void button2_Click(object sender, EventArgs e) { Bridge.Ui2Bench(UI2BenchCmd.B2); } private void nextButton_Click(object sender, EventArgs e) { Bridge.Ui2Bench(UI2BenchCmd.Next); } /// /// Processes a pressed keys. /// /// key (char) /// true when the key is handled, otherwise false public bool ProcessKey(char key) { switch (key) { case '0': if (stopBtn.Enabled) { Bridge.Ui2Bench(UI2BenchCmd.Stop); } return true; case '1': if (startQ1Btn.Enabled) { Bridge.Ui2Bench(UI2BenchCmd.StartQ1); } return true; case '2': if (startQ2Btn.Enabled) { Bridge.Ui2Bench(UI2BenchCmd.StartQ2); } return true; case '3': if (startQ3Btn.Enabled) { Bridge.Ui2Bench(UI2BenchCmd.StartQ3); } return true; case '4': if (startTestBtn.Enabled) { Bridge.Ui2Bench(UI2BenchCmd.StartTest); } return true; case '5': if (startCycleBtn.Enabled) { Bridge.Ui2Bench(UI2BenchCmd.StartCycle); } return true; case '6': if (purgeBeginBtn.Enabled) { Bridge.Ui2Bench(UI2BenchCmd.PurgeBegin); } return true; case '7': if (purgeEndBtn.Enabled) { Bridge.Ui2Bench(UI2BenchCmd.PurgeEnd); } return true; case '8': if (emptyTank1Btn.Enabled) { Bridge.Ui2Bench(UI2BenchCmd.EmptyTank1); } return true; case '9': if (emptyTank2Btn.Enabled) { Bridge.Ui2Bench(UI2BenchCmd.EmptyTank2); } return true; default: return false; } } public void OnProcedureSelected(object sender, ProcedureSelectedEventArgs args) { ReloadTests(); } public void OnTestSelected(object sender, TestSelectedEventArgs args) { testComboBox.Text = args.Test.Name; } public void OnButtonsEtc(object sender, ButtonsEtcEventArgs args) { if ((args.Flags & ButtonsEtc.ShowBenchEmpty) != 0) { purgeGroupBox.BackColor = colorBenchEmpty; return; } else if ((args.Flags & ButtonsEtc.ShowBenchFilled) != 0) { purgeGroupBox.BackColor = Color.RoyalBlue; return; } testComboBox.Enabled = ((args.Flags & ButtonsEtc.TestCmbBoxEn) != 0); stopBtn.Enabled = ((args.Flags & ButtonsEtc.StopBtnEn) != 0); stopBtn.BackColor = stopBtn.Enabled ? colorStopEn : colorStopDis; startTestBtn.Enabled = ((args.Flags & ButtonsEtc.StartTestBtnsEn) != 0); startTestBtn.BackColor = startTestBtn.Enabled ? colorTestsEn : colorTestsDis; startQ1Btn.Enabled = ((args.Flags & ButtonsEtc.StartTestBtnsEn) != 0); startQ1Btn.BackColor = startQ1Btn.Enabled ? colorTestsEn : colorTestsDis; startQ2Btn.Enabled = ((args.Flags & ButtonsEtc.StartTestBtnsEn) != 0); startQ2Btn.BackColor = startQ2Btn.Enabled ? colorTestsEn : colorTestsDis; startQ3Btn.Enabled = ((args.Flags & ButtonsEtc.StartTestBtnsEn) != 0); startQ3Btn.BackColor = startQ3Btn.Enabled ? colorTestsEn : colorTestsDis; startCycleBtn.Enabled = ((args.Flags & ButtonsEtc.StartCycleBtnEn) != 0); startCycleBtn.BackColor = startCycleBtn.Enabled ? colorCycleEn : colorCycleDis; purgeBeginBtn.Enabled = ((args.Flags & ButtonsEtc.PurgeBeginBtnEn) != 0); purgeBeginBtn.BackColor = purgeBeginBtn.Enabled ? colorPurgeEn : colorPurgeDis; purgeEndBtn.Enabled = ((args.Flags & ButtonsEtc.PurgeEndBtnEn) != 0); purgeEndBtn.BackColor = purgeEndBtn.Enabled ? colorPurgeEn : colorPurgeDis; emptyTank1Btn.Enabled = ((args.Flags & ButtonsEtc.EmptyTankBtn1En) != 0); emptyTank1Btn.BackColor = emptyTank1Btn.Enabled ? colorEmptyEn : colorEmptyDis; emptyTank2Btn.Enabled = ((args.Flags & ButtonsEtc.EmptyTankBtn2En) != 0); emptyTank2Btn.BackColor = emptyTank2Btn.Enabled ? colorEmptyEn : colorEmptyDis; resetResultsBtn.Enabled = ((args.Flags & ButtonsEtc.ResetResultsBtnEn) != 0); resetResultsBtn.BackColor = resetResultsBtn.Enabled ? colorStopEn : colorStopDis; acceptResultsBtn.Enabled = ((args.Flags & ButtonsEtc.AcceptResultsBtnEn) != 0); acceptResultsBtn.BackColor = acceptResultsBtn.Enabled ? colorAcceptEn : colorAcceptDis; tryHeadsBtn.Enabled = ((args.Flags & ButtonsEtc.TryOpticalHeadsBtnEn) != 0); tryHeadsBtn.BackColor = tryHeadsBtn.Enabled ? colorOtherEn : colorOtherDis; calibrationBtn.Enabled = ((args.Flags & ButtonsEtc.CalibrationBtnEn) != 0); calibrationBtn.BackColor = calibrationBtn.Enabled ? colorOtherEn : colorOtherDis; sensitivityTestBtn.Enabled = ((args.Flags & ButtonsEtc.SensitivityTestBtnEn) != 0); sensitivityTestBtn.BackColor = sensitivityTestBtn.Enabled ? colorOtherEn : colorOtherDis; } } }