Exemplo n.º 1
0
        public virtual IGnosisCaptionLabelImplementation GetColumnarHeaderClone()
        {
            GnosisCaptionLabel captionLabel = new GnosisCaptionLabel();

            // GlobalData.Singleton.StyleHelper.CloneCaptionStyle(captionLabel, columnarHeader);
            GlobalData.Singleton.StyleHelper.ApplyCaptionStyle(captionLabel, instanceController.EntityController.GetCaptionStyle());
            captionLabel.Caption = columnModel.Caption;

            return(captionLabel);
        }
Exemplo n.º 2
0
        protected override void Initialize()
        {
            base.Initialize();

            if (ControlImplementation is IGnosisCaptionLabelPossessor)
            {
                string             caption      = ((IGnosisContentControlImplementation)ControlImplementation).Caption;
                GnosisCaptionLabel captionLabel = new GnosisCaptionLabel();
                //  IGnosisCaptionLabelImplementation captionLabelImp = GlobalData.Singleton.ImplementationCreator.GetGnosisCaptionLabelImplementation();
                GlobalData.Singleton.StyleHelper.ApplyCaptionStyle(captionLabel, EntityController.GetCaptionStyle());
                captionLabel.Caption = caption;
                ((IGnosisCaptionLabelPossessor)ControlImplementation).CaptionLabel = captionLabel;
            }
        }
Exemplo n.º 3
0
        private void LayoutChildren()
        {
            laidOut = false;

            ((IGnosisPanelImplementation)ControlImplementation).Clear();
            ((IGnosisPanelImplementation)ControlImplementation).NumColumns = numCols;

            double totalWidthAvailable = ((IGnosisPanelImplementation)ControlImplementation).GetAvailableWidth();

            if (totalWidthAvailable < 10)
            {
                totalWidthAvailable = initialWidth;
            }

            if (totalWidthAvailable == 0)
            {
                GlobalData.Singleton.ErrorHandler.HandleError("panel width 0", "GnosisPanelController.LayoutChildren");
                return;
            }
            //initial row
            if (captionPosition == CaptionPosition.ABOVE || captionPosition == CaptionPosition.BELOW)
            {
                ((IGnosisPanelImplementation)ControlImplementation).AddRowAutoHeight(); //caption row
                ((IGnosisPanelImplementation)ControlImplementation).AddRowAutoHeight(); //field row
            }
            else
            {
                ((IGnosisPanelImplementation)ControlImplementation).AddRowAutoHeight(); //field and caption row
            }

            //layout children
            //a control is made up of a field and a caption. Some fields such as buttons do not have a separate caption
            //If the caption is above or below the field, a control row is comprised of 2 layout rows - an autosized caption row and a (fixed) size field row
            //In this case a field spanning more than one row must span the caption row and field row of subsequent control rows.
            int currentCol = 0;
            int currentRow = 0;

            lastRowUsed = 0;

            //2 dimensional array representing columns and control rows. A value of 1 means cell is filled.
            usedCells = new int[numCols, 50];
            double colWidth = totalWidthAvailable / numCols;

            foreach (GnosisContentController child in childControllers.OrderBy(x => x.ControlImplementation.Order))
            {//foreach1
                int rowSpan = 1;
                child.ColSpan = 1;

                // GnosisCaptionLabel captionLabel = null;
                //if (child is IGnosisCaptionLabelPossessor)
                //{
                //    //create label
                //    string caption = ((IGnosisContentControlImplementation)child.ControlImplementation).Caption;
                //    captionLabel = new GnosisCaptionLabel();
                //    //  IGnosisCaptionLabelImplementation captionLabelImp = GlobalData.Singleton.ImplementationCreator.GetGnosisCaptionLabelImplementation();
                //    GlobalData.Singleton.StyleHelper.ApplyCaptionStyle(captionLabel, EntityController.GetCaptionStyle());
                //    captionLabel.Caption = caption;

                //   // ((IGnosisPanelImplementation)ControlImplementation).AddGnosisCaptionLabel(captionLabel, currentCol, captionRowNo, child.ColSpan, 1);
                //}

                double minFieldWidth = child.MinFieldWidth;
                double maxFieldWidth = child.MaxFieldWidth;

                double displayWidth = colWidth - (2 * ((IGnosisMarginPossessor)child.ControlImplementation).HorizontalMargin);

                if (child.ControlImplementation is IGnosisCaptionLabelPossessor)
                {
                    if (captionPosition == CaptionPosition.LEFT || captionPosition == CaptionPosition.RIGHT)
                    {
                        GnosisCaptionLabel captionLabel = ((IGnosisCaptionLabelPossessor)child.ControlImplementation).CaptionLabel;
                        double             captionWidth = captionLabel.GetWidth() + (2 * captionLabel.HorizontalMargin) + captionLabel.CaptionSpacing;
                        displayWidth = displayWidth - captionWidth;
                    }
                }

                if (currentCol != 0 && ((GnosisPanel)ControlImplementation).HorizontalSpacing > 0)
                {
                    displayWidth -= ((GnosisPanel)ControlImplementation).HorizontalSpacing;
                }

                //if (child.MaxDisplayChars == 0)
                //{
                //    // ((IGnosisContentControlImplementation)child.ControlImplementation).SetWidth(displayWidth);
                //    ((IGnosisPanelFieldImplementation)child.ControlImplementation).SetHorizontalAlignment(HorizontalAlignmentType.STRETCH);
                //}
                if (displayWidth > maxFieldWidth)
                {//if2
                    ((IGnosisContentControlImplementation)child.ControlImplementation).SetWidth(maxFieldWidth);
                }//if2
                else if (displayWidth > minFieldWidth)
                {//elseif2
                    ((IGnosisContentControlImplementation)child.ControlImplementation).SetWidth(displayWidth);
                }//elseif2
                else //(displayWidth < minFieldWidth)
                {//else2
                    while (displayWidth < minFieldWidth)
                    {     //while3
                        if (child.ColSpan < numCols)
                        { //if4
                            //colspan can increase
                            child.ColSpan++;
                            displayWidth = displayWidth + colWidth - (2 * ((IGnosisMarginPossessor)child.ControlImplementation).HorizontalMargin);
                        }//if4
                        else
                        {//else4
                            //colspan can not increase
                            //can increase the height of text fields
                            if (child is GnosisTextFieldController)
                            {
                                int charsPerLine = (int)Math.Floor(displayWidth / child.CharacterWidth);
                                int numChars     = charsPerLine * ((GnosisTextFieldController)child).NumLines;

                                if (numChars < child.MinDisplayChars)
                                {
                                    int difference     = child.MinDisplayChars - numChars;
                                    int numLinesNeeded = (int)Math.Ceiling((double)difference / charsPerLine);
                                    int totalLines     = ((GnosisTextFieldController)child).NumLines + numLinesNeeded;
                                    ((GnosisTextFieldController)child).NumLines = totalLines;

                                    double newHeight = ((GnosisTextFieldController)child).TextHeight * totalLines + (((GnosisTextField)child.ControlImplementation).VerticalPadding * 2);
                                    ((IGnosisTextFieldImplementation)child.ControlImplementation).SetHeight(newHeight);
                                }
                                //double minArea = minFieldWidth * child.FieldHeight;
                                //double oneLineArea = displayWidth * child.FieldHeight;
                                //int numLines = (int)Math.Ceiling(minArea / oneLineArea);

                                //((IGnosisTextFieldImplementation)child.ControlImplementation).SetHeight(child.FieldHeight * numLines);

                                //if (numLines > 1)
                                //{
                                //    ((IGnosisTextFieldImplementation)child.ControlImplementation).SetTextWrapping(true);
                                //}
                            }

                            break;
                        } //else4
                    }     //while3

                    if (displayWidth > maxFieldWidth)
                    {//if3
                        ((IGnosisContentControlImplementation)child.ControlImplementation).SetWidth(maxFieldWidth);
                    }//if3
                    else
                    {//elseif3
                        ((IGnosisContentControlImplementation)child.ControlImplementation).SetWidth(displayWidth);
                    }//elseif3

                    //((IGnosisContentControlImplementation)child.ControlImplementation).SetWidth(displayWidth);
                }//else2

                if (currentCol + child.ColSpan > numCols)
                {
                    currentRow++;
                    currentCol = 0;
                    int verticalSpacing = ((GnosisPanel)ControlImplementation).VerticalSpacing;

                    if (captionPosition == CaptionPosition.ABOVE || captionPosition == CaptionPosition.BELOW)
                    {
                        if (verticalSpacing > 0)
                        {
                            ((IGnosisPanelImplementation)ControlImplementation).AddRowAutoHeight();
                            ((IGnosisPanelImplementation)ControlImplementation).AddRowFixedHeight(verticalSpacing);

                            currentRow++;
                        }

                        ((IGnosisPanelImplementation)ControlImplementation).AddRowAutoHeight(); //caption row
                        //((IGnosisPanelImplementation)ControlImplementation).AddRowFixedHeight(fieldRowHeight); //field row
                        ((IGnosisPanelImplementation)ControlImplementation).AddRowAutoHeight(); //field row
                    }
                    else
                    {
                        if (verticalSpacing > 0)
                        {
                            ((IGnosisPanelImplementation)ControlImplementation).AddRowFixedHeight(verticalSpacing);
                            currentRow++;
                        }

                        //  ((IGnosisPanelImplementation)ControlImplementation).AddRowFixedHeight(fieldRowHeight);
                        ((IGnosisPanelImplementation)ControlImplementation).AddRowAutoHeight(); //field row
                    }
                }

                child.ColNo = currentCol;

                //determine layout row numbers and spans
                int fieldRowNo;
                int fieldRowSpan;
                int captionRowNo;

                if (captionPosition == CaptionPosition.ABOVE)
                {
                    //account for caption row
                    captionRowNo = currentRow * 2;
                    fieldRowNo   = captionRowNo + 1;
                    fieldRowSpan = rowSpan * 2 - 1; //1 row for caption
                }
                else if (captionPosition == CaptionPosition.BELOW)
                {
                    fieldRowNo   = currentRow * 2;
                    captionRowNo = fieldRowNo + 1;
                    fieldRowSpan = rowSpan * 2 - 1;
                }
                else
                {
                    captionRowNo = currentRow;
                    fieldRowNo   = currentRow;
                    fieldRowSpan = rowSpan;
                }



                if (captionPosition == CaptionPosition.RIGHT)
                {
                    if (currentCol != 0 && ((GnosisPanel)ControlImplementation).HorizontalSpacing > 0)
                    {
                        ((IGnosisPanelImplementation)ControlImplementation).AddHorizontalSpacing(currentCol, fieldRowNo, child.ColSpan, fieldRowSpan);
                    }

                    ((IGnosisPanelImplementation)ControlImplementation).AddGnosisContentControlImplementation((IGnosisContentControlImplementation)child.ControlImplementation, currentCol, fieldRowNo, child.ColSpan, fieldRowSpan);

                    if (child.ControlImplementation is IGnosisCaptionLabelPossessor)
                    {
                        ((IGnosisPanelImplementation)ControlImplementation).AddGnosisCaptionLabel((GnosisCaptionLabel)((IGnosisCaptionLabelPossessor)child.ControlImplementation).CaptionLabel, currentCol, captionRowNo, child.ColSpan, 1);
                    }
                }
                else if (captionPosition == CaptionPosition.LEFT)
                {
                    if (currentCol != 0 && ((GnosisPanel)ControlImplementation).HorizontalSpacing > 0)
                    {
                        ((IGnosisPanelImplementation)ControlImplementation).AddHorizontalSpacing(currentCol, fieldRowNo, child.ColSpan, 1);
                    }

                    if (child.ControlImplementation is IGnosisCaptionLabelPossessor)
                    {
                        ((IGnosisPanelImplementation)ControlImplementation).AddGnosisCaptionLabel((GnosisCaptionLabel)((IGnosisCaptionLabelPossessor)child.ControlImplementation).CaptionLabel, currentCol, captionRowNo, child.ColSpan, 1);
                    }

                    ((IGnosisPanelImplementation)ControlImplementation).AddGnosisContentControlImplementation((IGnosisContentControlImplementation)child.ControlImplementation, currentCol, fieldRowNo, child.ColSpan, fieldRowSpan);
                }
                else
                {
                    if (currentCol != 0 && ((GnosisPanel)ControlImplementation).HorizontalSpacing > 0)
                    {
                        ((IGnosisPanelImplementation)ControlImplementation).AddHorizontalSpacing(currentCol, captionRowNo, child.ColSpan, 1);
                    }

                    if (child.ControlImplementation is IGnosisCaptionLabelPossessor)
                    {
                        ((IGnosisPanelImplementation)ControlImplementation).AddGnosisCaptionLabel((GnosisCaptionLabel)((IGnosisCaptionLabelPossessor)child.ControlImplementation).CaptionLabel, currentCol, captionRowNo, child.ColSpan, 1);
                    }

                    if (currentCol != 0 && ((GnosisPanel)ControlImplementation).HorizontalSpacing > 0)
                    {
                        ((IGnosisPanelImplementation)ControlImplementation).AddHorizontalSpacing(currentCol, fieldRowNo, child.ColSpan, fieldRowSpan);
                    }

                    ((IGnosisPanelImplementation)ControlImplementation).AddGnosisContentControlImplementation((IGnosisContentControlImplementation)child.ControlImplementation, currentCol, fieldRowNo, child.ColSpan, fieldRowSpan);
                }

                currentCol = currentCol + child.ColSpan;
            }//foreach

            laidOut = true;
        }
Exemplo n.º 4
0
        private bool ResizeChild(GnosisContentController child, double colWidth, bool widthIncreased)
        {
            double minFieldWidth = child.MinFieldWidth;
            double maxFieldWidth = child.MaxFieldWidth;



            double displayWidth = (colWidth * child.ColSpan) - (2 * ((IGnosisMarginPossessor)child.ControlImplementation).HorizontalMargin);


            if (child.ControlImplementation is IGnosisCaptionLabelPossessor)
            {
                if (captionPosition == CaptionPosition.LEFT || captionPosition == CaptionPosition.RIGHT)
                {
                    GnosisCaptionLabel captionLabel = ((IGnosisCaptionLabelPossessor)child.ControlImplementation).CaptionLabel;
                    double             captionWidth = captionLabel.GetWidth() + (2 * captionLabel.HorizontalMargin) + captionLabel.CaptionSpacing;
                    displayWidth = displayWidth - captionWidth;
                }
            }

            if (child.ColNo != 0 && ((GnosisPanel)ControlImplementation).HorizontalSpacing > 0)
            {
                displayWidth -= ((GnosisPanel)ControlImplementation).HorizontalSpacing;
            }

            //if (child.MaxDisplayChars == 0)
            //{
            //    //((IGnosisContentControlImplementation)child.ControlImplementation).SetWidth(displayWidth);
            //}
            if (displayWidth > maxFieldWidth)
            {
                if (displayWidth - maxFieldWidth > colWidth)
                {
                    //need to decrease col span
                    return(true);
                }
                ((IGnosisContentControlImplementation)child.ControlImplementation).SetWidth(maxFieldWidth);

                if (child is GnosisTextFieldController)
                {
                    ((IGnosisTextFieldImplementation)child.ControlImplementation).SetTextWrapping(false);
                }
            }
            else if (displayWidth > minFieldWidth)
            {
                if (displayWidth - minFieldWidth > colWidth)
                {
                    //need to decrease col span
                    return(true);
                }
                ((IGnosisContentControlImplementation)child.ControlImplementation).SetWidth(displayWidth);

                //set text fields to single line
                if (child is GnosisTextFieldController)
                {
                    ((IGnosisTextFieldImplementation)child.ControlImplementation).SetTextWrapping(false);
                    ((IGnosisTextFieldImplementation)child.ControlImplementation).SetHeight(child.FieldHeight);
                    ((GnosisTextFieldController)child).NumLines = 1;
                    //int row = ((IGnosisTextFieldImplementation)child.ControlImplementation).GetRowNumber();
                    //((IGnosisPanelImplementation)ControlImplementation).SetRowFixedHeight(row, fieldRowHeight);
                }
            }
            else if (displayWidth < minFieldWidth)
            {
                if (child.ColSpan < numCols)
                {
                    //colspan must increase, which requires a layout change
                    return(true);
                }
                else
                {
                    ((IGnosisContentControlImplementation)child.ControlImplementation).SetWidth(displayWidth);

                    if (child is GnosisTextFieldController)
                    {
                        int charsPerLine = (int)Math.Floor(displayWidth / child.CharacterWidth);
                        int numChars     = charsPerLine * ((GnosisTextFieldController)child).NumLines;

                        if (numChars < child.MinDisplayChars)
                        {
                            int difference     = child.MinDisplayChars - numChars;
                            int numLinesNeeded = (int)Math.Ceiling((double)difference / charsPerLine);
                            int totalLines     = ((GnosisTextFieldController)child).NumLines + numLinesNeeded;
                            ((GnosisTextFieldController)child).NumLines = totalLines;

                            double newHeight = ((GnosisTextFieldController)child).TextHeight * totalLines + (((GnosisTextField)child.ControlImplementation).VerticalPadding * 2);
                            ((IGnosisTextFieldImplementation)child.ControlImplementation).SetHeight(newHeight);

                            if (totalLines > 1)
                            {
                                ((IGnosisTextFieldImplementation)child.ControlImplementation).SetTextWrapping(true);
                            }
                            else
                            {
                                ((IGnosisTextFieldImplementation)child.ControlImplementation).SetTextWrapping(false);
                            }
                        }

                        //    double minArea = minFieldWidth * child.FieldHeight;
                        //double oneLineArea = displayWidth * child.FieldHeight;
                        //int numLines = (int)Math.Ceiling(minArea / oneLineArea);

                        //((IGnosisTextFieldImplementation)child.ControlImplementation).SetHeight(numLines * child.FieldHeight);
                        ////int row = ((IGnosisTextFieldImplementation)child.ControlImplementation).GetRowNumber();
                        ////((IGnosisPanelImplementation)ControlImplementation).SetRowFixedHeight(row, numLines * child.FieldHeight);

                        //if (numLines > 1)
                        //{
                        //    ((IGnosisTextFieldImplementation)child.ControlImplementation).SetTextWrapping(true);
                        //}
                        //else
                        //{
                        //    ((IGnosisTextFieldImplementation)child.ControlImplementation).SetTextWrapping(false);

                        //}
                    }
                }
            }



            return(false); //layout has not changed
        }