<v:ChromelessWindow 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:s="using:SourceGit"
                    xmlns:vm="using:SourceGit.ViewModels"
                    xmlns:v="using:SourceGit.Views"
                    mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
                    x:Class="SourceGit.Views.Launcher"
                    x:DataType="vm:Launcher"
                    x:Name="ThisControl"
                    Icon="/App.ico"
                    Title="{Binding Title}"
                    MinWidth="1024" MinHeight="600"
                    WindowStartupLocation="CenterScreen"> 
  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="{Binding #ThisControl.CaptionHeight}"/>
      <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <!-- Custom TitleBar -->
    <Grid Grid.Row="0" ColumnDefinitions="Auto,Auto,*,Auto">
      <!-- Bottom border -->
      <Border Grid.Column="0" Grid.ColumnSpan="4"
              Background="{DynamicResource Brush.TitleBar}"
              BorderThickness="0,0,0,1" BorderBrush="{DynamicResource Brush.Border0}"
              DoubleTapped="MaximizeOrRestoreWindow"
              PointerPressed="BeginMoveWindow"/>

      <!-- Caption Buttons (macOS) -->
      <Border Grid.Column="0" Width="72" IsVisible="{Binding #ThisControl.HasLeftCaptionButton}"/>

      <!-- Menu (Windows/Linux) -->
      <Button Grid.Column="0" Classes="icon_button" VerticalAlignment="Bottom" Margin="6,0,2,3" IsVisible="{OnPlatform True, macOS=False}">
        <Button.Flyout>
          <MenuFlyout Placement="BottomEdgeAlignedLeft" VerticalOffset="-8">
            <MenuItem Header="{DynamicResource Text.Preferences}" Command="{x:Static s:App.OpenPreferencesCommand}" InputGesture="Ctrl+Shift+P">
              <MenuItem.Icon>
                <Path Width="14" Height="14" Data="{StaticResource Icons.Settings}"/>
              </MenuItem.Icon>
            </MenuItem>
            <MenuItem Header="{DynamicResource Text.OpenAppDataDir}" Command="{x:Static s:App.OpenAppDataDirCommand}">
              <MenuItem.Icon>
                <Path Width="14" Height="14" Data="{StaticResource Icons.Explore}"/>
              </MenuItem.Icon>
            </MenuItem>
            <MenuItem Header="{DynamicResource Text.Hotkeys}" Command="{x:Static s:App.OpenHotkeysCommand}">
              <MenuItem.Icon>
                <Path Width="14" Height="14" Data="{StaticResource Icons.Hotkeys}"/>
              </MenuItem.Icon>
            </MenuItem>
            <MenuItem Header="-"/>
            <MenuItem Header="{DynamicResource Text.SelfUpdate}" Command="{x:Static s:App.CheckForUpdateCommand}" IsVisible="{x:Static s:App.IsCheckForUpdateCommandVisible}">
              <MenuItem.Icon>
                <Path Width="14" Height="14" Data="{StaticResource Icons.SoftwareUpdate}"/>
              </MenuItem.Icon>
            </MenuItem>
            <MenuItem Header="-" IsVisible="{x:Static s:App.IsCheckForUpdateCommandVisible}"/>
            <MenuItem Header="{DynamicResource Text.About}" Command="{x:Static s:App.OpenAboutCommand}">
              <MenuItem.Icon>
                <Path Width="14" Height="14" Data="{StaticResource Icons.Info}"/>
              </MenuItem.Icon>
            </MenuItem>
            <MenuItem Header="{DynamicResource Text.Quit}" Command="{x:Static s:App.QuitCommand}" InputGesture="Ctrl+Q">
              <MenuItem.Icon>
                <Path Width="14" Height="14" Data="{StaticResource Icons.Quit}"/>
              </MenuItem.Icon>
            </MenuItem>
          </MenuFlyout>
        </Button.Flyout>
        <Path Width="12" Height="12" Data="{StaticResource Icons.Menu}"/>
      </Button>

      <!-- Workspace Switcher -->
      <Button Grid.Column="1" Classes="icon_button" VerticalAlignment="Bottom" Margin="0,0,0,1" Click="OnOpenWorkspaceMenu">
        <ToolTip.Tip>
          <StackPanel Orientation="Horizontal">
            <TextBlock Text="{DynamicResource Text.Workspace}" FontWeight="Bold" Foreground="{DynamicResource Brush.FG2}"/>
            <TextBlock Text="{Binding ActiveWorkspace.Name}"/>
          </StackPanel>
        </ToolTip.Tip>
        <Path Width="14" Height="14" 
              Data="{StaticResource Icons.Workspace}"
              Fill="{Binding ActiveWorkspace.Brush}"/>
      </Button>

      <!-- Pages Tabs-->
      <v:LauncherTabBar Grid.Column="2" Height="30" Margin="0,0,16,0" VerticalAlignment="Bottom"/>

      <!-- Caption Buttons (Windows/Linux)-->
      <Border Grid.Column="3" Margin="16,0,0,0" IsVisible="{Binding #ThisControl.IsRightCaptionButtonsVisible}">
        <v:CaptionButtons Height="30" VerticalAlignment="Top"/>
      </Border>
    </Grid>
    
    <!-- Page -->
    <ContentControl Grid.Row="1" Content="{Binding ActivePage}">
      <ContentControl.DataTemplates>
        <DataTemplate DataType="vm:LauncherPage">
          <v:LauncherPage/>
        </DataTemplate>
      </ContentControl.DataTemplates>
    </ContentControl>
  </Grid>
</v:ChromelessWindow>
