Refactorization: TBF.UI namespace, no change of function, ver. 2.18.1314
This commit is contained in:
@@ -0,0 +1,220 @@
|
||||
///
|
||||
/// Copyright (c) 2013-2015 Sensus Slovensko a.s.
|
||||
///
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
using Config.Entities;
|
||||
using Results.Forms;
|
||||
using TBF.BenchControl.Generic;
|
||||
using TBF.Resources;
|
||||
|
||||
namespace TBF.UI.Procedures
|
||||
{
|
||||
/// ---------------
|
||||
/// / Path or other \
|
||||
/// |------------------------------
|
||||
/// | param1 param2 param3 ...
|
||||
/// Component1 |
|
||||
/// Component2 |
|
||||
/// ... |
|
||||
///
|
||||
public partial class ProcedureParamsCtrl : UserControl
|
||||
{
|
||||
ProcedureDlg parent;
|
||||
bool showSensorsColumn;
|
||||
int nrFixedColumns;
|
||||
IList<IComponent> selectedCmpnts;
|
||||
IList<IParamsProvider> cmpntsParams;
|
||||
|
||||
int paramsCount;
|
||||
Control[] editors;
|
||||
bool unlocked;
|
||||
public void Unlock(){ unlocked = true; }
|
||||
|
||||
public ProcedureParamsCtrl()
|
||||
{
|
||||
InitializeComponent();
|
||||
cmpntsParams = new List<IParamsProvider>();
|
||||
}
|
||||
|
||||
public ProcedureParamsCtrl(ProcedureDlg parent, IList<IComponent> selectedCmpnts, bool showSensorsColumn)
|
||||
: this()
|
||||
{
|
||||
this.parent = parent;
|
||||
this.selectedCmpnts = selectedCmpnts;
|
||||
this.showSensorsColumn = showSensorsColumn;
|
||||
nrFixedColumns = (showSensorsColumn ? 2 : 1);
|
||||
unlocked = false;
|
||||
|
||||
this.SuspendLayout();
|
||||
Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
listViewEx.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
listViewEx.AllowColumnReorder = false;
|
||||
listViewEx.DoubleClickActivation = false;
|
||||
listViewEx.FullRowSelect = true;
|
||||
listViewEx.GridLines = true;
|
||||
listViewEx.Location = new System.Drawing.Point(0, 0);
|
||||
listViewEx.TabIndex = 0;
|
||||
listViewEx.UseCompatibleStateImageBehavior = false;
|
||||
listViewEx.View = System.Windows.Forms.View.Details;
|
||||
ResumeLayout(false);
|
||||
}
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
if (selectedCmpnts == null) return;
|
||||
|
||||
IParamsProvider sampleToCreateHeader = null;
|
||||
|
||||
foreach (var cmpnt in selectedCmpnts)
|
||||
{
|
||||
IParamsProvider procedureParams = null;
|
||||
|
||||
if (cmpnt != null)
|
||||
{
|
||||
procedureParams = cmpnt.Cfg.GetUIProcParamsProvider(parent.LoadedProcedure);
|
||||
if ((sampleToCreateHeader == null) ||
|
||||
((procedureParams != null) && (procedureParams.ParamsCount() > sampleToCreateHeader.ParamsCount())))
|
||||
{
|
||||
sampleToCreateHeader = procedureParams;
|
||||
}
|
||||
}
|
||||
|
||||
cmpntsParams.Add(procedureParams);
|
||||
}
|
||||
|
||||
if (sampleToCreateHeader != null)
|
||||
{
|
||||
if (showSensorsColumn) listViewEx.Columns.Add(Strings.Sensor, 60);
|
||||
listViewEx.Columns.Add(Strings.Component, 80);
|
||||
|
||||
paramsCount = sampleToCreateHeader.ParamsCount();
|
||||
editors = new Control[paramsCount];
|
||||
for (int i = 0; i < paramsCount; i++)
|
||||
{
|
||||
listViewEx.Columns.Add(sampleToCreateHeader.ParamName(i), 80);
|
||||
IList<string> values = sampleToCreateHeader.ParamValues(i);
|
||||
if (values == null)
|
||||
{
|
||||
editors[i] = new TextBox();
|
||||
}
|
||||
else
|
||||
{
|
||||
ComboBox cb = new ComboBox();
|
||||
foreach (var v in values) cb.Items.Add(v);
|
||||
editors[i] = cb;
|
||||
}
|
||||
editors[i].Visible = false;
|
||||
this.Controls.Add(editors[i]);
|
||||
}
|
||||
}
|
||||
|
||||
listViewEx.SubItemClicked += new SubItemEventHandler(listViewEx_SubItemClicked);
|
||||
listViewEx.SubItemRightClicked += new SubItemEventHandler(listViewEx_SubItemRightClicked);
|
||||
listViewEx.SubItemEndEditing += new SubItemEndEditingEventHandler(listViewEx_SubItemEndEditing);
|
||||
|
||||
RedrawAll();
|
||||
}
|
||||
|
||||
private void listViewEx_SubItemClicked(object sender, SubItemEventArgs e)
|
||||
{
|
||||
if (!unlocked || e.Item.Tag == null || e.SubItem < nrFixedColumns || e.SubItem >= nrFixedColumns + editors.Length) return;
|
||||
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.Count > columnNr)
|
||||
{
|
||||
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;
|
||||
if ((e.Item.Tag as IParamsProvider).ValidateParam(e.SubItem - nrFixedColumns, e.DisplayText, out message))
|
||||
{
|
||||
(e.Item.Tag as IParamsProvider).UpdateParam(e.SubItem - nrFixedColumns, e.DisplayText);
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox.Show(message);
|
||||
e.DisplayText = e.Item.SubItems[e.SubItem].Text;
|
||||
e.Cancel = true;
|
||||
return; /// NOK
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void RedrawAll()
|
||||
{
|
||||
listViewEx.Items.Clear();
|
||||
foreach (var item in cmpntsParams) DrawOne(item);
|
||||
}
|
||||
|
||||
void DrawOne(IParamsProvider item)
|
||||
{
|
||||
if (item == null)
|
||||
{
|
||||
listViewEx.Items.Add(new ListViewItem());
|
||||
return;
|
||||
}
|
||||
|
||||
ListViewItem lvi;
|
||||
if (showSensorsColumn)
|
||||
{
|
||||
lvi = new ListViewItem((listViewEx.Items.Count + 1).ToString());
|
||||
lvi.SubItems.Add(selectedCmpnts[listViewEx.Items.Count].Cfg.Name);
|
||||
}
|
||||
else
|
||||
{
|
||||
lvi = new ListViewItem(selectedCmpnts[listViewEx.Items.Count].Cfg.Name);
|
||||
}
|
||||
for (int i = 0; i < paramsCount; i++) lvi.SubItems.Add(item.ToString(i));
|
||||
lvi.Tag = item;
|
||||
listViewEx.Items.Add(lvi);
|
||||
}
|
||||
|
||||
public bool UpdateAll()
|
||||
{
|
||||
if (!unlocked) return false;
|
||||
|
||||
foreach (ListViewItem lvi in listViewEx.Items)
|
||||
{
|
||||
if (lvi.Tag is IParamsProvider)
|
||||
{
|
||||
if (!(lvi.Tag as IParamsProvider).UpdateEmbeddedDbEntity()) return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user