public void ProcessRequests() { if (this.processing > 0 || this.tableElement == null || this.tableElement.ViewTemplate == null) { return; } ++this.processing; if (this.BestFitQueue.Count == 0 || !this.TableElement.CanBestFit()) { --this.processing; } else { this.TableElement.UpdateLayout(); if (this.TableElement.VisualRows.Count == 0 || this.tableElement.ViewTemplate == null || this.TableElement.ViewTemplate.Columns.Count == 0) { --this.processing; } else if (this.TableElement.ViewInfo.ParentRow != null && this.TableElement.DesiredSize == SizeF.Empty) { this.TableElement.GridViewElement.UpdateLayout(); --this.processing; } else { this.updateRowsHeight = false; while (this.BestFitQueue.Count > 0) { BestFitQueue.BestFitRequest bestFitRequest = this.BestFitQueue.Dequeue(); BestFitColumnMode? autoSizeMode = bestFitRequest.AutoSizeMode; if (bestFitRequest.Operation == BestFitQueue.BestFitOperation.BestFitAllColumns) { this.BestFitColumnsCore(autoSizeMode); } else { GridViewGroupColumn column = bestFitRequest.Column as GridViewGroupColumn; if (column != null) { this.BestFitGroupColumn(column, true, new BestFitColumnMode?()); } else { BestFitColumnMode mode = autoSizeMode.HasValue ? autoSizeMode.Value : bestFitRequest.Column.AutoSizeMode; this.BestFitColumnCore(bestFitRequest.Column, mode); } } } this.UpdateLayout(); this.SynchronizeViews(); --this.processing; } } }
protected virtual void BestFitColumnCore(GridViewColumn column, BestFitColumnMode mode) { if (column == null) { throw new ArgumentNullException(nameof(column)); } if (mode == BestFitColumnMode.None || !column.IsVisible) { return; } float columnWidth = this.CalculateColumnWidth(column, mode); this.SetColumnWidth(column, columnWidth); }
protected virtual float MeasureCell( GridViewRowInfo row, GridViewColumn column, BestFitColumnMode mode) { float val1 = 0.0f; IVirtualizedElementProvider <GridViewColumn> elementProvider1 = this.tableElement.ColumnScroller.ElementProvider; IVirtualizedElementProvider <GridViewRowInfo> elementProvider2 = this.tableElement.RowScroller.ElementProvider; if (this.CanBestFitRow(row)) { GridRowElement element1 = elementProvider2.GetElement(row, (object)null) as GridRowElement; element1.InitializeRowView(this.TableElement); this.TableElement.Children.Add((RadElement)element1); element1.Initialize(row); GridCellElement element2 = elementProvider1.GetElement(column, (object)element1) as GridCellElement; if (!element2.CanBestFit(mode)) { this.Detach(elementProvider1, element2); this.Detach(elementProvider2, element1); return(val1); } element1.Children.Add((RadElement)element2); element2.Initialize(column, element1); element2.SetContent(); element2.UpdateInfo(); (element2 as GridHeaderCellElement)?.UpdateArrowState(); element2.ResetLayout(true); val1 = Math.Max(val1, this.GetCellDesiredWidth(element2)); element1.Children.Remove((RadElement)element2); this.TableElement.Children.Remove((RadElement)element1); this.Detach(elementProvider1, element2); this.Detach(elementProvider2, element1); } return(val1); }
protected virtual float CalculateColumnWidth(GridViewColumn column, BestFitColumnMode mode) { float val1 = 0.0f; IEnumerator <GridViewRowInfo> enumerator; if (mode == BestFitColumnMode.AllCells) { enumerator = (IEnumerator <GridViewRowInfo>) new ExpandedRowTraverser(this.tableElement.ViewInfo); foreach (GridViewRowInfo row in column.OwnerTemplate.Rows) { val1 = Math.Max(val1, this.MeasureCell(row, column, mode)); } } else { enumerator = (IEnumerator <GridViewRowInfo>) new VisualRowEnumerator(this.tableElement.VisualRows); } enumerator.Reset(); while (enumerator.MoveNext()) { val1 = Math.Max(val1, this.MeasureCell(enumerator.Current, column, mode)); } return(val1); }
public void BestFitColumns(BestFitColumnMode mode) { this.BestFitQueue.EnqueueBestFitColumns(mode); this.ProcessRequests(); }
public void EnqueueBestFitColumns(BestFitColumnMode mode) { this.ClearBestFitColumnRequests(new BestFitColumnMode?(mode)); this.bestFitRequests.AddLast(new BestFitQueue.BestFitRequest(BestFitQueue.BestFitOperation.BestFitAllColumns, mode)); }
protected virtual void BestFitColumnsCore(BestFitColumnMode?mode) { BestFitColumnMode?nullable = mode; if ((nullable.GetValueOrDefault() != BestFitColumnMode.None ? 0 : (nullable.HasValue ? 1 : 0)) != 0) { return; } List <GridViewDataColumn> columns = new List <GridViewDataColumn>((IEnumerable <GridViewDataColumn>) this.tableElement.ViewTemplate.Columns); ColumnGroupRowLayout groupLayout = this.TableElement.ViewElement.RowLayout as ColumnGroupRowLayout; if (groupLayout != null) { columns.Sort((Comparison <GridViewDataColumn>)((A, B) => { ColumnGroupsCellArrangeInfo columnData1 = groupLayout.GetColumnData((GridViewColumn)A); ColumnGroupsCellArrangeInfo columnData2 = groupLayout.GetColumnData((GridViewColumn)B); if (columnData1 == columnData2) { return(0); } if (columnData1 == null) { return(-1); } if (columnData2 == null) { return(1); } int num1 = columnData1.Group.Rows.IndexOf(columnData1.Row); int num2 = columnData2.Group.Rows.IndexOf(columnData2.Row); if (columnData1.Group != columnData2.Group) { return(columnData1.Bounds.X.CompareTo(columnData2.Bounds.X)); } if (num1 != num2) { return(num1.CompareTo(num2)); } return(columnData1.Bounds.X.CompareTo(columnData2.Bounds.X)); })); } float[] numArray = new float[this.tableElement.ViewTemplate.ColumnCount]; int index1 = -1; if (mode.HasValue && mode.Value == BestFitColumnMode.AllCells) { numArray = this.CalculateColumnWidths(columns); } else { foreach (GridViewColumn column in columns) { if (!(column is GridViewGroupColumn)) { ++index1; BestFitColumnMode mode1 = mode.HasValue ? mode.Value : column.AutoSizeMode; if (column.IsVisible && mode1 != BestFitColumnMode.None) { float columnWidth = this.CalculateColumnWidth(column, mode1); float val1 = numArray[index1]; numArray[index1] = Math.Max(val1, columnWidth); } } } } for (int index2 = 0; index2 < numArray.Length; ++index2) { GridViewColumn column = (GridViewColumn)columns[index2]; if (column != null && column.IsVisible && column.AutoSizeMode != BestFitColumnMode.None && ((!column.IsGrouped || column.OwnerTemplate.ShowGroupedColumns) && column.CanStretch)) { this.SetColumnWidth(column, numArray[index2]); } } if (this.tableElement.ViewTemplate.AutoSizeColumnsMode == GridViewAutoSizeColumnsMode.Fill) { return; } this.BestFitGroupColumns(mode); }
public BestFitRequest(BestFitQueue.BestFitOperation operation, BestFitColumnMode mode) : this(operation) { this.autoSizeMode = new BestFitColumnMode?(mode); }
internal override bool CanBestFit(BestFitColumnMode bestFitMode) { return((bestFitMode & BestFitColumnMode.DisplayedDataCells) > (BestFitColumnMode)0); }
internal override bool CanBestFit(BestFitColumnMode bestFitMode) { return((bestFitMode & BestFitColumnMode.SummaryRowCells) > (BestFitColumnMode)0); }
internal override bool CanBestFit(BestFitColumnMode bestFitMode) { return((bestFitMode & BestFitColumnMode.FilterCells) > (BestFitColumnMode)0); }
internal virtual bool CanBestFit(BestFitColumnMode bestFitMode) { return true; }