Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
                    }
                }
            }
        }
Esempio n. 3
0
 public abstract void InitializeFrom(SetParameterDefinition other);
Esempio n. 4
0
        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;
                }
            }
        }