<UserControl xmlns="https://github.com/avaloniaui"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
             xmlns:c="using:SourceGit.Converters"
             xmlns:v="using:SourceGit.Views"
             xmlns:vm="using:SourceGit.ViewModels"
             mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
             x:Class="SourceGit.Views.BranchTree"
             x:Name="ThisControl">
  <ListBox x:Name="BranchesPresenter"
           Classes="repo_left_content_list"
           ItemsSource="{Binding #ThisControl.Rows}"
           SelectionMode="Multiple"
           SelectionChanged="OnNodesSelectionChanged"
           ContextRequested="OnTreeContextRequested">
    <ListBox.ItemsPanel>
      <ItemsPanelTemplate>
        <VirtualizingStackPanel Orientation="Vertical"/>
      </ItemsPanelTemplate>
    </ListBox.ItemsPanel>

    <ListBox.Styles>
      <Style Selector="ListBoxItem" x:DataType="vm:BranchTreeNode">
        <Setter Property="CornerRadius" Value="{Binding CornerRadius}"/>
      </Style>
    </ListBox.Styles>

    <ListBox.ItemTemplate>
      <DataTemplate DataType="vm:BranchTreeNode">
        <Grid Height="24"
              Margin="{Binding Depth, Converter={x:Static c:IntConverters.ToTreeMargin}}"
              ColumnDefinitions="16,*"
              ToolTip.Tip="{Binding Tooltip}">

        <!-- Tree Expander -->
        <v:BranchTreeNodeToggleButton Grid.Column="0"
                                      Classes="tree_expander"
                                      Focusable="False"
                                      HorizontalAlignment="Center"
                                      IsChecked="{Binding IsExpanded, Mode=OneWay}"
                                      IsVisible="{Binding !IsBranch}"/>

        <!-- Content Area (allows double-click) -->
        <Grid Grid.Column="1"
              Background="Transparent"
              ColumnDefinitions="18,*,Auto,Auto"
              DoubleTapped="OnDoubleTappedBranchNode">

          <!-- Icon -->
          <v:BranchTreeNodeIcon Grid.Column="0"
                                Node="{Binding}"
                                IsExpanded="{Binding IsExpanded}"/>

          <!-- Name -->
          <TextBlock Grid.Column="1"
                     Text="{Binding Name}"
                     Classes="primary"
                     FontWeight="{Binding NameFontWeight}"
                     TextTrimming="CharacterEllipsis"/>

          <!-- Tracking status -->
          <v:BranchTreeNodeTrackStatusPresenter Grid.Column="2"
                                                VerticalAlignment="Center"
                                                FontFamily="{DynamicResource Fonts.Monospace}"
                                                FontSize="10"
                                                Foreground="{DynamicResource Brush.BadgeFG}"
                                                Background="{DynamicResource Brush.Badge}"/>

          <!-- Filter Toggle Button -->
          <ToggleButton Grid.Column="3"
                        Classes="filter"
                        Margin="0,0,8,0"
                        Background="Transparent"
                        IsVisible="{Binding IsBranch}"
                        IsChecked="{Binding IsFiltered}"
                        Click="OnToggleFilterClicked"
                        ToolTip.Tip="{DynamicResource Text.Filter}"/>
          </Grid>
        </Grid>
      </DataTemplate>
    </ListBox.ItemTemplate>
  </ListBox>
</UserControl>

