<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:m="using:SourceGit.Models"
             xmlns:vm="using:SourceGit.ViewModels"
             xmlns:v="using:SourceGit.Views"
             xmlns:c="using:SourceGit.Converters"
             mc:Ignorable="d" d:DesignWidth="500" d:DesignHeight="450"
             x:Class="SourceGit.Views.CreateBranch"
             x:DataType="vm:CreateBranch">
  <StackPanel Orientation="Vertical" Margin="8,0">
    <StackPanel Orientation="Horizontal">
      <Path Width="16" Height="16"
            Data="{StaticResource Icons.Branch.Add}"/>

      <TextBlock FontSize="18"
                 Margin="8,0,0,0"
                 Classes="bold"
                 Text="{DynamicResource Text.CreateBranch.Title}"/>
    </StackPanel>
    
    <Grid Margin="0,16,0,0" RowDefinitions="32,32,Auto,Auto,Auto">
      <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto" MinWidth="140"/>
        <ColumnDefinition Width="*"/>
      </Grid.ColumnDefinitions>
      
      <TextBlock Grid.Row="0" Grid.Column="0"
                 HorizontalAlignment="Right" VerticalAlignment="Center"
                 Margin="0,0,8,0"
                 Text="{DynamicResource Text.CreateBranch.BasedOn}"/>
      <ContentControl Grid.Row="0" Grid.Column="1" Content="{Binding BasedOn}">
        <ContentControl.DataTemplates>
          <DataTemplate DataType="m:Branch">
            <StackPanel Orientation="Horizontal">
              <Path Width="14" Height="14" Data="{StaticResource Icons.Branch}"/>
              <TextBlock VerticalAlignment="Center" Text="{Binding FriendlyName}" Margin="8,0,0,0"/>
            </StackPanel>
          </DataTemplate>

          <DataTemplate DataType="m:Commit">
            <Grid ColumnDefinitions="Auto,Auto,*">
              <Path Grid.Column="0" Width="14" Height="14" Data="{StaticResource Icons.Commit}"/>
              <TextBlock Grid.Column="1" VerticalAlignment="Center" Text="{Binding SHA, Converter={x:Static c:StringConverters.ToShortSHA}}" Foreground="DarkOrange" Margin="8,0,0,0"/>
              <TextBlock Grid.Column="2" VerticalAlignment="Center" Text="{Binding Subject}" Margin="4,0,0,0" TextTrimming="CharacterEllipsis"/>
            </Grid>
          </DataTemplate>

          <DataTemplate DataType="m:Tag">
            <StackPanel Orientation="Horizontal">
              <Path Width="14" Height="14" Data="{StaticResource Icons.Tag}"/>
              <TextBlock VerticalAlignment="Center" Text="{Binding Name}" Margin="8,0,0,0"/>
            </StackPanel>
          </DataTemplate>
        </ContentControl.DataTemplates>
      </ContentControl>

      <TextBlock Grid.Row="1" Grid.Column="0"
                 HorizontalAlignment="Right" VerticalAlignment="Center"
                 Margin="0,0,8,0"
                 Text="{DynamicResource Text.CreateBranch.Name}"/>
      <v:BranchOrTagNameTextBox Grid.Row="1" Grid.Column="1"
                                Height="26"
                                VerticalAlignment="Center"
                                CornerRadius="3"
                                Text="{Binding Name, Mode=TwoWay}"
                                Watermark="{DynamicResource Text.CreateBranch.Name.Placeholder}"/>

      <Border Grid.Row="2" Grid.Column="0"
              Height="32"
              VerticalAlignment="Top">
        <Border.IsVisible>
          <MultiBinding Converter="{x:Static BoolConverters.And}">
            <Binding Path="HasLocalChanges" Mode="OneWay"/>
            <Binding Path="CheckoutAfterCreated" Mode="OneWay"/>
          </MultiBinding>
        </Border.IsVisible>
        <TextBlock HorizontalAlignment="Right" VerticalAlignment="Center"
                   Margin="0,0,8,0"
                   Text="{DynamicResource Text.CreateBranch.LocalChanges}"/>
      </Border>
      <v:DealWithLocalChangesMethod Grid.Row="2" Grid.Column="1"
                                    Method="{Binding DealWithLocalChanges, Mode=TwoWay}">
        <v:DealWithLocalChangesMethod.IsVisible>
          <MultiBinding Converter="{x:Static BoolConverters.And}">
            <Binding Path="HasLocalChanges" Mode="OneWay"/>
            <Binding Path="CheckoutAfterCreated" Mode="OneWay"/>
          </MultiBinding>
        </v:DealWithLocalChangesMethod.IsVisible>
      </v:DealWithLocalChangesMethod>

      <CheckBox Grid.Row="3" Grid.Column="1"
                Content="{DynamicResource Text.CreateBranch.OverwriteExisting}"
                IsChecked="{Binding AllowOverwrite, Mode=TwoWay}"
                ToolTip.Tip="{Binding OverrideTip, Mode=OneWay}"/>

      <CheckBox Grid.Row="4" Grid.Column="1"
                Content="{DynamicResource Text.CreateBranch.Checkout}"
                IsChecked="{Binding CheckoutAfterCreated, Mode=TwoWay}"
                IsVisible="{Binding !IsBareRepository}"/>
    </Grid>
  </StackPanel>
</UserControl>
