Ejemplo n.º 1
0
        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();
        }