diff --git a/Results/Forms/ListViewEx.cs b/Results/Forms/ListViewEx.cs index 532dd8cd9..0785c295b 100644 --- a/Results/Forms/ListViewEx.cs +++ b/Results/Forms/ListViewEx.cs @@ -67,7 +67,8 @@ namespace Results.Forms private System.ComponentModel.Container components = null; public event SubItemEventHandler SubItemClicked; - public event SubItemEventHandler SubItemBeginEditing; + public event SubItemEventHandler SubItemRightClicked; + public event SubItemEventHandler SubItemBeginEditing; public event SubItemEndEditingEventHandler SubItemEndEditing; public ListViewEx() @@ -237,12 +238,22 @@ namespace Results.Forms { base.OnMouseUp(e); - if (DoubleClickActivation) - { - return; - } + MouseEventArgs me = (MouseEventArgs)e; + if (me.Button == MouseButtons.Right) + { + /// Right mouse button click function + RightClickFunctionSubitemAt(new Point(e.X, e.Y)); + } + else + { + /// Normal function (=edit item) + if (DoubleClickActivation) + { + return; + } - EditSubitemAt(new Point(e.X, e.Y)); + EditSubitemAt(new Point(e.X, e.Y)); + } } protected override void OnDoubleClick(EventArgs e) @@ -273,6 +284,20 @@ namespace Results.Forms } } + /// + /// Fire SubItemRightClicked + /// + ///Point of click/doubleclick + private void RightClickFunctionSubitemAt(Point p) + { + ListViewItem item; + int idx = GetSubItemAt(p.X, p.Y, out item); + if (idx >= 0) + { + OnSubItemRightClicked(new SubItemEventArgs(item, idx)); + } + } + #endregion #region In-place editing functions @@ -298,6 +323,11 @@ namespace Results.Forms if (SubItemClicked != null) SubItemClicked(this, e); } + protected void OnSubItemRightClicked(SubItemEventArgs e) + { + if (SubItemRightClicked != null) SubItemRightClicked(this, e); + } + /// /// Begin in-place editing of given cell diff --git a/Results/Properties/AssemblyInfo.cs b/Results/Properties/AssemblyInfo.cs index bfda5d5a8..87edee89a 100644 --- a/Results/Properties/AssemblyInfo.cs +++ b/Results/Properties/AssemblyInfo.cs @@ -32,5 +32,5 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("2.9.330.0")] -[assembly: AssemblyFileVersion("2.9.330.0")] +[assembly: AssemblyVersion("2.9.333.0")] +[assembly: AssemblyFileVersion("2.9.333.0")] diff --git a/TestBenchFramework/ProcedureDlg.cs b/TestBenchFramework/ProcedureDlg.cs index b31c01ce0..cbf0635dc 100644 --- a/TestBenchFramework/ProcedureDlg.cs +++ b/TestBenchFramework/ProcedureDlg.cs @@ -72,16 +72,20 @@ namespace TBF /// ListViewEx-es configuration metrology1ListViewEx.SubItemClicked += new SubItemEventHandler(metrology1ListViewEx_SubItemClicked); - metrology1ListViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(metrology1ListViewEx_SubItemEndEditing); + metrology1ListViewEx.SubItemRightClicked += new SubItemEventHandler(metrology1ListViewEx_SubItemRightClicked); + metrology1ListViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(metrology1ListViewEx_SubItemEndEditing); metrology2ListViewEx.SubItemClicked += new SubItemEventHandler(metrology2ListViewEx_SubItemClicked); - metrology2ListViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(metrology2ListViewEx_SubItemEndEditing); + metrology2ListViewEx.SubItemRightClicked += new SubItemEventHandler(metrology2ListViewEx_SubItemRightClicked); + metrology2ListViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(metrology2ListViewEx_SubItemEndEditing); processListViewEx.SubItemClicked += new SubItemEventHandler(processListViewEx_SubItemClicked); + processListViewEx.SubItemRightClicked += new SubItemEventHandler(processListViewEx_SubItemRightClicked); processListViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(processListViewEx_SubItemEndEditing); parametersListViewEx.SubItemClicked += new SubItemEventHandler(parametersListViewEx_SubItemClicked); - parametersListViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(parametersListViewEx_SubItemEndEditing); + parametersListViewEx.SubItemRightClicked += new SubItemEventHandler(parametersListViewEx_SubItemRightClicked); + parametersListViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(parametersListViewEx_SubItemEndEditing); } public ProcedureDlg(Config.Entities.Procedure procedure) @@ -1112,6 +1116,32 @@ namespace TBF } } + void metrology1ListViewEx_SubItemRightClicked(object sender, SubItemEventArgs e) + { + if (!unlocked || e.SubItem >= (int)MtrlgyClmn.MtrlgyClmnCount) return; + + if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell, + Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + { + int columnNr = e.SubItem; + string value = null; + System.Drawing.Color backColor = System.Drawing.Color.White; + foreach (ListViewItem item in metrology1ListViewEx.Items) + { + if (value != null) + { + item.SubItems[columnNr].Text = value; + item.SubItems[columnNr].BackColor = backColor; + } + else if (item == e.Item) + { + value = item.SubItems[columnNr].Text; + backColor = item.SubItems[columnNr].BackColor; + } + } + } + } + private void metrology1ListViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) { int dummy; @@ -1202,13 +1232,47 @@ namespace TBF private void metrology2ListViewEx_SubItemClicked(object sender, SubItemEventArgs e) { - if (unlocked && - e.SubItem != (int)Mtrlgy2Clmn.Qfrom && - e.SubItem != (int)Mtrlgy2Clmn.Qto && - e.SubItem < (int)Mtrlgy2Clmn.Mtrlgy2ClmnCount) - { - metrology2ListViewEx.StartEditing(metrology2Editors[e.SubItem], e.Item, e.SubItem); - } + if (!unlocked || + e.SubItem == (int)Mtrlgy2Clmn.Qfrom || + e.SubItem == (int)Mtrlgy2Clmn.Qto || + e.SubItem >= (int)Mtrlgy2Clmn.Mtrlgy2ClmnCount) + { + return; + } + + metrology2ListViewEx.StartEditing(metrology2Editors[e.SubItem], e.Item, e.SubItem); + } + + void metrology2ListViewEx_SubItemRightClicked(object sender, SubItemEventArgs e) + { + if (!unlocked || + e.SubItem == (int)Mtrlgy2Clmn.Qfrom || + e.SubItem == (int)Mtrlgy2Clmn.Qto || + e.SubItem >= (int)Mtrlgy2Clmn.Mtrlgy2ClmnCount) + { + return; + } + + if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell, + Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + { + int columnNr = e.SubItem; + string value = null; + System.Drawing.Color backColor = System.Drawing.Color.White; + foreach (ListViewItem item in metrology2ListViewEx.Items) + { + if (value != null) + { + item.SubItems[columnNr].Text = value; + item.SubItems[columnNr].BackColor = backColor; + } + else if (item == e.Item) + { + value = item.SubItems[columnNr].Text; + backColor = item.SubItems[columnNr].BackColor; + } + } + } } private void metrology2ListViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) @@ -1238,13 +1302,47 @@ namespace TBF private void processListViewEx_SubItemClicked(object sender, SubItemEventArgs e) { - if (unlocked && - e.SubItem != (int)ProcessClmn.Qfrom && - e.SubItem != (int)ProcessClmn.Qto && - e.SubItem < (int)ProcessClmn.ProcessClmnCount) - { - processListViewEx.StartEditing(processEditors[e.SubItem], e.Item, e.SubItem); - } + if (!unlocked || + e.SubItem == (int)ProcessClmn.Qfrom || + e.SubItem == (int)ProcessClmn.Qto || + e.SubItem >= (int)ProcessClmn.ProcessClmnCount) + { + return; + } + + processListViewEx.StartEditing(processEditors[e.SubItem], e.Item, e.SubItem); + } + + void processListViewEx_SubItemRightClicked(object sender, SubItemEventArgs e) + { + if (!unlocked || + e.SubItem == (int)ProcessClmn.Qfrom || + e.SubItem == (int)ProcessClmn.Qto || + e.SubItem >= (int)ProcessClmn.ProcessClmnCount) + { + return; + } + + if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell, + Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + { + int columnNr = e.SubItem; + string value = null; + System.Drawing.Color backColor = System.Drawing.Color.White; + foreach (ListViewItem item in processListViewEx.Items) + { + if (value != null) + { + item.SubItems[columnNr].Text = value; + item.SubItems[columnNr].BackColor = backColor; + } + else if (item == e.Item) + { + value = item.SubItems[columnNr].Text; + backColor = item.SubItems[columnNr].BackColor; + } + } + } } private void processListViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) @@ -1275,15 +1373,49 @@ namespace TBF private void parametersListViewEx_SubItemClicked(object sender, SubItemEventArgs e) { - if (unlocked && - e.SubItem != (int)ParametersClmn.Qfrom && - e.SubItem != (int)ParametersClmn.Qto && - e.SubItem < (int)ParametersClmn.ParametersClmnCount) - { - parametersListViewEx.StartEditing(parametersEditors[e.SubItem], e.Item, e.SubItem); - } + if (!unlocked || + e.SubItem == (int)ParametersClmn.Qfrom || + e.SubItem == (int)ParametersClmn.Qto || + e.SubItem >= (int)ParametersClmn.ParametersClmnCount) + { + return; + } + + parametersListViewEx.StartEditing(parametersEditors[e.SubItem], e.Item, e.SubItem); } + void parametersListViewEx_SubItemRightClicked(object sender, SubItemEventArgs e) + { + if (!unlocked || + e.SubItem == (int)ParametersClmn.Qfrom || + e.SubItem == (int)ParametersClmn.Qto || + e.SubItem >= (int)ParametersClmn.ParametersClmnCount) + { + return; + } + + if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell, + Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + { + int columnNr = e.SubItem; + string value = null; + System.Drawing.Color backColor = System.Drawing.Color.White; + foreach (ListViewItem item in parametersListViewEx.Items) + { + if (value != null) + { + item.SubItems[columnNr].Text = value; + item.SubItems[columnNr].BackColor = backColor; + } + else if (item == e.Item) + { + value = item.SubItems[columnNr].Text; + backColor = item.SubItems[columnNr].BackColor; + } + } + } + } + private void parametersListViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) { int dummy; diff --git a/TestBenchFramework/Resources/Strings.Designer.cs b/TestBenchFramework/Resources/Strings.Designer.cs index f93e0035d..216062616 100644 --- a/TestBenchFramework/Resources/Strings.Designer.cs +++ b/TestBenchFramework/Resources/Strings.Designer.cs @@ -942,6 +942,15 @@ namespace TBF.Resources { } } + /// + /// Looks up a localized string similar to Do you want to copy this value to all cells below this cell?. + /// + internal static string Do_you_want_to_copy_this_value_to_all_cells_below_this_cell { + get { + return ResourceManager.GetString("Do_you_want_to_copy_this_value_to_all_cells_below_this_cell", resourceCulture); + } + } + /// /// Looks up a localized string similar to Do you want to delete the procedure?. /// diff --git a/TestBenchFramework/Resources/Strings.resx b/TestBenchFramework/Resources/Strings.resx index f2c6b1409..4284905c9 100644 --- a/TestBenchFramework/Resources/Strings.resx +++ b/TestBenchFramework/Resources/Strings.resx @@ -1534,4 +1534,7 @@ Heat meter options + + Do you want to copy this value to all cells below this cell? + \ No newline at end of file diff --git a/TestBenchFramework/UiControls/ListViewEx.cs b/TestBenchFramework/UiControls/ListViewEx.cs index 653f0b602..0d58a4ae6 100644 --- a/TestBenchFramework/UiControls/ListViewEx.cs +++ b/TestBenchFramework/UiControls/ListViewEx.cs @@ -67,7 +67,8 @@ namespace TBF.UiControls private System.ComponentModel.Container components = null; public event SubItemEventHandler SubItemClicked; - public event SubItemEventHandler SubItemBeginEditing; + public event SubItemEventHandler SubItemRightClicked; + public event SubItemEventHandler SubItemBeginEditing; public event SubItemEndEditingEventHandler SubItemEndEditing; public ListViewEx() @@ -237,12 +238,22 @@ namespace TBF.UiControls { base.OnMouseUp(e); - if (DoubleClickActivation) - { - return; - } + MouseEventArgs me = (MouseEventArgs)e; + if (me.Button == MouseButtons.Right) + { + /// Right mouse button click function + RightClickFunctionSubitemAt(new Point(e.X, e.Y)); + } + else + { + /// Normal function (=edit item) + if (DoubleClickActivation) + { + return; + } - EditSubitemAt(new Point(e.X, e.Y)); + EditSubitemAt(new Point(e.X, e.Y)); + } } protected override void OnDoubleClick(EventArgs e) @@ -273,6 +284,20 @@ namespace TBF.UiControls } } + /// + /// Fire SubItemRightClicked + /// + ///Point of click/doubleclick + private void RightClickFunctionSubitemAt(Point p) + { + ListViewItem item; + int idx = GetSubItemAt(p.X, p.Y, out item); + if (idx >= 0) + { + OnSubItemRightClicked(new SubItemEventArgs(item, idx)); + } + } + #endregion #region In-place editing functions @@ -298,6 +323,11 @@ namespace TBF.UiControls if (SubItemClicked != null) SubItemClicked(this, e); } + protected void OnSubItemRightClicked(SubItemEventArgs e) + { + if (SubItemRightClicked != null) SubItemRightClicked(this, e); + } + /// /// Begin in-place editing of given cell diff --git a/TestBenchFramework/UiControls/MetrologyDlgBalanceTab.cs b/TestBenchFramework/UiControls/MetrologyDlgBalanceTab.cs index 80462ccfc..ffc664f44 100644 --- a/TestBenchFramework/UiControls/MetrologyDlgBalanceTab.cs +++ b/TestBenchFramework/UiControls/MetrologyDlgBalanceTab.cs @@ -73,7 +73,8 @@ namespace TBF.UiControls this.Controls.Add(correctionTextBox); listViewEx.SubItemClicked += new SubItemEventHandler(listViewEx_SubItemClicked); - listViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); + listViewEx.SubItemRightClicked += new SubItemEventHandler(listViewEx_SubItemRightClicked); + listViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); listViewEx.Columns.Add(new ColumnHeader() { Text = Strings.Nr, Width = 60 }); listViewEx.Columns.Add(new ColumnHeader() { Text = Strings.Mass_kg, Width = 100 }); @@ -143,23 +144,65 @@ namespace TBF.UiControls } } - void listViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) - { - float value; - if (e.SubItem == 1 && Utils.TryParseEFloat(e.DisplayText, out value) && value >= 0) - { - (e.Item.Tag as MeasurementCorrection).Measurement = value; - return; - } - else if (e.SubItem == 2 && Utils.TryParseEFloat(e.DisplayText, out value)) - { - (e.Item.Tag as MeasurementCorrection).Correction = value / 1000.0f; - return; - } + void listViewEx_SubItemRightClicked(object sender, SubItemEventArgs e) + { + if (!unlocked || e.SubItem < 1 || e.SubItem > 2) return; - e.DisplayText = e.Item.Text; - e.Cancel = true; - } + if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell, + Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + { + int columnNr = e.SubItem; + string value = null; + System.Drawing.Color backColor = System.Drawing.Color.White; + + foreach (ListViewItem item in listViewEx.Items) + { + if (value != null) + { + item.SubItems[columnNr].Text = value; + item.SubItems[columnNr].BackColor = backColor; + ParseItem(item, columnNr, value); + } + else if (item == e.Item) + { + value = item.SubItems[columnNr].Text; + backColor = item.SubItems[columnNr].BackColor; + } + } + } + } + + void listViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) + { + if (ParseItem(e.Item, e.SubItem, e.DisplayText)) return; + + /// New value NOK, revert the original text + e.DisplayText = e.Item.Text; + e.Cancel = true; + } + + /// + /// Parse text of a ListViewItem + /// + /// true = value parsed OK + bool ParseItem(ListViewItem item, int subItem, string value) + { + float fvalue; + if (subItem == 1 && Utils.TryParseEFloat(value, out fvalue) && fvalue >= 0) + { + (item.Tag as MeasurementCorrection).Measurement = fvalue; + return true; + } + else if (subItem == 2 && Utils.TryParseEFloat(value, out fvalue)) + { + (item.Tag as MeasurementCorrection).Correction = fvalue / 1000.0f; + return true; + } + else + { + return false; + } + } public void Unlock() { diff --git a/TestBenchFramework/UiControls/MetrologyDlgFlowMeterTab.cs b/TestBenchFramework/UiControls/MetrologyDlgFlowMeterTab.cs index 54af3b4d3..1eeef1fa4 100644 --- a/TestBenchFramework/UiControls/MetrologyDlgFlowMeterTab.cs +++ b/TestBenchFramework/UiControls/MetrologyDlgFlowMeterTab.cs @@ -76,7 +76,8 @@ namespace TBF.UiControls this.Controls.Add(correctionTextBox); listViewEx.SubItemClicked += new SubItemEventHandler(listViewEx_SubItemClicked); - listViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); + listViewEx.SubItemRightClicked += new SubItemEventHandler(listViewEx_SubItemRightClicked); + listViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); listViewEx.Columns.Add(new ColumnHeader() { Text = Strings.Nr, Width = 60 }); listViewEx.Columns.Add(new ColumnHeader() { Text = Strings.Flow_m3h, Width = 100 }); @@ -134,23 +135,65 @@ namespace TBF.UiControls } } - void listViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) - { - float value; - if (e.SubItem == 1 && Utils.TryParseEFloat(e.DisplayText, out value) && value >= 0) - { - (e.Item.Tag as MeasurementCorrection).Measurement = value; - return; - } - else if (e.SubItem == 2 && Utils.TryParseEFloat(e.DisplayText, out value)) - { - (e.Item.Tag as MeasurementCorrection).Correction = value / 1000.0f; - return; - } + void listViewEx_SubItemRightClicked(object sender, SubItemEventArgs e) + { + if (!unlocked || e.SubItem < 1 || e.SubItem > 2) return; - e.DisplayText = e.Item.Text; - e.Cancel = true; - } + if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell, + Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + { + int columnNr = e.SubItem; + string value = null; + System.Drawing.Color backColor = System.Drawing.Color.White; + + foreach (ListViewItem item in listViewEx.Items) + { + if (value != null) + { + item.SubItems[columnNr].Text = value; + item.SubItems[columnNr].BackColor = backColor; + ParseItem(item, columnNr, value); + } + else if (item == e.Item) + { + value = item.SubItems[columnNr].Text; + backColor = item.SubItems[columnNr].BackColor; + } + } + } + } + + void listViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) + { + if (ParseItem(e.Item, e.SubItem, e.DisplayText)) return; + + /// New value NOK, revert the original text + e.DisplayText = e.Item.Text; + e.Cancel = true; + } + + /// + /// Parse text of a ListViewItem + /// + /// true = value parsed OK + bool ParseItem(ListViewItem item, int subItem, string value) + { + float fvalue; + if (subItem == 1 && Utils.TryParseEFloat(value, out fvalue) && fvalue >= 0) + { + (item.Tag as MeasurementCorrection).Measurement = fvalue; + return true; + } + else if (subItem == 2 && Utils.TryParseEFloat(value, out fvalue)) + { + (item.Tag as MeasurementCorrection).Correction = fvalue / 1000.0f; + return true; + } + else + { + return false; + } + } public void Unlock() { diff --git a/TestBenchFramework/UiControls/MetrologyDlgPressMeterTab.cs b/TestBenchFramework/UiControls/MetrologyDlgPressMeterTab.cs index 67b24680c..5d39c5d38 100644 --- a/TestBenchFramework/UiControls/MetrologyDlgPressMeterTab.cs +++ b/TestBenchFramework/UiControls/MetrologyDlgPressMeterTab.cs @@ -70,7 +70,8 @@ namespace TBF.UiControls this.Controls.Add(correctionTextBox); listViewEx.SubItemClicked += new SubItemEventHandler(listViewEx_SubItemClicked); - listViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); + listViewEx.SubItemRightClicked += new SubItemEventHandler(listViewEx_SubItemRightClicked); + listViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); listViewEx.Columns.Add(new ColumnHeader() { Text = Strings.Nr, Width = 60 }); listViewEx.Columns.Add(new ColumnHeader() { Text = Strings.Pressure_bar, Width = 100 }); @@ -107,24 +108,66 @@ namespace TBF.UiControls } } + void listViewEx_SubItemRightClicked(object sender, SubItemEventArgs e) + { + if (!unlocked || e.SubItem < 1 || e.SubItem > 2) return; + + if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell, + Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + { + int columnNr = e.SubItem; + string value = null; + System.Drawing.Color backColor = System.Drawing.Color.White; + + foreach (ListViewItem item in listViewEx.Items) + { + if (value != null) + { + item.SubItems[columnNr].Text = value; + item.SubItems[columnNr].BackColor = backColor; + ParseItem(item, columnNr, value); + } + else if (item == e.Item) + { + value = item.SubItems[columnNr].Text; + backColor = item.SubItems[columnNr].BackColor; + } + } + } + } + void listViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) { - float value; - if (e.SubItem == 1 && Utils.TryParseEFloat(e.DisplayText, out value) && value >= 0) - { - (e.Item.Tag as MeasurementCorrection).Measurement = value; - return; - } - else if (e.SubItem == 2 && Utils.TryParseEFloat(e.DisplayText, out value)) - { - (e.Item.Tag as MeasurementCorrection).Correction = value / 1000.0f; - return; - } + if (ParseItem(e.Item, e.SubItem, e.DisplayText)) return; + /// New value NOK, revert the original text e.DisplayText = e.Item.Text; e.Cancel = true; } + /// + /// Parse text of a ListViewItem + /// + /// true = value parsed OK + bool ParseItem(ListViewItem item, int subItem, string value) + { + float fvalue; + if (subItem == 1 && Utils.TryParseEFloat(value, out fvalue) && fvalue >= 0) + { + (item.Tag as MeasurementCorrection).Measurement = fvalue; + return true; + } + else if (subItem == 2 && Utils.TryParseEFloat(value, out fvalue)) + { + (item.Tag as MeasurementCorrection).Correction = fvalue / 1000.0f; + return true; + } + else + { + return false; + } + } + public void Unlock() { unlocked = true; diff --git a/TestBenchFramework/UiControls/PathsBenchCtrl.cs b/TestBenchFramework/UiControls/PathsBenchCtrl.cs index 9434621e3..e7bd3b21a 100644 --- a/TestBenchFramework/UiControls/PathsBenchCtrl.cs +++ b/TestBenchFramework/UiControls/PathsBenchCtrl.cs @@ -54,7 +54,8 @@ namespace TBF.UiControls .List(); SubItemClicked += new SubItemEventHandler(listViewEx_SubItemClicked); - SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); + SubItemRightClicked += new SubItemEventHandler(listViewEx_SubItemRightClicked); + SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); /// ListViewEx columns TBF.LocalSettings ls = Program.LocalSettings; @@ -142,6 +143,32 @@ namespace TBF.UiControls StartEditing(editors[e.SubItem], e.Item, e.SubItem); } + void listViewEx_SubItemRightClicked(object sender, SubItemEventArgs e) + { + if (!Unlocked || e.SubItem >= editors.Length) return; + + if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell, + Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + { + int columnNr = e.SubItem; + string value = null; + Color backColor = Color.White; + foreach (ListViewItem item in Items) + { + if (value != null) + { + item.SubItems[columnNr].Text = value; + item.SubItems[columnNr].BackColor = backColor; + } + else if (item == e.Item) + { + value = item.SubItems[columnNr].Text; + backColor = item.SubItems[columnNr].BackColor; + } + } + } + } + void listViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) { if (e.SubItem >= fixedColumnsCount) diff --git a/TestBenchFramework/UiControls/PathsFeedingCtrl.cs b/TestBenchFramework/UiControls/PathsFeedingCtrl.cs index f06911d21..8763d8be9 100644 --- a/TestBenchFramework/UiControls/PathsFeedingCtrl.cs +++ b/TestBenchFramework/UiControls/PathsFeedingCtrl.cs @@ -51,7 +51,8 @@ namespace TBF.UiControls .List(); SubItemClicked += new SubItemEventHandler(listViewEx_SubItemClicked); - SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); + SubItemRightClicked += new SubItemEventHandler(listViewEx_SubItemRightClicked); + SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); /// ListViewEx columns TBF.LocalSettings ls = Program.LocalSettings; @@ -114,11 +115,37 @@ namespace TBF.UiControls StartEditing(editors[e.SubItem], e.Item, e.SubItem); } + void listViewEx_SubItemRightClicked(object sender, SubItemEventArgs e) + { + if (!Unlocked || e.SubItem >= editors.Length) return; + + if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell, + Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + { + int columnNr = e.SubItem; + string value = null; + Color backColor = Color.White; + foreach (ListViewItem item in Items) + { + if (value != null) + { + item.SubItems[columnNr].Text = value; + item.SubItems[columnNr].BackColor = backColor; + } + else if (item == e.Item) + { + value = item.SubItems[columnNr].Text; + backColor = item.SubItems[columnNr].BackColor; + } + } + } + } + void listViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) { if (e.SubItem >= fixedColumnsCount) { - e.Item.SubItems[e.SubItem].BackColor = e.DisplayText == Strings.open ? Color.LightGray : Color.White; + e.Item.SubItems[e.SubItem].BackColor = (e.DisplayText == Strings.open) ? Color.LightGray : Color.White; } } diff --git a/TestBenchFramework/UiControls/PathsHeatMetersCtrl.cs b/TestBenchFramework/UiControls/PathsHeatMetersCtrl.cs index ae1cf04e0..9ba82f872 100644 --- a/TestBenchFramework/UiControls/PathsHeatMetersCtrl.cs +++ b/TestBenchFramework/UiControls/PathsHeatMetersCtrl.cs @@ -58,6 +58,7 @@ namespace TBF.UiControls .List(); SubItemClicked += new SubItemEventHandler(listViewEx_SubItemClicked); + SubItemRightClicked += new SubItemEventHandler(listViewEx_SubItemRightClicked); SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); IList tempMeters = new List(); @@ -113,7 +114,7 @@ namespace TBF.UiControls base.RedrawAll(); #endif - } + } void listViewEx_SubItemClicked(object sender, SubItemEventArgs e) { @@ -127,6 +128,32 @@ namespace TBF.UiControls StartEditing(editors[e.SubItem], e.Item, e.SubItem); } + void listViewEx_SubItemRightClicked(object sender, SubItemEventArgs e) + { + if (!Unlocked || e.SubItem >= editors.Length) return; + + if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell, + Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + { + int columnNr = e.SubItem; + string value = null; + System.Drawing.Color backColor = System.Drawing.Color.White; + foreach (ListViewItem item in Items) + { + if (value != null) + { + item.SubItems[columnNr].Text = value; + item.SubItems[columnNr].BackColor = backColor; + } + else if (item == e.Item) + { + value = item.SubItems[columnNr].Text; + backColor = item.SubItems[columnNr].BackColor; + } + } + } + } + void listViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) { if (e.SubItem >= (int)Column.TWarmFrom && e.SubItem <= (int)Column.TColdTo) diff --git a/TestBenchFramework/UiControls/PathsMetersCtrl.cs b/TestBenchFramework/UiControls/PathsMetersCtrl.cs index 27bf576f2..3bd50cb7d 100644 --- a/TestBenchFramework/UiControls/PathsMetersCtrl.cs +++ b/TestBenchFramework/UiControls/PathsMetersCtrl.cs @@ -45,7 +45,8 @@ namespace TBF.UiControls .List(); SubItemClicked += new SubItemEventHandler(listViewEx_SubItemClicked); - SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); + SubItemRightClicked += new SubItemEventHandler(listViewEx_SubItemRightClicked); + SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); IList readers = new List(); foreach (var cmpnt in parent.TbfComponents) @@ -90,6 +91,32 @@ namespace TBF.UiControls StartEditing(editors[e.SubItem], e.Item, e.SubItem); } + void listViewEx_SubItemRightClicked(object sender, SubItemEventArgs e) + { + if (!Unlocked || e.SubItem >= editors.Length) return; + + if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell, + Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + { + int columnNr = e.SubItem; + string value = null; + System.Drawing.Color backColor = System.Drawing.Color.White; + foreach (ListViewItem item in Items) + { + if (value != null) + { + item.SubItems[columnNr].Text = value; + item.SubItems[columnNr].BackColor = backColor; + } + else if (item == e.Item) + { + value = item.SubItems[columnNr].Text; + backColor = item.SubItems[columnNr].BackColor; + } + } + } + } + void listViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) { } diff --git a/TestBenchFramework/UiControls/PathsOutputCtrl.cs b/TestBenchFramework/UiControls/PathsOutputCtrl.cs index e4824d63f..138adfb54 100644 --- a/TestBenchFramework/UiControls/PathsOutputCtrl.cs +++ b/TestBenchFramework/UiControls/PathsOutputCtrl.cs @@ -58,7 +58,8 @@ namespace TBF.UiControls .List(); SubItemClicked += new SubItemEventHandler(listViewEx_SubItemClicked); - SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); + SubItemRightClicked += new SubItemEventHandler(listViewEx_SubItemRightClicked); + SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); /// ListViewEx columns TBF.LocalSettings ls = Program.LocalSettings; @@ -156,6 +157,32 @@ namespace TBF.UiControls StartEditing(editors[e.SubItem], e.Item, e.SubItem); } + void listViewEx_SubItemRightClicked(object sender, SubItemEventArgs e) + { + if (!Unlocked || e.SubItem >= editors.Length) return; + + if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell, + Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + { + int columnNr = e.SubItem; + string value = null; + System.Drawing.Color backColor = System.Drawing.Color.White; + foreach (ListViewItem item in Items) + { + if (value != null) + { + item.SubItems[columnNr].Text = value; + item.SubItems[columnNr].BackColor = backColor; + } + else if (item == e.Item) + { + value = item.SubItems[columnNr].Text; + backColor = item.SubItems[columnNr].BackColor; + } + } + } + } + void listViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) { if (e.SubItem >= fixedColumnsCount) diff --git a/TestBenchFramework/UiControls/ProcedureParamsCtrl.cs b/TestBenchFramework/UiControls/ProcedureParamsCtrl.cs index 472cbf03e..77e38cc57 100644 --- a/TestBenchFramework/UiControls/ProcedureParamsCtrl.cs +++ b/TestBenchFramework/UiControls/ProcedureParamsCtrl.cs @@ -96,7 +96,8 @@ namespace TBF.UiControls } listViewEx.SubItemClicked += new SubItemEventHandler(listViewEx_SubItemClicked); - listViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); + listViewEx.SubItemRightClicked += new SubItemEventHandler(listViewEx_SubItemRightClicked); + listViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); RedrawAll(); } @@ -107,6 +108,39 @@ namespace TBF.UiControls listViewEx.StartEditing(editors[e.SubItem - nrFixedColumns], e.Item, e.SubItem); } + void listViewEx_SubItemRightClicked(object sender, SubItemEventArgs e) + { + if (!unlocked || e.Item.Tag == null || e.SubItem < nrFixedColumns || e.SubItem >= nrFixedColumns + editors.Length) return; + + if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell, + Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + { + int columnNr = e.SubItem; + string value = null; + System.Drawing.Color backColor = System.Drawing.Color.White; + foreach (ListViewItem item in listViewEx.Items) + { + if (value != null) + { + item.SubItems[columnNr].Text = value; + item.SubItems[columnNr].BackColor = backColor; + + int itemNr = columnNr - nrFixedColumns; + string message; + if ((item.Tag as IParamsProvider).ValidateParam(itemNr, value, out message)) + { + (item.Tag as IParamsProvider).UpdateParam(itemNr, value); + } + } + else if (item == e.Item) + { + value = item.SubItems[columnNr].Text; + backColor = item.SubItems[columnNr].BackColor; + } + } + } + } + private void listViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) { string message; diff --git a/TestBenchFramework/UiControls/TestParamsCtrl.cs b/TestBenchFramework/UiControls/TestParamsCtrl.cs index 2b4267435..ec263e8f3 100644 --- a/TestBenchFramework/UiControls/TestParamsCtrl.cs +++ b/TestBenchFramework/UiControls/TestParamsCtrl.cs @@ -100,7 +100,8 @@ namespace TBF.UiControls } listViewEx.SubItemClicked += new SubItemEventHandler(listViewEx_SubItemClicked); - listViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); + listViewEx.SubItemRightClicked += new SubItemEventHandler(listViewEx_SubItemRightClicked); + listViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); RedrawAll(); } @@ -108,11 +109,44 @@ namespace TBF.UiControls private void listViewEx_SubItemClicked(object sender, SubItemEventArgs e) { int itemNr = showTestsColumn ? (e.SubItem - 1) : e.SubItem; - if (!unlocked || e.Item.Tag == null || itemNr >= editors.Length || itemNr < 0) return; - listViewEx.StartEditing(editors[itemNr], e.Item, e.SubItem); + + listViewEx.StartEditing(editors[itemNr], e.Item, e.SubItem); } + void listViewEx_SubItemRightClicked(object sender, SubItemEventArgs e) + { + int itemNr = showTestsColumn ? (e.SubItem - 1) : e.SubItem; + if (!unlocked || e.Item.Tag == null || itemNr >= editors.Length || itemNr < 0) return; + + if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell, + Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + { + int columnNr = e.SubItem; + string value = null; + System.Drawing.Color backColor = System.Drawing.Color.White; + foreach (ListViewItem item in listViewEx.Items) + { + if (value != null) + { + item.SubItems[columnNr].Text = value; + item.SubItems[columnNr].BackColor = backColor; + + string message; + if ((item.Tag as IParamsProvider).ValidateParam(itemNr, value, out message)) + { + (item.Tag as IParamsProvider).UpdateParam(itemNr, value); + } + } + else if (item == e.Item) + { + value = item.SubItems[columnNr].Text; + backColor = item.SubItems[columnNr].BackColor; + } + } + } + } + private void listViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) { string message; diff --git a/TestBenchFramework/UiControls/TransitionStepsCtrl.cs b/TestBenchFramework/UiControls/TransitionStepsCtrl.cs index 1df67852f..b7ca82db0 100644 --- a/TestBenchFramework/UiControls/TransitionStepsCtrl.cs +++ b/TestBenchFramework/UiControls/TransitionStepsCtrl.cs @@ -52,7 +52,8 @@ namespace TBF.UiControls MyItems = sequence.TransitionSteps; SubItemClicked += new SubItemEventHandler(listViewEx_SubItemClicked); - SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); + SubItemRightClicked += new SubItemEventHandler(listViewEx_SubItemRightClicked); + SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); vCount = 0; fmPumpCount = 0; @@ -168,6 +169,32 @@ namespace TBF.UiControls StartEditing(editors[e.SubItem], e.Item, e.SubItem); } + void listViewEx_SubItemRightClicked(object sender, SubItemEventArgs e) + { + if (!Unlocked || e.SubItem >= editors.Length) return; + + if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell, + Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + { + int columnNr = e.SubItem; + string value = null; + System.Drawing.Color backColor = System.Drawing.Color.White; + foreach (ListViewItem item in Items) + { + if (value != null) + { + item.SubItems[columnNr].Text = value; + item.SubItems[columnNr].BackColor = backColor; + } + else if (item == e.Item) + { + value = item.SubItems[columnNr].Text; + backColor = item.SubItems[columnNr].BackColor; + } + } + } + } + void listViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) { if (e.SubItem == (int)Column.Duration) diff --git a/TestBenchFramework/UiControls/VirtualBenchStepsCtrl.cs b/TestBenchFramework/UiControls/VirtualBenchStepsCtrl.cs index ac0209ea2..8effa1a35 100644 --- a/TestBenchFramework/UiControls/VirtualBenchStepsCtrl.cs +++ b/TestBenchFramework/UiControls/VirtualBenchStepsCtrl.cs @@ -50,7 +50,8 @@ namespace TBF.UiControls MyItems = sequence.VirtualBenchSteps; SubItemClicked += new SubItemEventHandler(listViewEx_SubItemClicked); - SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); + SubItemRightClicked += new SubItemEventHandler(listViewEx_SubItemRightClicked); + SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing); vCount = 0; fmPumpCount = 0; @@ -136,6 +137,32 @@ namespace TBF.UiControls StartEditing(editors[e.SubItem], e.Item, e.SubItem); } + void listViewEx_SubItemRightClicked(object sender, SubItemEventArgs e) + { + if (!Unlocked || e.SubItem >= editors.Length) return; + + if (DialogResult.Yes == MessageBox.Show(Strings.Do_you_want_to_copy_this_value_to_all_cells_below_this_cell, + Strings.Confirmation, MessageBoxButtons.YesNo, MessageBoxIcon.Question)) + { + int columnNr = e.SubItem; + string value = null; + System.Drawing.Color backColor = System.Drawing.Color.White; + foreach (ListViewItem item in Items) + { + if (value != null) + { + item.SubItems[columnNr].Text = value; + item.SubItems[columnNr].BackColor = backColor; + } + else if (item == e.Item) + { + value = item.SubItems[columnNr].Text; + backColor = item.SubItems[columnNr].BackColor; + } + } + } + } + void listViewEx_SubItemEndEditing(object sender, SubItemEndEditingEventArgs e) { if (e.SubItem == (int)Column.Duration)