Habanero.Faces.Base.GridLayoutManager.AddControl C# (CSharp) Method

AddControl() public method

Adds a control as specified by the ControlInfo provided (which can provide some context for the control) such as number of rows or columns to span.
public AddControl ( ControlInfo controlInfo ) : IControlHabanero
controlInfo ControlInfo The information about the control to add to the next position in the grid.
return IControlHabanero
        public IControlHabanero AddControl(ControlInfo controlInfo)
        {
            IControlHabanero control = null;
            int rowSpan = 1;
            int columnSpan = 1;
            if (controlInfo != null)
            {
                control = controlInfo.Control;
                rowSpan = controlInfo.RowSpan;
                columnSpan = controlInfo.ColumnSpan;
            }
  

            if (control == null)
            {
                control = _controlFactory.CreateControl();
                control.Visible = false;
            }
            int currentColNum = (this._controls.Count)%ColumnCount;
            int currentRowNum = (this._controls.Count)/ColumnCount;
            if (currentRowNum >= _rowHeights.Length)
            {
                string errorMessage = string.Format("You cannot add a control to the grid layout manager since it exceeds the grids size of '{0}' row and '{1}' column", 
                        _rowHeights.Length, _columnWidths.Length);
                throw new HabaneroDeveloperException(
                    "There is a serious application error. Please contact your system administrator" + Environment.NewLine + errorMessage, errorMessage);
            }

            if (_positionsOccupied[currentRowNum, currentColNum])
            {
                IControlHabanero nullControl = _controlFactory.CreateControl();
                //FixRow(currentRowNum,0);
                nullControl.Visible = false;
                nullControl.Name = "Null";
                _controls.Add(nullControl);
                this.ManagedControl.Controls.Add(nullControl);
                this._controlInfoTable.Add(nullControl, new ControlInfo(nullControl, columnSpan, rowSpan));
                return AddControl(controlInfo);
            }

            if (_fixedColumnsBasedOnContents[currentColNum])
            {
                if (control.Width > _columnWidths[currentColNum])
                {
                    FixColumn(currentColNum, control.Width);
                }
            }
            if (_fixAllRowsBasedOnContents)
            {
                if (control.Height > _rowHeights[currentRowNum])
                {
                    FixRow(currentRowNum, control.Height);
                }
            }
            else if (_fixedRowsBasedOnContents[currentRowNum])
            {
                if (control.Height > _rowHeights[currentRowNum])
                {
                    FixRow(currentRowNum, control.Height);
                }
            }
            this._controls.Add(control);

            this.ManagedControl.Controls.Add(control);
            this._controlInfoTable.Add(control, new ControlInfo(control, columnSpan, rowSpan));

            for (int i = currentRowNum; i < currentRowNum + rowSpan; i++)
            {
                for (int j = currentColNum; j < currentColNum + columnSpan; j++)
                {
                    _positionsOccupied[i, j] = true;
                }
            }
           

            RefreshControlPositions();
            return control;
        }

Same methods

GridLayoutManager::AddControl ( IControlHabanero control ) : IControlHabanero
GridLayoutManager::AddControl ( IControlHabanero control, int rowSpan, int columnSpan ) : IControlHabanero

Usage Example

        ///<summary>
        /// Constructor for the <see cref="HelpAboutBoxManager"/>
        ///</summary>
        ///<param name="controlFactory"></param>
        ///<param name="formHabanero"></param>
        ///<param name="programName"></param>
        ///<param name="producedForName"></param>
        ///<param name="producedByName"></param>
        ///<param name="versionNumber"></param>
        public HelpAboutBoxManager(IControlFactory controlFactory, IFormHabanero formHabanero, string programName, string producedForName, string producedByName, string versionNumber)
        {
            _FormHabanero = formHabanero;
            _mainPanel    = controlFactory.CreatePanel();
            GridLayoutManager mainPanelManager = new GridLayoutManager(_mainPanel, controlFactory);

            mainPanelManager.SetGridSize(4, 2);
            mainPanelManager.FixAllRowsBasedOnContents();
            mainPanelManager.FixColumnBasedOnContents(0);
            mainPanelManager.FixColumnBasedOnContents(1);
            mainPanelManager.AddControl(controlFactory.CreateLabel("Programme Name:", false));
            mainPanelManager.AddControl(controlFactory.CreateLabel(programName, false));
            mainPanelManager.AddControl(controlFactory.CreateLabel("Produced For:", false));
            mainPanelManager.AddControl(controlFactory.CreateLabel(producedForName, false));
            mainPanelManager.AddControl(controlFactory.CreateLabel("Produced By:", false));
            mainPanelManager.AddControl(controlFactory.CreateLabel(producedByName, false));
            mainPanelManager.AddControl(controlFactory.CreateLabel("Version:", false));
            mainPanelManager.AddControl(controlFactory.CreateLabel(versionNumber, false));

            IButtonGroupControl buttons = controlFactory.CreateButtonGroupControl();

            buttons.AddButton("OK", new EventHandler(OKButtonClickHandler));

            BorderLayoutManager manager = controlFactory.CreateBorderLayoutManager(formHabanero);

            manager.AddControl(_mainPanel, BorderLayoutManager.Position.Centre);
            manager.AddControl(buttons, BorderLayoutManager.Position.South);
            formHabanero.Width  = 300;
            formHabanero.Height = 200;
            formHabanero.Text   = "About";
        }
All Usage Examples Of Habanero.Faces.Base.GridLayoutManager::AddControl