public DeclarationUI(INode node, IHDEHost hde, BindingList <Declaration> binding) { FNode = node; FHDE = hde; var font = new Font("Verdana", 7.5F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(0))); var fontBold = new Font("Verdana", 8.25F, FontStyle.Regular, GraphicsUnit.Point, ((byte)(0))); FTooltip = new ToolTip(); FSelection = new ComboBox(); FSelection.TabIndex = 0; FSelection.FlatStyle = FlatStyle.Flat; FSelection.BackColor = Color.Silver; FSelection.Dock = DockStyle.Top; FSelection.Font = fontBold; FSelection.DataSource = binding; FSelection.DisplayMember = "Name"; FSelection.ValueMember = "Name"; FSelection.TextChanged += (s, e) => KeyIsDirty = true; FSelection.SelectedValueChanged += FSelection_SelectedValueChanged; FSave = new Button(); FSave.TabIndex = 2; FSave.FlatStyle = FlatStyle.Flat; FSave.AutoSize = true; FSave.Dock = DockStyle.Right; FSave.Font = font; FSave.Text = "Save"; FSave.Click += (o, e) => Save(); FSave.Enabled = false; FNew = new Button(); FNew.TabIndex = 3; FNew.FlatStyle = FlatStyle.Flat; FNew.AutoSize = true; FNew.Dock = DockStyle.Right; FNew.Font = font; FNew.Text = "New"; FNew.Click += (o, e) => New(); FNew.Enabled = false; FMenuPanel = new Panel(); FMenuPanel.Dock = DockStyle.Top; FMenuPanel.AutoSize = true; FMenuPanel.Controls.Add(FSelection); FMenuPanel.Controls.Add(FSave); FMenuPanel.Controls.Add(FNew); FPadPanel = new Panel(); FPadPanel.Dock = DockStyle.Fill; FPadPanel.BorderStyle = BorderStyle.None; FPadPanel.Padding = new Padding(2); FPadPanel.BackColor = Color.Silver; FBody = new RichTextBox(); FBody.TabIndex = 1; FBody.BackColor = Color.Silver; FBody.BorderStyle = BorderStyle.None; FBody.Dock = DockStyle.Fill; FBody.Font = font; FBody.Multiline = true; FBody.TextChanged += (s, e) => BodyIsDirty = true; FPadPanel.Controls.Add(FBody); FError = new Label(); FError.BorderStyle = BorderStyle.None; FError.AutoSize = true; FError.Dock = DockStyle.Bottom; FError.Font = font; FError.Text = string.Empty; FError.Visible = false; FError.TextChanged += (o, e) => { if (string.IsNullOrWhiteSpace(FError.Text)) { FError.Visible = false; } else { FError.Visible = true; } }; FTooltip.SetToolTip(FNew, "Ctrl + D"); FTooltip.SetToolTip(FSave, "Ctrl + S"); FTooltip.SetToolTip(FBody, "type name [= default]" + Environment.NewLine + "available shorthands:" + Environment.NewLine + "bool, int, float, double, string, color, matrix, vectorN, stream, struct, mouse, keyboard, touch, gesture;" + Environment.NewLine + "if DX11 pack present: dx11layer, dx11geometry, dx11textureNd, dx11buffer, dx11renderstate, dx11samplerstates, dx11rendersemantic, dx11objectvalidator" + Environment.NewLine + "not listed types need to be specified by the fully qualified name (with namespace), e.g. System.IO.FileInfo"); this.Controls.Add(FPadPanel); this.Controls.Add(FMenuPanel); this.Controls.Add(FError); this.VisibleChanged += VisibilityChanged; this.GotFocus += (s, e) => FHDE.DisableShortCuts(); this.LostFocus += (s, e) => FHDE.EnableShortCuts(); }