diff --git a/TBF/UI/Procedures/ProceduresCtrl.Designer.cs b/TBF/UI/Procedures/ProceduresCtrl.Designer.cs
index fb4597906..4b8e499d9 100644
--- a/TBF/UI/Procedures/ProceduresCtrl.Designer.cs
+++ b/TBF/UI/Procedures/ProceduresCtrl.Designer.cs
@@ -159,6 +159,7 @@
this.listViewEx.TabIndex = 0;
this.listViewEx.UseCompatibleStateImageBehavior = false;
this.listViewEx.View = System.Windows.Forms.View.Details;
+ this.listViewEx.ColumnClick += new System.Windows.Forms.ColumnClickEventHandler(this.listViewEx_ColumnClick);
this.listViewEx.SelectedIndexChanged += new System.EventHandler(this.listViewEx_SelectedIndexChanged);
this.listViewEx.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.listViewEx_MouseDoubleClick);
//
diff --git a/TBF/UI/Procedures/ProceduresCtrl.cs b/TBF/UI/Procedures/ProceduresCtrl.cs
index 460bcdc7c..38dbf921d 100644
--- a/TBF/UI/Procedures/ProceduresCtrl.cs
+++ b/TBF/UI/Procedures/ProceduresCtrl.cs
@@ -55,11 +55,9 @@ namespace TBF.UI.Procedures
{
ItemNr,
Name,
- Description,
More,
- ColumnsCount,
+ Count
}
- readonly int columnsCount = (int)Column.ColumnsCount;
ProceduresDlg parent;
Control parentControl;
@@ -93,6 +91,8 @@ namespace TBF.UI.Procedures
producerComboBox.Text = Strings.any;
producerComboBox.Items.Add(Strings.any);
selectedProducer = null;
+
+ moreContent = MoreContent.Description;
}
public void Initialize(ProceduresDlg parent, Control parentControl)
@@ -109,14 +109,12 @@ namespace TBF.UI.Procedures
TBF.LocalSettings ls = Program.LocalSettings;
listViewEx.Columns.Add(Strings.Nr, (ls.ProceduresColumnCount > 0) ? ls.ProceduresColumnWidths[0] : (30 * parent.Dpi / Constants.Dpi100pct));
listViewEx.Columns.Add(Strings.Name, (ls.ProceduresColumnCount > 1) ? ls.ProceduresColumnWidths[1] : (100 * parent.Dpi / Constants.Dpi100pct));
- listViewEx.Columns.Add(Strings.DescriptionColHdr, (ls.ProceduresColumnCount > 2) ? ls.ProceduresColumnWidths[2] : (300 * parent.Dpi / Constants.Dpi100pct));
- listViewEx.Columns.Add(Strings.More, (ls.ProceduresColumnCount > 3) ? ls.ProceduresColumnWidths[3] : (300 * parent.Dpi / Constants.Dpi100pct));
+ listViewEx.Columns.Add(Strings.DescriptionColHdr, (ls.ProceduresColumnCount > 2) ? ls.ProceduresColumnWidths[2] : (500 * parent.Dpi / Constants.Dpi100pct));
- editors = new Control[columnsCount];
+ editors = new Control[(int)Column.Count];
///
editors[(int)Column.ItemNr] = new TextBox(); /// ItemNr
editors[(int)Column.Name] = new TextBox(); /// Name
- editors[(int)Column.Description] = new TextBox(); /// Description
editors[(int)Column.More] = null;
///
for (int i = 0; i < editors.Length; i++)
@@ -233,18 +231,10 @@ namespace TBF.UI.Procedures
void DrawOne(Procedure procedure)
{
- StringBuilder tests = new StringBuilder();
- foreach (var test in procedure.Tests)
- {
- tests.Append(test.Name);
- tests.Append(", ");
- }
-
ListViewItem lvi = new ListViewItem((procedure.ItemNr + 1).ToString());
- lvi.SubItems.Add(procedure.Name);
- lvi.SubItems.Add(procedure.Description);
- lvi.SubItems.Add(tests.ToString());
lvi.Tag = procedure;
+ lvi.SubItems.Add(procedure.Name);
+ lvi.SubItems.Add(GetMoreContent(procedure, moreContent));
listViewEx.Items.Add(lvi);
}
@@ -981,5 +971,107 @@ namespace TBF.UI.Procedures
bool isFilterAny = (selectedDN == 0) && (selectedQ3 == 0) && (selectedMClass == null) && (selectedProducer == null);
if (parent != null) parent.SelectedIndexChanged(listViewEx, isFilterAny);
}
+
+
+
+ ///
+ /// 'More' column content selector.
+ ///
+ enum MoreContent
+ {
+ Description,
+ Tests,
+ Writers,
+ Printers,
+ Count
+ }
+ MoreContent moreContent;
+
+ ///
+ /// 'More' column header clicked => change moreContent valiable, column header text and redraw the column.
+ ///
+ private void listViewEx_ColumnClick(object sender, ColumnClickEventArgs e)
+ {
+ if (e.Column == (int)Column.More)
+ {
+ if (++moreContent == MoreContent.Count) moreContent = 0;
+ switch(moreContent)
+ {
+ case MoreContent.Description:
+ listViewEx.Columns[(int)Column.More].Text = Strings.DescriptionColHdr;
+ break;
+ case MoreContent.Tests:
+ listViewEx.Columns[(int)Column.More].Text = Strings.Test;
+ break;
+ case MoreContent.Writers:
+ listViewEx.Columns[(int)Column.More].Text = "Writers";
+ break;
+ case MoreContent.Printers:
+ listViewEx.Columns[(int)Column.More].Text = "Printers";
+ break;
+ default:
+ listViewEx.Columns[(int)Column.More].Text = string.Empty;
+ break;
+ }
+
+ RedrawMoreColumn();
+ }
+ }
+
+ ///
+ /// Update the complete 'More' column
+ ///
+ void RedrawMoreColumn()
+ {
+ foreach (ListViewItem item in listViewEx.Items)
+ {
+ item.SubItems[(int)Column.More].Text = GetMoreContent(item.Tag as Procedure, moreContent);
+ }
+ }
+
+ ///
+ /// Get content of the 'More' column.
+ ///
+ /// Procedure in this row
+ /// 'More' column content selector
+ /// Text to be displayed
+ string GetMoreContent(Procedure procedure, MoreContent content)
+ {
+ if (procedure == null) return string.Empty;
+
+ StringBuilder sb = new StringBuilder();
+ switch (content)
+ {
+ case MoreContent.Description:
+ return string.IsNullOrEmpty(procedure.Description) ? string.Empty : procedure.Description;
+
+ case MoreContent.Tests:
+ foreach (var test in procedure.Tests)
+ {
+ sb.Append(test.Name);
+ sb.Append(" ");
+ }
+ break;
+
+ case MoreContent.Writers:
+ if (!string.IsNullOrEmpty(procedure.ResultsWriter))
+ {
+ string[] writers = procedure.ResultsWriter.Split(new char[] { '~' });
+ Array.Sort(writers);
+ foreach (var w in writers) { sb.Append(w); sb.Append(" "); }
+ }
+ break;
+
+ case MoreContent.Printers:
+ if (!string.IsNullOrEmpty(procedure.ResultsPrinter))
+ {
+ string[] printers = procedure.ResultsPrinter.Split(new char[] { '~' });
+ Array.Sort(printers);
+ foreach (var p in printers) { sb.Append(p); sb.Append(" "); }
+ }
+ break;
+ }
+ return sb.ToString();
+ }
}
}