private void AddHeadingColumnContent(Grid grid)
{
// Date
var gridRow = 0;
var gridColumn = 0;
Border dateBorder = AddBorderToGridCell(grid, true, true, gridRow, gridColumn);
Grid.SetColumnSpan(dateBorder, 2);
AddContentToGrid(dateBorder, "Date", ref gridRow, gridColumn, DateColumnStyle);
// Remarks
Border remarksBorder = AddBorderToGridCell(grid, true, false, gridRow, gridColumn);
Grid.SetColumnSpan(remarksBorder, 2);
AddContentToGrid(grid, "Remarks", ref gridRow, gridColumn, RemarksStyle);
// Bank Balance
Border bankBalanceBorder = AddBorderToGridCell(grid, BankBalanceBackground, false, gridRow, gridColumn);
Grid.SetColumnSpan(bankBalanceBorder, 2);
TextBlock bankBalanceTextBlock = AddContentToGrid(bankBalanceBorder, "Balance", ref gridRow, gridColumn, HeadingStyle);
bankBalanceTextBlock.Foreground = (Brush)FindResource(BankBalanceTextBrush);
bankBalanceTextBlock.HorizontalAlignment = HorizontalAlignment.Right;
// Balance Adjustments
Border adjustmentsBorder = AddBorderToGridCell(grid, true, false, gridRow, gridColumn);
Grid.SetColumnSpan(adjustmentsBorder, 2);
TextBlock adjustmentsTextBlock = AddContentToGrid(adjustmentsBorder, "Adjustments", ref gridRow, gridColumn, HeadingStyle);
adjustmentsTextBlock.HorizontalAlignment = HorizontalAlignment.Right;
// Surplus
Border surplusBorder = AddBorderToGridCell(grid, SurplusBackground, false, gridRow, gridColumn);
Grid.SetColumnSpan(surplusBorder, 2);
TextBlock surplusTextBlock = AddContentToGrid(surplusBorder, "Surplus", ref gridRow, gridColumn, HeadingStyle);
surplusTextBlock.Foreground = (Brush)FindResource(SurplusTextBrush);
surplusTextBlock.HorizontalAlignment = HorizontalAlignment.Right;
// Ledgers
gridRow = 5;
Account currentBankAccount = null;
foreach (LedgerBucket ledger in this.sortedLedgers)
{
if (currentBankAccount != ledger.StoredInAccount)
{
// Bank account group separater
currentBankAccount = ledger.StoredInAccount;
Border bankAccountBorder = AddBorderToGridCell(grid, false, false, gridRow, 0);
Grid.SetColumnSpan(bankAccountBorder, 2);
Grid.SetRow(bankAccountBorder, gridRow++);
bankAccountBorder.Child = new ContentPresenter { Content = ledger.StoredInAccount, Margin = new Thickness(5), Height = 50, Width = 100 };
}
gridColumn = 0;
Border border = AddBorderToGridCell(grid, true, true, gridRow, gridColumn);
// SpentMonthly Legders do not show the transaction total (NetAmount) because its always the same.
Grid.SetRowSpan(border, ledger.BudgetBucket is SpentMonthlyExpenseBucket ? 1 : 2);
// Heading stripe to indicate SpentMonthly or SavedUpFor expenses.
var stripe = new Border
{
BorderThickness = new Thickness(6, 0, 0, 0),
BorderBrush = StripColour(ledger),
HorizontalAlignment = HorizontalAlignment.Stretch,
VerticalAlignment = VerticalAlignment.Stretch
};
border.Child = stripe;
string tooltip = string.Format(CultureInfo.CurrentCulture, "{0}: {1} - {2}", ledger.BudgetBucket.TypeDescription, ledger.BudgetBucket.Code, ledger.BudgetBucket.Description);
var hyperlink = new Hyperlink(new Run(ledger.BudgetBucket.Code))
{
Command = this.showLedgerBucketDetailsCommand,
CommandParameter = this.ledgerBook.Ledgers.Single(l => l.BudgetBucket == ledger.BudgetBucket) // Must be Main Ledger Map from book
};
var textBlock = new TextBlock(hyperlink)
{
Style = (Style)FindResource(HeadingStyle),
ToolTip = tooltip,
HorizontalAlignment = HorizontalAlignment.Center
};
stripe.Child = textBlock;
gridColumn++;
if (!(ledger.BudgetBucket is SpentMonthlyExpenseBucket))
{
Border border1 = AddBorderToGridCell(grid, true, false, gridRow, gridColumn);
TextBlock ledgerTxnsHeading = AddContentToGrid(border1, "Txns", ref gridRow, gridColumn, HeadingStyle, "Transactions");
ledgerTxnsHeading.HorizontalAlignment = HorizontalAlignment.Right;
}
Border border2 = AddBorderToGridCell(grid, true, true, gridRow, gridColumn);
TextBlock ledgerBalanceHeading = AddContentToGrid(border2, "Balance", ref gridRow, gridColumn, HeadingStyle, "Ledger Balance");
ledgerBalanceHeading.HorizontalAlignment = HorizontalAlignment.Right;
}
}