예제 #1
0
        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);
        }
예제 #2
0
        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;
            }
        }
예제 #3
0
        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);
        }