public void InitializeValuesFrom(ParameterDefinitions other) { foreach (ParameterDefinition pdNew in this) { ParameterDefinition pdOld = other.Find(pdNew); if (pdOld == null) { continue; } SetParameterDefinition spdOld = pdOld as SetParameterDefinition; SetParameterDefinition spdNew = pdNew as SetParameterDefinition; if (spdOld == null || spdNew == null) { continue; } spdNew.InitializeFrom(spdOld); } }
public override void InitializeFrom(SetParameterDefinition otherTmp) { EnumParameterDefinition other = otherTmp as EnumParameterDefinition; if (other == null) { return; } for (int iValue = 0; iValue < other.CountValues; iValue++) { object value = other.GetValue(iValue); string strName = Enum.GetName(otherTmp.Parameter.ParameterType, value); if (strName != null) { object valueNew = Enum.Parse(this.Parameter.ParameterType, strName); if (valueNew != null) { this.AddValue(valueNew); } } } }
public abstract void InitializeFrom(SetParameterDefinition other);
internal void InitializeParameters(ParameterDefinitions rgParameterDefinitions) { if (_rgParameterDefinitions != null) { rgParameterDefinitions.InitializeValuesFrom(_rgParameterDefinitions); } tableLayoutPanel1.Controls.Clear(); tableLayoutPanel1.RowCount = 1; _rgParameterDefinitions = rgParameterDefinitions; bool fShowColumns = false; int iRow = 0; foreach (ParameterDefinition pd in rgParameterDefinitions) { SetParameterDefinition ed = pd as SetParameterDefinition; if (ed != null) { fShowColumns = true; CheckBox cbTitle = new CheckBox(); cbTitle.Text = ed.Parameter.Name; cbTitle.AutoSize = true; cbTitle.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; int iRowStart = iRow; List <CheckBox> rgCheckboxes = new List <CheckBox> (); bool fUpdating = false; Action <bool> initTitleCheckbox = delegate(bool f) { bool fAllChecked = true; bool fAllUnchecked = true; foreach (CheckBox cb in rgCheckboxes) { if (cb.Checked) { fAllUnchecked = false; } else { fAllChecked = false; } } if (!fAllChecked && !fAllUnchecked) { cbTitle.CheckState = CheckState.Indeterminate; } else { cbTitle.CheckState = fAllChecked ? CheckState.Checked : CheckState.Unchecked; } }; foreach (SetParameterDefinition.ValueInfo pvdEnum in ed.GetPossibleValues()) { SetParameterDefinition.ValueInfo pvd = pvdEnum; // extract for closure CheckBox cbValue = new CheckBox(); cbValue.Text = pvd.Name; cbValue.AutoSize = true; cbValue.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; cbValue.Margin = new Padding(0); cbValue.Checked = pvd.IsActive; cbValue.CheckedChanged += delegate(object sender, EventArgs args) { pvd.Setter(cbValue.Checked); if (fUpdating) { return; } try { fUpdating = true; initTitleCheckbox(true); } finally { fUpdating = false; } }; rgCheckboxes.Add(cbValue); while (iRow >= tableLayoutPanel1.RowCount) { tableLayoutPanel1.RowCount++; } tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.AutoSize)); tableLayoutPanel1.Controls.Add(cbValue, 1, iRow); iRow++; } tableLayoutPanel1.Controls.Add(cbTitle, 0, iRowStart); tableLayoutPanel1.SetRowSpan(cbTitle, tableLayoutPanel1.RowCount - iRowStart - 1); initTitleCheckbox(true); cbTitle.CheckedChanged += delegate(object sender, EventArgs args) { if (fUpdating) { return; } try { fUpdating = true; foreach (CheckBox cb in rgCheckboxes) { cb.Checked = cbTitle.Checked; } } finally { fUpdating = false; } }; } } if (fShowColumns != panel1.Enabled) { panel1.Visible = panel1.Enabled = fShowColumns; if (fShowColumns) { this.Width += panel1.Width; } else { this.Width -= panel1.Width; } } }