BudgetAnalyser.LedgerBook.LedgerBookGridBuilderV2.AddHeadingColumnContent C# (CSharp) Method

AddHeadingColumnContent() private method

private AddHeadingColumnContent ( Grid grid ) : void
grid System.Windows.Controls.Grid
return void
        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;
            }
        }