private void printHorizontalStackPanel()
{
if (SharedData.PageSetup.MainTablePreferences.TableType != TableType.HorizontalStackPanel)
return;
var hasTableRowNumberColumn = SharedData.HasTableRowNumberColumn;
var columnsNumber = SharedData.HorizontalStackPanelColumnsPerRow;
if (hasTableRowNumberColumn)
columnsNumber--;
var itemsToTake = columnsNumber;
var customRow = new List<CellData>();
foreach (var row in SharedData.MainTableDataSource.Rows())
{
if (row == null) continue;
var rowObjectColumnsCount = row.Count;
var tempRow = row.Take(itemsToTake).ToList();
var diff = (columnsNumber * rowObjectColumnsCount) - customRow.Count - tempRow.Count;
bool rowIsReady;
if (diff == 0)
{
rowIsReady = true;
itemsToTake = columnsNumber;
}
else
{
itemsToTake = diff;
rowIsReady = false;
}
customRow.AddRange(tempRow);
if (!rowIsReady) continue;
var index = hasTableRowNumberColumn ? 1 : 0;
for (int i = 0; i < customRow.Count; i++)
{
if ((i > 0) && (i % rowObjectColumnsCount == 0))
index++; // All columns of an object will create a single cell here.
customRow[i].PropertyIndex = index;
}
if (shouldSkipRow(customRow)) continue;
fireRowStartedInjectCustomRowsEvent(customRow);
addSingleRow(customRow);
fireRowAddedInjectCustomRowsEvent(customRow);
customRow.Clear();
}
}