<UserControl x:Class="Filtration.ThemeEditor.Views.ThemeComponentControl"
             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:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
             xmlns:commonConverters="clr-namespace:Filtration.Common.Converters;assembly=Filtration.Common"
             xmlns:themeEditor="clr-namespace:Filtration.ObjectModel.ThemeEditor;assembly=Filtration.ObjectModel"
             xmlns:views="clr-namespace:Filtration.ThemeEditor.Views"
             mc:Ignorable="d" 
             d:DataContext="{d:DesignInstance Type=themeEditor:ThemeComponent}"
             d:DesignHeight="100" d:DesignWidth="200">
    <UserControl.Resources>
        <commonConverters:BooleanVisibilityConverter x:Key="BooleanVisibilityConverter" />
    </UserControl.Resources>
    <Grid Width="200">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto" />
            <RowDefinition Height="Auto" />
            <RowDefinition Height="25" />
        </Grid.RowDefinitions>
        <Grid.Resources>
            <DataTemplate x:Key="EditableComponentNameTemplate">
                <StackPanel>
                    <TextBlock Text="{Binding UsageCount, StringFormat='Usages: {0}'}"
                               FontSize="10"
                               HorizontalAlignment="Right"
                               Visibility="{Binding Path=DataContext.EditEnabled, RelativeSource={RelativeSource AncestorType={x:Type views:ThemeEditorView}}, Converter={StaticResource BooleanVisibilityConverter}}">
                        <TextBlock.Style>
                            <Style TargetType="TextBlock">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding UsageCount}" Value="0">
                                        <Setter Property="Foreground" Value="Red" />
                                    </DataTrigger>
                                </Style.Triggers>
                                <Setter Property="Foreground" Value="SteelBlue" />
                            </Style>
                        </TextBlock.Style>
                    </TextBlock>
                    <TextBox Text="{Binding ComponentName}" />
                </StackPanel>
            </DataTemplate>
            <DataTemplate x:Key="ViewOnlyComponentNameTemplate">
                <TextBlock Text="{Binding ComponentName}" ToolTip="{Binding ComponentName}" />
            </DataTemplate>
        </Grid.Resources>
        <ContentControl Grid.Row="1" Content="{Binding}">
            <ContentControl.Style>
                <Style TargetType="ContentControl">
                    <Style.Triggers>
                        <DataTrigger Binding="{Binding Path=DataContext.IsMasterTheme, RelativeSource={RelativeSource AncestorType={x:Type views:ThemeEditorView}}}" Value="true">
                            <Setter Property="ContentTemplate" Value="{StaticResource EditableComponentNameTemplate}" />
                        </DataTrigger>
                        <DataTrigger Binding="{Binding Path=DataContext.IsMasterTheme, RelativeSource={RelativeSource AncestorType={x:Type views:ThemeEditorView}}}" Value="false">
                            <Setter Property="ContentTemplate" Value="{StaticResource ViewOnlyComponentNameTemplate}" />
                        </DataTrigger>
                    </Style.Triggers>
                </Style>
            </ContentControl.Style>
        </ContentControl>
        <xctk:ColorPicker Grid.Row="2" SelectedColor="{Binding Color}" />
    </Grid>
</UserControl>