Exemplo n.º 1
0
        protected virtual int ProcessColumnsCollection(List <TableViewCellArrangeInfo> columns)
        {
            int cellSpacing = this.Layout.Owner.CellSpacing;
            int count       = columns.Count;
            int num         = 0;

            for (int index = 0; index < count; ++index)
            {
                TableViewCellArrangeInfo column = columns[index];
                int columnWidth = this.Layout.GetColumnWidth(column.Column);
                column.SetWidth(columnWidth, true, this.Layout.Context == GridLayoutContext.Printer && !this.layout.Owner.RightToLeft);
                column.OffsetX = num;
                num           += columnWidth + cellSpacing;
            }
            if (this.Layout.Owner.RightToLeft)
            {
                for (int index = 0; index < count; ++index)
                {
                    TableViewCellArrangeInfo column = columns[index];
                    column.OffsetX = num - column.OffsetX - column.Column.Width - cellSpacing;
                }
            }
            if (columns == this.scrollableColumns)
            {
                num -= cellSpacing;
            }
            return(num);
        }
Exemplo n.º 2
0
        public override void StartColumnResize(GridViewColumn column)
        {
            base.StartColumnResize(column);
            TableViewCellArrangeInfo arrangeInfo = this.GetArrangeInfo(column);

            if (arrangeInfo == null || !this.stretchableColumns.Contains(arrangeInfo))
            {
                return;
            }
            this.stretchableColumnResizeIndex = this.stretchableColumns.IndexOf(arrangeInfo);
            if (this.Layout.Owner.RightToLeft)
            {
                this.startOffset      = arrangeInfo.OffsetX;
                this.stretchableWidth = arrangeInfo.OffsetX;
            }
            else
            {
                this.stretchableWidth      = this.availableWidth - arrangeInfo.OffsetX - this.Layout.GetColumnWidth(arrangeInfo.Column);
                this.stretchableStartWidth = this.stretchableWidth;
            }
            if (this.stretchableColumnResizeIndex + 1 == this.stretchableColumns.Count - 1)
            {
                this.stretchableColumns[this.stretchableColumnResizeIndex + 1].ResizeStartScaleFactor = 1.0;
            }
            else
            {
                for (int index = this.stretchableColumnResizeIndex + 1; index < this.stretchableColumns.Count; ++index)
                {
                    TableViewCellArrangeInfo stretchableColumn = this.stretchableColumns[index];
                    stretchableColumn.ResizeStartScaleFactor = (double)stretchableColumn.ResizeStartWidth / (double)this.stretchableWidth;
                }
            }
            this.saveScaleFactors = false;
        }
Exemplo n.º 3
0
        public override int CalculateColumnsWidth(SizeF availableSize)
        {
            int cellSpacing = this.Layout.Owner.CellSpacing;

            this.availableWidth      = (int)availableSize.Width;
            this.nonStretchableWidth = 0;
            for (int index = 0; index < this.nonStretchableColumns.Count; ++index)
            {
                int columnWidth = this.Layout.GetColumnWidth(this.nonStretchableColumns[index].Column);
                if (index < this.nonStretchableColumns.Count - 1)
                {
                    columnWidth += cellSpacing;
                }
                this.nonStretchableWidth += columnWidth;
                this.availableWidth      -= columnWidth;
            }
            this.availableWidth -= this.stretchableColumns.Count * cellSpacing;
            int num1 = 0;

            for (int index = 0; index < this.stretchableColumns.Count; ++index)
            {
                GridViewColumn column = this.stretchableColumns[index].Column;
                num1 += this.Layout.GetColumnWidth(column);
            }
            int num2 = 0;

            for (int index = 0; index < this.stretchableColumns.Count; ++index)
            {
                TableViewCellArrangeInfo stretchableColumn = this.stretchableColumns[index];
                double columnWidth = (double)this.Layout.GetColumnWidth(stretchableColumn.Column);
                if (stretchableColumn.ScaleFactor == 0.0 || stretchableColumn.CachedWidth != columnWidth)
                {
                    stretchableColumn.ScaleFactor = columnWidth / (double)num1;
                }
                stretchableColumn.SetWidth((int)Math.Round(stretchableColumn.ScaleFactor * (double)this.availableWidth), true, this.Layout.Context == GridLayoutContext.Printer);
                num2 += this.Layout.GetColumnWidth(stretchableColumn.Column) + cellSpacing;
            }
            int num3 = num2 + this.nonStretchableWidth;

            for (int index = this.stretchableColumns.Count - 1; num3 != this.availableWidth && index >= 0; --index)
            {
                TableViewCellArrangeInfo stretchableColumn = this.stretchableColumns[index];
                int columnWidth = this.Layout.GetColumnWidth(stretchableColumn.Column);
                if (columnWidth < stretchableColumn.Column.MaxWidth || stretchableColumn.Column.MaxWidth == 0)
                {
                    int width = columnWidth - (num3 - (int)availableSize.Width);
                    if (width >= stretchableColumn.Column.MinWidth)
                    {
                        int num4 = num3 + (width - columnWidth);
                        stretchableColumn.SetWidth(width, true, this.Layout.Context == GridLayoutContext.Printer);
                        break;
                    }
                }
            }
            base.CalculateColumnsWidth(availableSize);
            return((int)availableSize.Width);
        }
Exemplo n.º 4
0
        public virtual void ResizeColumn(int delta)
        {
            if (this.resizedColumn == null)
            {
                return;
            }
            TableViewCellArrangeInfo arrangeInfo = this.GetArrangeInfo(this.resizedColumn);

            arrangeInfo?.SetWidth(arrangeInfo.ResizeStartWidth + delta, false, this.Layout.Context == GridLayoutContext.Printer);
        }
Exemplo n.º 5
0
        public override int GetColumnOffset(GridViewColumn column)
        {
            TableViewCellArrangeInfo arrangeInfo = this.LayoutImpl.GetArrangeInfo(column);

            if (arrangeInfo == null)
            {
                return(0);
            }
            return((int)arrangeInfo.Bounds.X);
        }
Exemplo n.º 6
0
 public override int GetColumnWidth(GridViewColumn column)
 {
     if (this.Context == GridLayoutContext.Printer)
     {
         TableViewCellArrangeInfo arrangeInfo = this.layoutHelper.GetArrangeInfo(column);
         if (arrangeInfo != null)
         {
             return((int)arrangeInfo.CachedWidth);
         }
     }
     return(base.GetColumnWidth(column));
 }
Exemplo n.º 7
0
        protected override TableViewCellArrangeInfo InitColumn(
            GridViewColumn column)
        {
            TableViewCellArrangeInfo viewCellArrangeInfo = base.InitColumn(column);

            if (!column.AllowResize)
            {
                this.nonStretchableColumns.Add(viewCellArrangeInfo);
            }
            else
            {
                this.stretchableColumns.Add(viewCellArrangeInfo);
            }
            return(viewCellArrangeInfo);
        }
Exemplo n.º 8
0
        public virtual RectangleF GetCellArrangeRect(RectangleF client, GridCellElement cell)
        {
            TableViewCellArrangeInfo arrangeInfo = this.GetArrangeInfo(cell.ColumnInfo);

            if (arrangeInfo == null)
            {
                return(RectangleF.Empty);
            }
            RectangleF rectangleF = new RectangleF(client.X + (float)arrangeInfo.OffsetX, client.Y, (float)arrangeInfo.Column.Width, client.Height);

            if (cell.ElementTree.Control.RightToLeft == RightToLeft.Yes && cell.ColumnInfo != null && (cell.ColumnInfo.PinPosition == PinnedColumnPosition.None && (double)this.scrollableWidth > (double)client.Width))
            {
                rectangleF.X -= (float)this.scrollableWidth - client.Width;
            }
            return(rectangleF);
        }
Exemplo n.º 9
0
        protected virtual TableViewCellArrangeInfo InitColumn(
            GridViewColumn column)
        {
            TableViewCellArrangeInfo viewCellArrangeInfo = new TableViewCellArrangeInfo(column);

            this.arrangeInfos[column.GetHashCode()] = viewCellArrangeInfo;
            switch (column.PinPosition)
            {
            case PinnedColumnPosition.Left:
                this.leftPinnedColumns.Add(viewCellArrangeInfo);
                break;

            case PinnedColumnPosition.Right:
                this.rightPinnedColumns.Add(viewCellArrangeInfo);
                break;

            case PinnedColumnPosition.None:
                this.scrollableColumns.Add(viewCellArrangeInfo);
                break;
            }
            return(viewCellArrangeInfo);
        }
Exemplo n.º 10
0
        protected virtual void PrintRow(
            GridViewRowInfo row,
            TableViewRowLayout rowLayout,
            GridPrintSettings settings,
            int currentX,
            int currentY,
            Graphics graphics,
            Rectangle drawArea)
        {
            List <GridViewColumn> gridViewColumnList = new List <GridViewColumn>();
            float num1 = 1f;

            if (this.PrintPages.Count > 0 && !settings.PrintHierarchy)
            {
                float num2 = 0.0f;
                foreach (GridViewColumn column in (List <GridViewColumn>) this.PrintPages[this.CurrentPrintPage])
                {
                    if (!column.IsGrouped)
                    {
                        num2 += (float)rowLayout.GetColumnWidth(column);
                        gridViewColumnList.Add(column);
                    }
                }
                num1 = (float)drawArea.Width / num2;
            }
            else
            {
                foreach (GridViewColumn renderColumn in (IEnumerable <GridViewColumn>)rowLayout.RenderColumns)
                {
                    gridViewColumnList.Add(renderColumn);
                }
            }
            int num3 = row.Group != null ? row.Group.Level + 1 : 0;

            if (this.GridView.RightToLeft != RightToLeft.Yes)
            {
                currentX += (row.HierarchyLevel - num3) * settings.HierarchyIndent;
            }
            else
            {
                currentX -= (row.HierarchyLevel - num3) * settings.HierarchyIndent;
            }
            float num4 = 0.0f;
            float num5 = 0.0f;
            float num6 = 0.0f;
            bool  flag = true;

            foreach (GridViewColumn gridViewColumn in gridViewColumnList)
            {
                if (!(gridViewColumn is GridViewRowHeaderColumn) && !(gridViewColumn is GridViewIndentColumn) && gridViewColumn.PinPosition == PinnedColumnPosition.Left)
                {
                    num5 = (float)rowLayout.Owner.CellSpacing;
                    num6 = (float)rowLayout.Owner.CellSpacing;
                    break;
                }
            }
            foreach (GridViewColumn column in gridViewColumnList)
            {
                if (!(column is GridViewRowHeaderColumn) && !(column is GridViewIndentColumn))
                {
                    TableViewCellArrangeInfo arrangeInfo = rowLayout.LayoutImpl.GetArrangeInfo(column);
                    if (arrangeInfo != null)
                    {
                        float x      = arrangeInfo.OffsetX < 0 ? 0.0f : (float)arrangeInfo.OffsetX;
                        float y      = (float)(int)arrangeInfo.Bounds.Y;
                        float width  = (float)arrangeInfo.CachedWidth;
                        float height = (float)(this.GetDataRowHeight(row, (TableViewRowLayoutBase)rowLayout) + this.GridView.TableElement.RowSpacing);
                        int   num2   = flag ? 0 : rowLayout.Owner.CellSpacing;
                        flag = false;
                        if ((double)y + (double)height > (double)drawArea.Bottom)
                        {
                            height = (float)drawArea.Height - y;
                        }
                        if (column.PinPosition == PinnedColumnPosition.Left)
                        {
                            num5 += width + (float)num2;
                            num6 += width + (float)num2;
                        }
                        else if (column.PinPosition == PinnedColumnPosition.None)
                        {
                            num6 += width + (float)num2;
                            x    += num5;
                        }
                        else
                        {
                            x += num6;
                        }
                        if (this.PrintPages.Count > 0 && !settings.PrintHierarchy)
                        {
                            x     = num4;
                            width = (float)Math.Ceiling((double)(width * num1));
                        }
                        if (this.GridView.RightToLeft == RightToLeft.Yes)
                        {
                            x = (float)drawArea.Width - width - x;
                        }
                        RectangleF rectangleF = new RectangleF(x, y, width, height);
                        rectangleF.Offset((float)currentX, (float)currentY);
                        CellPrintElement cellPrintElement;
                        if (row is GridViewTableHeaderRowInfo)
                        {
                            GridViewCellInfo cell = this.GridView.MasterView.TableHeaderRow.Cells[column.Name];
                            cellPrintElement = this.CreateHeaderCellPrintElement(column);
                            if (cellPrintElement.Font != settings.HeaderCellFont)
                            {
                                if (settings.HeaderCellFont != null)
                                {
                                    cellPrintElement.Font = settings.HeaderCellFont;
                                }
                                else
                                {
                                    settings.HeaderCellFont = cellPrintElement.Font;
                                }
                            }
                        }
                        else if (row is GridViewSummaryRowInfo)
                        {
                            cellPrintElement = this.CreateSummaryCellPrintElement((row as GridViewSummaryRowInfo).Cells[column.Name]);
                            if (cellPrintElement.Font != settings.SummaryCellFont)
                            {
                                if (settings.SummaryCellFont != null)
                                {
                                    cellPrintElement.Font = settings.SummaryCellFont;
                                }
                                else
                                {
                                    settings.SummaryCellFont = cellPrintElement.Font;
                                }
                            }
                        }
                        else
                        {
                            cellPrintElement = this.CreateDataCellPrintElement(row.Cells[column.Name]);
                            if (cellPrintElement.Font != settings.CellFont)
                            {
                                if (settings.CellFont != null)
                                {
                                    cellPrintElement.Font = settings.CellFont;
                                }
                                else
                                {
                                    settings.CellFont = cellPrintElement.Font;
                                }
                            }
                        }
                        if (this.PrintPages.Count > 0 && !settings.PrintHierarchy)
                        {
                            num4 += width;
                        }
                        cellPrintElement.TextPadding = this.GridView.PrintStyle.CellPadding;
                        cellPrintElement.RightToLeft = this.GridView.RightToLeft == RightToLeft.Yes;
                        Rectangle rectangle            = new Rectangle((int)rectangleF.X, (int)rectangleF.Y, (int)rectangleF.Width, (int)rectangleF.Height);
                        PrintCellFormattingEventArgs e = new PrintCellFormattingEventArgs(row, column, cellPrintElement);
                        this.OnPrintCellFormatting(e);
                        e.PrintCell.Paint(graphics, rectangle);
                        this.OnPrintCellPaint(new PrintCellPaintEventArgs(graphics, row, column, rectangle));
                    }
                }
            }
        }
Exemplo n.º 11
0
 public ResizeInfo(TableViewCellArrangeInfo info, int width)
 {
     this.Info  = info;
     this.Width = width;
 }
Exemplo n.º 12
0
        public override void ResizeColumn(int delta)
        {
            if (this.stretchableColumns.Count == 0)
            {
                return;
            }
            TableViewCellArrangeInfo stretchableColumn1 = this.stretchableColumns[this.stretchableColumnResizeIndex];

            stretchableColumn1.ScaleFactor = 0.0;
            int width1 = stretchableColumn1.ClampWidth(stretchableColumn1.ResizeStartWidth + delta);

            if (width1 == stretchableColumn1.ResizeStartWidth)
            {
                return;
            }
            int num1;

            if (this.Layout.Owner.RightToLeft)
            {
                num1 = this.startOffset - delta;
            }
            else
            {
                int num2 = stretchableColumn1.OffsetX - this.nonStretchableWidth;
                foreach (TableViewCellArrangeInfo stretchableColumn2 in this.nonStretchableColumns)
                {
                    if (stretchableColumn2.Column.IsPinned)
                    {
                        num2 += stretchableColumn2.Column.Width + this.Layout.Owner.CellSpacing;
                    }
                }
                num1 = this.availableWidth - num2 - width1;
            }
            List <StretchColumnLayoutHelper.ResizeInfo> resizeInfoList = new List <StretchColumnLayoutHelper.ResizeInfo>();
            int num3 = num1;
            int num4 = 0;

            for (int index = this.stretchableColumnResizeIndex + 1; index < this.stretchableColumns.Count; ++index)
            {
                TableViewCellArrangeInfo stretchableColumn2 = this.stretchableColumns[index];
                int width2 = stretchableColumn2.Column.Width;
                int width3 = (int)Math.Round(stretchableColumn2.ResizeStartScaleFactor * (double)num1);
                if (width3 != width2)
                {
                    if (width3 > 0 && width3 >= stretchableColumn2.Column.MinWidth)
                    {
                        resizeInfoList.Add(new StretchColumnLayoutHelper.ResizeInfo(stretchableColumn2, width3));
                        num4 += width2;
                    }
                    else
                    {
                        num3 -= width2 + this.Layout.Owner.CellSpacing;
                    }
                }
            }
            if (resizeInfoList.Count > 0)
            {
                foreach (StretchColumnLayoutHelper.ResizeInfo resizeInfo in resizeInfoList)
                {
                    resizeInfo.Info.ScaleFactor = 0.0;
                    if (num3 != num1)
                    {
                        this.saveScaleFactors = true;
                        if (resizeInfo.Info.TempScaleFactor == 0.0)
                        {
                            resizeInfo.Info.TempScaleFactor = (double)resizeInfo.Info.Column.Width / (double)num4;
                        }
                        resizeInfo.Width = (int)Math.Floor(resizeInfo.Info.TempScaleFactor * (double)num3);
                    }
                    resizeInfo.Info.SetWidth(resizeInfo.Width, true, this.Layout.Context == GridLayoutContext.Printer);
                }
                stretchableColumn1.SetWidth(width1, false, this.Layout.Context == GridLayoutContext.Printer);
            }
            if (num3 != num1)
            {
                return;
            }
            if (this.saveScaleFactors)
            {
                foreach (TableViewCellArrangeInfo viewCellArrangeInfo in this.ArrangeInfos.Values)
                {
                    viewCellArrangeInfo.TempScaleFactor = 0.0;
                }
            }
            this.saveScaleFactors = false;
        }