Exemple #1
0
        public override Status Layout(Area area, Region region)
        {
            int numChildren = this.children.Count;
            string regionClass = "none";
            if (region != null)
            {
                regionClass = region.GetRegionClass();
            }
            else
            {
                if (GetFlowName().Equals("xsl-region-before"))
                {
                    regionClass = RegionBefore.REGION_CLASS;
                }
                else if (GetFlowName().Equals("xsl-region-after"))
                {
                    regionClass = RegionAfter.REGION_CLASS;
                }
                else if (GetFlowName().Equals("xsl-region-start"))
                {
                    regionClass = RegionStart.REGION_CLASS;
                }
                else if (GetFlowName().Equals("xsl-region-end"))
                {
                    regionClass = RegionEnd.REGION_CLASS;
                }
            }

            if (area is AreaContainer)
            {
                ((AreaContainer)area).setAreaName(regionClass);
            }

            area.setAbsoluteHeight(0);

            SetContentWidth(area.getContentWidth());

            for (int i = 0; i < numChildren; i++)
            {
                FObj fo = (FObj)children[i];

                Status status;
                if ((status = fo.Layout(area)).isIncomplete())
                {
                    FonetDriver.ActiveDriver.FireFonetWarning(
                        "Some static content could not fit in the area.");
                    this.marker = i;
                    if ((i != 0) && (status.getCode() == Status.AREA_FULL_NONE))
                    {
                        status = new Status(Status.AREA_FULL_SOME);
                    }
                    return (status);
                }
            }
            ResetMarker();
            return new Status(Status.OK);
        }