<UserControl x:Class="PixiEditor.Views.UserControls.Layers.FolderControl"
             x:ClassModifier="internal"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
             xmlns:i="http://schemas.microsoft.com/xaml/behaviors" 
             xmlns:local="clr-namespace:PixiEditor.Views.UserControls.Layers" 
             xmlns:behaviors="clr-namespace:PixiEditor.Helpers.Behaviours" xmlns:userControls="clr-namespace:PixiEditor.Views" 
             xmlns:converters="clr-namespace:PixiEditor.Helpers.Converters" xmlns:helpers="clr-namespace:PixiEditor.Helpers.UI"
             xmlns:userControls1="clr-namespace:PixiEditor.Views.UserControls"
             xmlns:cmds="clr-namespace:PixiEditor.Models.Commands.XAML"
             xmlns:sys="clr-namespace:System;assembly=mscorlib"
             xmlns:ui="clr-namespace:PixiEditor.Extensions.UI;assembly=PixiEditor.Extensions"
             mc:Ignorable="d" 
             Focusable="True"
             d:DesignHeight="35" 
             d:DesignWidth="250" 
             x:Name="folderControl" 
             DragEnter="FolderControl_DragEnter" 
             DragLeave="FolderControl_DragLeave" 
             DragDrop.Drop="FolderControl_DragLeave">
    <UserControl.Resources>
        <BooleanToVisibilityConverter x:Key="BoolToVisibilityConverter" />
    </UserControl.Resources>
    <Border BorderThickness="0 0 0 0.5" BorderBrush="Gray" MinWidth="60" Focusable="True" Tag="{Binding ElementName=folderControl}">
        <Border.Background>
            <Binding ElementName="folderControl" Path="Folder.Selection">
                <Binding.Converter>
                    <converters:StructureMemberSelectionTypeToColorConverter
                        SoftColor="{StaticResource SoftSelectedLayerColor}"
                        HardColor="{StaticResource SelectedLayerColor}"
                        NoneColor="Transparent"
                        />
                </Binding.Converter>
            </Binding>
        </Border.Background>
        <i:Interaction.Behaviors>
            <behaviors:ClearFocusOnClickBehavior/>
        </i:Interaction.Behaviors>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="10"/>
                <RowDefinition Height="15"/>
                <RowDefinition Height="10"/>
            </Grid.RowDefinitions>
            <Grid AllowDrop="True" DragEnter="Grid_DragEnter" Drop="Grid_Drop_Top" DragLeave="Grid_DragLeave" Grid.Row="0" Grid.ColumnSpan="3" Background="Transparent" Panel.ZIndex="3"/>
            <Grid Visibility="Collapsed" x:Name="middleDropGrid" Grid.Row="1" AllowDrop="True" Panel.ZIndex="2" Background="Transparent" DragEnter="Grid_CenterEnter" Drop="Grid_Drop_Center" DragLeave="Grid_CenterLeave"></Grid>
            <Grid x:Name="centerGrid" Grid.Row="0" Grid.RowSpan="3" Background="Transparent">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="24"/>
                    <ColumnDefinition Width="*"/>
                </Grid.ColumnDefinitions>
                <CheckBox Style="{StaticResource ImageCheckBox}" VerticalAlignment="Center"
                      IsThreeState="False" HorizontalAlignment="Center"
                      IsChecked="{Binding Path=Folder.IsVisibleBindable, ElementName=folderControl}" Grid.Column="0" Height="16"/>

                <StackPanel Orientation="Horizontal" Grid.Column="1" HorizontalAlignment="Left">
                    <Rectangle Width="{Binding Path=(helpers:TreeViewItemHelper.Indent).Value, Mode=OneWay, RelativeSource={RelativeSource AncestorType=ItemsPresenter}}" Fill="Transparent" StrokeThickness="0"/>
                    <Border 
                        Visibility="{Binding Folder.ClipToMemberBelowEnabledBindable, ElementName=folderControl, Converter={converters:BoolToVisibilityConverter}}"
                        Background="{StaticResource PixiRed}" Width="3" Margin="1,1,2,1" CornerRadius="1"/>
                    <StackPanel Grid.Row="1" Orientation="Horizontal" Grid.Column="0" HorizontalAlignment="Left">
                        <Border Width="32" Height="32" BorderThickness="1" BorderBrush="Black" RenderOptions.BitmapScalingMode="NearestNeighbor">
                            <Border.Background>
                                <ImageBrush ImageSource="/Images/CheckerTile.png" TileMode="Tile" Viewport="0, 0, 0.20, 0.20"/>
                            </Border.Background>
                            <Image Source="{Binding Folder.PreviewBitmap, ElementName=folderControl}" Stretch="Uniform" Width="30" Height="30">
                                <RenderOptions.BitmapScalingMode>
                                    <MultiBinding Converter="{converters:WidthToBitmapScalingModeConverter}">
                                        <Binding Path="Folder.PreviewBitmap.PixelWidth" ElementName="folderControl"/>
                                        <Binding RelativeSource="{RelativeSource Mode=Self}" Path="ActualWidth"/>
                                    </MultiBinding>
                                </RenderOptions.BitmapScalingMode>
                            </Image>
                        </Border>
                        <Border 
                            Width="32" Height="32" 
                            BorderThickness="1"
                            Margin="3,0,0,0"
                            RenderOptions.BitmapScalingMode="NearestNeighbor"
                            Visibility="{Binding Folder.HasMaskBindable, ElementName=folderControl, Converter={converters:BoolToVisibilityConverter}}"
                            BorderBrush="White">
                            <Border.Background>
                                <ImageBrush ImageSource="/Images/CheckerTile.png" TileMode="Tile" Viewport="0, 0, 0.20, 0.20"/>
                            </Border.Background>
                            <Grid IsHitTestVisible="False">
                                <Image Source="{Binding Folder.MaskPreviewBitmap,ElementName=folderControl}" Stretch="Uniform" Width="30" Height="30"
                                    RenderOptions.BitmapScalingMode="NearestNeighbor" IsHitTestVisible="False"/>
                                <Path 
                                Data="M 2 0 L 10 8 L 18 0 L 20 2 L 12 10 L 20 18 L 18 20 L 10 12 L 2 20 L 0 18 L 8 10 L 0 2 Z" 
                                Fill="{StaticResource PixiRed}" HorizontalAlignment="Center" VerticalAlignment="Center"
                                Visibility="{Binding Folder.MaskIsVisibleBindable, ElementName=folderControl, Converter={InverseBoolToVisibilityConverter}}"/>
                            </Grid>
                        </Border>
                        <StackPanel Orientation="Vertical"  Margin="3,0,5,0">
                            <userControls1:EditableTextBlock
                                x:Name="editableTextBlock"
                                d:Text="New Folder" FontSize="14"
                                VerticalAlignment="Center"
                                Text="{Binding Folder.NameBindable, ElementName=folderControl, Mode=TwoWay}" />
                            
                            <StackPanel Orientation="Horizontal">
                                <TextBlock d:Text="100" Foreground="White" FontSize="11">
                                    <TextBlock.Text>
                                        <Binding ElementName="folderControl" Path="Folder.OpacityBindable" Converter="{converters:MultiplyConverter}" StringFormat="N0">
                                            <Binding.ConverterParameter>
                                                <sys:Double>100.0</sys:Double>
                                            </Binding.ConverterParameter>
                                        </Binding>
                                    </TextBlock.Text>
                                </TextBlock>
                                <TextBlock Foreground="White" FontSize="11">%</TextBlock>
                                <TextBlock 
                                Margin="5,0,0,0" 
                                d:Text="Normal" 
                                Foreground="White"
                                FontSize="11"
                                Text="{Binding Folder.BlendModeBindable, ElementName=folderControl, Converter={converters:BlendModeToStringConverter}}"/>
                            </StackPanel>
                        </StackPanel>
                    </StackPanel>
                    <Image Source="/Images/Folder.png" Height="20" Margin="0,0,10,0" HorizontalAlignment="Right"/>
                </StackPanel>
            </Grid>
            <Grid DragEnter="Grid_DragEnter" Drop="Grid_Drop_Bottom" 
                  DragLeave="Grid_DragLeave" Grid.Row="2"
                  AllowDrop="false"
                  Grid.ColumnSpan="2" Background="Transparent"/>
        </Grid>
        <Border.ContextMenu>
            <ContextMenu>
                <MenuItem ui:Translator.Key="DELETE" Command="{cmds:Command PixiEditor.Layer.DeleteAllSelected}"/>
                <MenuItem ui:Translator.Key="RENAME" Click="RenameMenuItem_Click"/>
                <MenuItem 
                    IsCheckable="True" 
                    IsChecked="{Binding PlacementTarget.Tag.Folder.ClipToMemberBelowEnabledBindable, RelativeSource={RelativeSource AncestorType=ContextMenu}}" 
                    ui:Translator.Key="CLIP_TO_BELOW"/>
                <Separator/>
                <MenuItem ui:Translator.Key="MOVE_UPWARDS" Command="{cmds:Command PixiEditor.Layer.MoveSelectedMemberUpwards}"/>
                <MenuItem ui:Translator.Key="MOVE_DOWNWARDS" Command="{cmds:Command PixiEditor.Layer.MoveSelectedMemberDownwards}"/>
                <Separator/>
                <MenuItem ui:Translator.Key="CREATE_MASK" Command="{cmds:Command PixiEditor.Layer.CreateMask}"/>
                <MenuItem ui:Translator.Key="DELETE_MASK" Command="{cmds:Command PixiEditor.Layer.DeleteMask}"/>
                <MenuItem 
                    IsCheckable="True" 
                    IsChecked="{Binding PlacementTarget.Tag.Folder.MaskIsVisibleBindable, RelativeSource={RelativeSource AncestorType=ContextMenu}}" 
                    IsEnabled="{Binding PlacementTarget.Tag.Folder.HasMaskBindable, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
                    ui:Translator.Key="ENABLE_MASK"/>
                <Separator/>
                <MenuItem ui:Translator.Key="MERGE_SELECTED" Command="{cmds:Command PixiEditor.Layer.MergeSelected}"/>
                <MenuItem ui:Translator.Key="MERGE_WITH_ABOVE" Command="{cmds:Command PixiEditor.Layer.MergeWithAbove}"/>
                <MenuItem ui:Translator.Key="MERGE_WITH_BELOW" Command="{cmds:Command PixiEditor.Layer.MergeWithBelow}"/>
            </ContextMenu>
        </Border.ContextMenu>
    </Border>
</UserControl>
