public Dialog_ShadeProperty(HB.ModelProperties libSource, List <HB.Shade> faces)
        {
            try
            {
                libSource.FillNulls();

                Title       = $"Shade Properties - {DialogHelper.PluginName}";
                WindowStyle = WindowStyle.Default;
                this.Icon   = DialogHelper.HoneybeeIcon;

                var p = new DynamicLayout();
                p.DefaultSpacing = new Size(4, 4);
                p.DefaultPadding = new Padding(4);


                var panel = ShadeProperty.Instance;
                p.AddRow(panel);
                panel.UpdatePanel(libSource, faces);

                var OKButton = new Button()
                {
                    Text = "OK"
                };
                OKButton.Click += (s, e) =>
                {
                    try
                    {
                        this.Close(panel.GetShades());
                    }
                    catch (Exception er)
                    {
                        MessageBox.Show(er.Message);
                        //throw;
                    }
                };

                AbortButton = new Button {
                    Text = "Cancel"
                };
                AbortButton.Click += (sender, e) => Close();

                p.AddSeparateRow(null, null, OKButton, this.AbortButton, null, panel.SchemaDataBtn);
                p.Add(null);
                this.Content = p;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message);
                //throw;
            }
        }
        public Dialog_ProgramType(ref HB.ModelProperties libSource, HB.ProgramTypeAbridged programType, bool lockedMode = false)
        {
            try
            {
                libSource.FillNulls();

                _vm = new ProgramTypeViewModel(this, ref libSource, programType);

                Title       = $"Program Type - {DialogHelper.PluginName}";
                WindowStyle = WindowStyle.Default;
                Width       = 450;
                this.Icon   = DialogHelper.HoneybeeIcon;


                //Generate ProgramType Panel

                var nameTbx = new TextBox();
                nameTbx.TextBinding.Bind(_vm, c => c.Name);

                var loadGroup = GenLoadsPanel(lockedMode);


                var locked = new CheckBox()
                {
                    Text = "Locked", Enabled = false
                };
                locked.Checked = lockedMode;

                var OkButton = new Button {
                    Text = "OK", Enabled = !lockedMode
                };
                OkButton.Click += (sender, e) => {
                    try
                    {
                        OkCommand.Execute(_vm.GetHBObject());
                    }
                    catch (Exception er)
                    {
                        MessageBox.Show(er.Message);
                        //throw;
                    }
                };

                AbortButton = new Button {
                    Text = "Cancel"
                };
                AbortButton.Click += (sender, e) => Close();

                // Json Data
                var hbData = new Button {
                    Text = "Schema Data"
                };
                hbData.Command = _vm.HBDataBtnClick;

                //Create layout
                var layout = new DynamicLayout()
                {
                    DefaultPadding = new Padding(5), DefaultSpacing = new Size(5, 5)
                };
                layout.BeginScrollable(BorderType.None);

                layout.AddRow("Name");
                layout.AddRow(nameTbx);
                layout.AddRow(loadGroup);
                layout.AddRow(null);
                layout.EndScrollable();
                layout.AddSeparateRow(locked, null, OkButton, AbortButton, null, hbData);
                layout.Add(null);
                //Create layout
                Content = layout;
            }
            catch (Exception e)
            {
                //throw e;
                Dialog_Message.Show(e.ToString());
            }
        }