private List <PropertyGridSpreadExportRow> GetPropertyGridDataSnapshot() { List <PropertyGridSpreadExportRow> gridSpreadExportRowList = new List <PropertyGridSpreadExportRow>(); if (this.ExportVisualSettings) { this.elementProvider = this.propertyGrid.PropertyGridElement.PropertyTableElement.ViewElement.ElementProvider as PropertyGridItemElementProvider; } int num = 0; PropertyGridTraverser propertyGridTraverser = new PropertyGridTraverser(this.propertyGrid.PropertyGridElement.PropertyTableElement); propertyGridTraverser.TraverseHirarchy = true; bool skipHiddenChildItems = false; bool exportChildItemsHidden = false; int collapsedParentLevel = 0; this.valueCellWidth = this.propertyGrid.PropertyGridElement.SplitElement.PropertyTableElement.ValueColumnWidth; this.textCellWidth = this.propertyGrid.PropertyGridElement.PropertyTableElement.Size.Width - this.propertyGrid.PropertyGridElement.PropertyTableElement.VScrollBar.Size.Width - this.valueCellWidth; if (this.ExportChildItemsGrouped) { this.InitializeRowGroupDataStructures(); } while (propertyGridTraverser.MoveNext()) { PropertyGridItemBase current = propertyGridTraverser.Current; int level = current.Level; if (current is PropertyGridItem && this.isGridGrouped) { ++level; } if (!skipHiddenChildItems || collapsedParentLevel >= level) { skipHiddenChildItems = false; PropertyGridSpreadExportRow exportRow = this.CreateExportRow(current, level, num, ref skipHiddenChildItems, ref collapsedParentLevel, ref exportChildItemsHidden); gridSpreadExportRowList.Add(exportRow); if (this.ExportChildItemsGrouped) { this.ProcessCurrentRowGrouping(level, num); } ++num; } } return(gridSpreadExportRowList); }
private void AddRow(PropertyGridSpreadExportRow row, int currentRowIndex) { int index1 = 0; int rowHeight = -1; for (int index2 = 0; index2 < row.Cells.Count; ++index2) { PropertyGridSpreadExportCell cell = row.Cells[index2]; if (rowHeight < cell.Size.Height) { rowHeight = cell.Size.Height; } while (this.columnWidths.Count <= index1) { this.columnWidths.Add(0); } if (cell is PropertyGridSpreadExportIndentCell) { if (cell.Size.Width > this.columnWidths[index1]) { this.columnWidths[index1] = cell.Size.Width; this.spreadExportRenderer.SetWorksheetColumnWidth(index1, (double)cell.Size.Width, false); } this.CreateCell(cell, currentRowIndex, index1); } else { if (rowHeight >= 0) { this.spreadExportRenderer.SetWorksheetRowHeight(currentRowIndex, rowHeight, true); } int num = this.isGridGrouped ? this.depthOfTree + 1 : this.depthOfTree; if (cell.Size.Width > this.columnWidths[index1] && num <= index1) { this.columnWidths[index1] = cell.Size.Width; this.spreadExportRenderer.SetWorksheetColumnWidth(index1, (double)cell.Size.Width, false); } this.CreateCell(cell, currentRowIndex, index1); } index1 += cell.ColSpan; } }
private PropertyGridSpreadExportRow CreateExportRow( PropertyGridItemBase item, int itemLevel, int currentRowIndex, ref bool skipHiddenChildItems, ref int collapsedParentLevel, ref bool exportChildItemsHidden) { PropertyGridSpreadExportRow gridSpreadExportRow = new PropertyGridSpreadExportRow(); if (!item.Expanded && this.CollapsedItemOption == HiddenOption.DoNotExport) { skipHiddenChildItems = true; collapsedParentLevel = itemLevel; } if (exportChildItemsHidden && collapsedParentLevel >= itemLevel) { exportChildItemsHidden = false; } if (item is PropertyGridItem) { PropertyGridItem propertyGridItem = item as PropertyGridItem; PropertyGridItemElement propertyGridItemElement = (PropertyGridItemElement)null; if (this.ExportVisualSettings) { propertyGridItemElement = this.elementProvider.GetElement((PropertyGridItemBase)propertyGridItem, (object)null) as PropertyGridItemElement; this.propertyGrid.PropertyGridElement.PropertyTableElement.ViewElement.Children.Add((RadElement)propertyGridItemElement); propertyGridItemElement.Attach((PropertyGridItemBase)propertyGridItem, (object)null); } for (int index = 0; index < itemLevel; ++index) { PropertyGridSpreadExportIndentCell exportIndentCell = new PropertyGridSpreadExportIndentCell(); exportIndentCell.Size = new Size(this.ItemIndent, exportChildItemsHidden ? 0 : -1); if (this.ExportVisualSettings) { if (index == 0 && this.isGridGrouped) { if (itemLevel > 1) { this.GetStylesFromVisualCell((PropertyGridSpreadExportCell)exportIndentCell, (LightVisualElement)propertyGridItemElement.HeaderElement); } else { this.GetStylesFromVisualCell((PropertyGridSpreadExportCell)exportIndentCell, (LightVisualElement)propertyGridItemElement.ExpanderElement); } } else { this.GetStylesFromVisualCell((PropertyGridSpreadExportCell)exportIndentCell, (LightVisualElement)propertyGridItemElement.IndentElement); } this.GetBordersFromVisualCell((PropertyGridSpreadExportCell)exportIndentCell, (LightVisualElement)propertyGridItemElement); } this.OnCellFormatting(new PropertyGridSpreadExportCellFormattingEventArgs((PropertyGridSpreadExportCell)exportIndentCell, (PropertyGridItemBase)propertyGridItem, currentRowIndex)); gridSpreadExportRow.Cells.Add((PropertyGridSpreadExportCell)exportIndentCell); } PropertyGridSpreadExportContentCell exportContentCell1 = new PropertyGridSpreadExportContentCell(); exportContentCell1.Text = propertyGridItem.Label; exportContentCell1.ColSpan += this.depthOfTree - propertyGridItem.Level; exportContentCell1.Size = new Size(this.textCellWidth - itemLevel * this.ItemIndent, exportChildItemsHidden ? 0 : -1); gridSpreadExportRow.Cells.Add((PropertyGridSpreadExportCell)exportContentCell1); if (this.ExportVisualSettings) { this.GetStylesFromVisualCell((PropertyGridSpreadExportCell)exportContentCell1, (LightVisualElement)propertyGridItemElement.TextElement); this.GetBordersFromVisualCell((PropertyGridSpreadExportCell)exportContentCell1, (LightVisualElement)propertyGridItemElement); } this.OnCellFormatting(new PropertyGridSpreadExportCellFormattingEventArgs((PropertyGridSpreadExportCell)exportContentCell1, (PropertyGridItemBase)propertyGridItem, currentRowIndex)); PropertyGridSpreadExportContentCell exportContentCell2 = new PropertyGridSpreadExportContentCell(); exportContentCell2.Value = propertyGridItem.Value; exportContentCell2.Text = propertyGridItem.FormattedValue; exportContentCell2.Size = new Size(this.valueCellWidth, exportChildItemsHidden ? 0 : -1); if (this.ExportVisualSettings) { this.GetStylesFromVisualCell((PropertyGridSpreadExportCell)exportContentCell2, (LightVisualElement)propertyGridItemElement.ValueElement); this.GetBordersFromVisualCell((PropertyGridSpreadExportCell)exportContentCell2, (LightVisualElement)propertyGridItemElement); } this.OnCellFormatting(new PropertyGridSpreadExportCellFormattingEventArgs((PropertyGridSpreadExportCell)exportContentCell2, (PropertyGridItemBase)propertyGridItem, currentRowIndex)); gridSpreadExportRow.Cells.Add((PropertyGridSpreadExportCell)exportContentCell2); if (this.ExportDescriptions) { PropertyGridSpreadExportContentCell exportContentCell3 = new PropertyGridSpreadExportContentCell(); exportContentCell3.Text = propertyGridItem.Description; exportContentCell3.Size = new Size((this.textCellWidth + this.valueCellWidth) * 2, exportChildItemsHidden ? 0 : -1); if (this.ExportVisualSettings) { this.GetStylesFromVisualCell((PropertyGridSpreadExportCell)exportContentCell3, (LightVisualElement)propertyGridItemElement.ValueElement); this.GetBordersFromVisualCell((PropertyGridSpreadExportCell)exportContentCell3, (LightVisualElement)propertyGridItemElement); } this.OnCellFormatting(new PropertyGridSpreadExportCellFormattingEventArgs((PropertyGridSpreadExportCell)exportContentCell3, (PropertyGridItemBase)propertyGridItem, currentRowIndex)); gridSpreadExportRow.Cells.Add((PropertyGridSpreadExportCell)exportContentCell3); } if (this.ExportVisualSettings) { this.elementProvider.CacheElement((IVirtualizedElement <PropertyGridItemBase>)propertyGridItemElement); propertyGridItemElement.Detach(); this.propertyGrid.PropertyGridElement.PropertyTableElement.ViewElement.Children.Remove((RadElement)propertyGridItemElement); } } else if (item is PropertyGridGroupItem) { this.isGridGrouped = true; PropertyGridGroupItem propertyGridGroupItem = item as PropertyGridGroupItem; PropertyGridGroupElement gridGroupElement = (PropertyGridGroupElement)null; if (this.ExportVisualSettings) { gridGroupElement = this.elementProvider.GetElement((PropertyGridItemBase)propertyGridGroupItem, (object)null) as PropertyGridGroupElement; this.propertyGrid.PropertyGridElement.PropertyTableElement.ViewElement.Children.Add((RadElement)gridGroupElement); gridGroupElement.Attach((PropertyGridItemBase)propertyGridGroupItem, (object)null); } PropertyGridSpreadExportContentCell exportContentCell = new PropertyGridSpreadExportContentCell(); exportContentCell.Text = propertyGridGroupItem.Label; ++exportContentCell.ColSpan; ++exportContentCell.ColSpan; exportContentCell.ColSpan += this.depthOfTree; if (this.ExportDescriptions) { ++exportContentCell.ColSpan; } exportContentCell.Size = new Size(this.textCellWidth + this.valueCellWidth + this.depthOfTree * this.ItemIndent, -1); if (this.ExportVisualSettings) { this.GetStylesFromVisualCell((PropertyGridSpreadExportCell)exportContentCell, (LightVisualElement)gridGroupElement.TextElement); this.GetBordersFromVisualCell((PropertyGridSpreadExportCell)exportContentCell, (LightVisualElement)gridGroupElement.TextElement); } this.OnCellFormatting(new PropertyGridSpreadExportCellFormattingEventArgs((PropertyGridSpreadExportCell)exportContentCell, (PropertyGridItemBase)propertyGridGroupItem, currentRowIndex)); gridSpreadExportRow.Cells.Add((PropertyGridSpreadExportCell)exportContentCell); if (this.ExportVisualSettings) { this.elementProvider.CacheElement((IVirtualizedElement <PropertyGridItemBase>)gridGroupElement); gridGroupElement.Detach(); this.propertyGrid.PropertyGridElement.PropertyTableElement.ViewElement.Children.Remove((RadElement)gridGroupElement); } } if (!exportChildItemsHidden) { exportChildItemsHidden = !item.Expanded && this.CollapsedItemOption == HiddenOption.ExportAsHidden; collapsedParentLevel = itemLevel; } return(gridSpreadExportRow); }