private void Populate()
        {
            if (ComponentSpecification == null)
            {
                return;
            }

            Clear();
            int maxLabelWidth = 0;

            LabelX   label = new LabelX();
            Graphics g     = Graphics.FromHwnd(label.Handle);

            maxLabelWidth = Math.Max(maxLabelWidth, Convert.ToInt32(g.MeasureString("Name", label.Font).Width));

            for (int i = 0; i < ComponentSpecification.Ex.Count; i++)
            {
                maxLabelWidth = Math.Max(maxLabelWidth, Convert.ToInt32(g.MeasureString(ComponentSpecification.Ex[i].Name, label.Font).Width));
            }
            //maxLabelWidth += 5;
            int     top = 5;
            TextBox tb  = new TextBox();

            //tb.BackColor = this.BackColor;
            //tb.ForeColor = this.ForeColor;
            tb.Top  = top;
            tb.Left = maxLabelWidth + 5 + 5;
            tb.Text = ComponentSpecification.Name;
            this.Controls.Add(tb);
            tb.TextChanged += new EventHandler(tb_TextChanged);
            top             = Helper.AddLabel("Name", top, maxLabelWidth);

            this.Controls.Add(virtualPropertyGrid1);
            virtualPropertyGrid1.BackColor = this.BackColor;
            virtualPropertyGrid1.ForeColor = this.ForeColor;
            virtualPropertyGrid1.Top       = top;
            virtualPropertyGrid1.Left      = 0;
            virtualPropertyGrid1.Width     = Width;
            virtualPropertyGrid1.Height    = Height - virtualPropertyGrid1.Top;
            virtualPropertyGrid1.Anchor    = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;// | AnchorStyles.Bottom;
            virtualPropertyGrid1.SetVirtualProperties(ComponentSpecification.Ex);

            this.Height = virtualPropertyGrid1.Bottom + 50;
        }
        private void Populate()
        {
            if (Entity == null)
            {
                return;
            }

            Slyce.Common.Utility.SuspendPainting(this);
            Clear();
            int maxLabelWidth = 0;

            LabelX   label = new LabelX();
            Graphics g     = Graphics.FromHwnd(label.Handle);

            maxLabelWidth = Math.Max(maxLabelWidth, Convert.ToInt32(g.MeasureString("ID Generator", label.Font).Width));
            maxLabelWidth = Math.Max(maxLabelWidth, Convert.ToInt32(g.MeasureString("2nd level cache", label.Font).Width));

            for (int i = 0; i < Entity.Ex.Count; i++)
            {
                maxLabelWidth = Math.Max(maxLabelWidth, Convert.ToInt32(g.MeasureString(Entity.Ex[i].Name, label.Font).Width));
            }

            maxLabelWidth += 10;

            int top = 5;

            //if (textBoxName == null)
            //{
            //textboxName = new TextBox();
            //tb.BackColor = this.BackColor;
            //tb.ForeColor = this.ForeColor;
            textBoxName.Top  = top;
            textBoxName.Left = maxLabelWidth + 5 + 5;
            //this.Controls.Add(textboxName);
            //textboxName.TextChanged += new EventHandler(tb_TextChanged);

            top = Helper.AddLabel("Name", top, maxLabelWidth) + 5;

            #region ID Generator
            groupPanelIdGenerator.Top  = top;
            groupPanelIdGenerator.Left = maxLabelWidth + 5 + 5;

            top = Helper.AddLabel("ID Generator", top + groupPanelIdGenerator.Height / 2 - labelGeneratorParam3.Height + 3, maxLabelWidth);
            top = groupPanelIdGenerator.Bottom + 5;
            #endregion

            #region Cache
            groupBoxCache.Top  = top;
            groupBoxCache.Left = maxLabelWidth + 5 + 5;

            top = Helper.AddLabel("2nd level cache", top + groupBoxCache.Height / 2 - labelGeneratorParam3.Height + 3, maxLabelWidth);
            top = groupBoxCache.Bottom + 5;
            #endregion

            #region IsAbstract
            checkBoxIsAbstract.Top     = top;
            checkBoxIsAbstract.Left    = maxLabelWidth + 5 + 5;
            checkBoxIsAbstract.Checked = Entity.IsAbstract;

            top = Helper.AddLabel("Abstract", top + checkBoxIsAbstract.Height / 2 - labelGeneratorParam3.Height + 3, maxLabelWidth);
            top = checkBoxIsAbstract.Bottom;
            #endregion

            textBoxName.Text = Entity.Name;
            comboBoxIdGenerator.Items.Clear();
            comboBoxIdGenerator.Items.AddRange(GetGeneratorDisplayNames());
            comboBoxIdGenerator.Text = Entity.Generator.ClassName;

            for (int paramCounter = 0; paramCounter < Entity.Generator.Parameters.Count; paramCounter++)
            {
                switch (paramCounter)
                {
                case 0:
                    labelGeneratorParam1.Text   = Entity.Generator.Parameters[paramCounter].Name;
                    textBoxGeneratorParam1.Text = Entity.Generator.Parameters[paramCounter].Value;
                    break;

                case 1:
                    labelGeneratorParam2.Text   = Entity.Generator.Parameters[paramCounter].Name;
                    textBoxGeneratorParam2.Text = Entity.Generator.Parameters[paramCounter].Value;
                    break;

                case 2:
                    labelGeneratorParam3.Text   = Entity.Generator.Parameters[paramCounter].Name;
                    textBoxGeneratorParam3.Text = Entity.Generator.Parameters[paramCounter].Value;
                    break;
                }
            }
            comboBoxCacheInclude.Items.Clear();
            comboBoxCacheInclude.Items.AddRange(Enum.GetNames(typeof(Cache.IncludeTypes)));

            comboBoxCacheUsage.Items.Clear();
            comboBoxCacheUsage.Items.AddRange(Enum.GetNames(typeof(Cache.UsageTypes)));


            if (Entity.Cache == null)
            {
                comboBoxCacheInclude.Text = Cache.IncludeTypes.All.ToString();
                comboBoxCacheUsage.Text   = Cache.UsageTypes.None.ToString();
            }
            else
            {
                comboBoxCacheInclude.Text = Entity.Cache.Include.ToString();
                comboBoxCacheUsage.Text   = Entity.Cache.Usage.ToString();
                textBoxCacheRegion.Text   = Entity.Cache.Region;
            }
            if (!this.Controls.Contains(virtualPropertyGrid1))
            {
                this.Controls.Add(virtualPropertyGrid1);
                virtualPropertyGrid1.BackColor    = this.BackColor;
                virtualPropertyGrid1.ForeColor    = this.ForeColor;
                virtualPropertyGrid1.Top          = top;
                virtualPropertyGrid1.Left         = 0;
                virtualPropertyGrid1.Width        = Width - 5;
                virtualPropertyGrid1.Height       = Height - virtualPropertyGrid1.Top;
                virtualPropertyGrid1.Anchor       = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;          // | AnchorStyles.Bottom;
                virtualPropertyGrid1.AutoSize     = false;
                virtualPropertyGrid1.AutoSizeMode = AutoSizeMode.GrowAndShrink;
                this.Height = virtualPropertyGrid1.Bottom + 50;
            }
            virtualPropertyGrid1.SetVirtualProperties(Entity.Ex);
            Slyce.Common.Utility.ResumePainting(this);
        }