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); }
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; }
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); }
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); }
public override int GetColumnOffset(GridViewColumn column) { TableViewCellArrangeInfo arrangeInfo = this.LayoutImpl.GetArrangeInfo(column); if (arrangeInfo == null) { return(0); } return((int)arrangeInfo.Bounds.X); }
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)); }
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); }
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); }
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); }
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)); } } } }
public ResizeInfo(TableViewCellArrangeInfo info, int width) { this.Info = info; this.Width = width; }
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; }