<ResourceDictionary
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:mwt="clr-namespace:Microsoft.Windows.Themes;assembly=PresentationFramework.Aero"
	xmlns:tree="clr-namespace:CommonTools.TreeListView.Tree"
    xmlns:local="clr-namespace:CommonTools.TreeListView"
    xmlns:l="clr-namespace:CommonTools">

    <SolidColorBrush x:Key="SearchTextBox_Background" Color="White" />
    <SolidColorBrush x:Key="SearchTextBox_Foreground" Color="Black" />
    <LinearGradientBrush x:Key="SearchTextBox_Border" StartPoint="0,0" EndPoint="0,1">
        <GradientStop Color="#FFABADB3" Offset="0.05" />
        <GradientStop Color="#FFE2E3EA" Offset="0.07" />
        <GradientStop Color="#FFE3E9EF" Offset="1" />
    </LinearGradientBrush>
    <LinearGradientBrush x:Key="SearchTextBox_BorderMouseOver" StartPoint="0,0" EndPoint="0,1">
        <GradientStop Color="#FF5C97C1" Offset="0.05" />
        <GradientStop Color="#FFB9D7EB" Offset="0.07" />
        <GradientStop Color="#FFC7E2F1" Offset="1" />
    </LinearGradientBrush>
    <SolidColorBrush x:Key="SearchTextBox_SearchIconBorder" Color="White" />
    <SolidColorBrush x:Key="SearchTextBox_SearchIconBackground" Color="White" />
    <LinearGradientBrush x:Key="SearchTextBox_SearchIconBorder_MouseOver" StartPoint="0,0" EndPoint="0,1">
        <GradientStop Color="#FFFFFFFF" Offset="0" />
        <GradientStop Color="#FFE5F4FC" Offset="1" />
    </LinearGradientBrush>
    <LinearGradientBrush x:Key="SearchTextBox_SearchIconBackground_MouseOver" StartPoint="0,0" EndPoint="0,1">
        <GradientStop Color="#FFE7F5FD" Offset="0" />
        <GradientStop Color="#FFD2EDFC" Offset="0.5" />
        <GradientStop Color="#FFB6E3FD" Offset="0.51" />
        <GradientStop Color="#FF9DD5F3" Offset="1" />
    </LinearGradientBrush>
    <LinearGradientBrush x:Key="SearchTextBox_SearchIconBorder_MouseDown" StartPoint="0,0" EndPoint="0,1">
        <GradientStop Color="#FFFFFFFF" Offset="0" />
        <GradientStop Color="#FFE5F4FC" Offset="1" />
    </LinearGradientBrush>
    <LinearGradientBrush x:Key="SearchTextBox_SearchIconBackground_MouseDown" StartPoint="0,0" EndPoint="0,1">
        <GradientStop Color="#FFE7F5FD" Offset="0" />
        <GradientStop Color="#FFD2EDFC" Offset="0.5" />
        <GradientStop Color="#FFB6E3FD" Offset="0.51" />
        <GradientStop Color="#FF9DD5F3" Offset="1" />
    </LinearGradientBrush>
    <SolidColorBrush x:Key="SearchTextBox_LabelTextColor" Color="Gray" />


    <Style x:Key="{x:Type l:SearchTextBox}" TargetType="{x:Type l:SearchTextBox}">
        <Setter Property="Background" Value="{StaticResource SearchTextBox_Background}" />
        <Setter Property="BorderBrush" Value="{StaticResource SearchTextBox_Border}" />
        <Setter Property="Foreground" Value="{StaticResource SearchTextBox_Foreground}" />
        <Setter Property="BorderThickness" Value="1" />
        <Setter Property="SnapsToDevicePixels" Value="True" />
        <Setter Property="LabelText" Value="Search" />
        <Setter Property="FocusVisualStyle" Value="{x:Null}"/>
        <Setter Property="LabelTextColor" Value="{StaticResource SearchTextBox_LabelTextColor}" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type l:SearchTextBox}">
                    <Border x:Name="Border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}">
                        <Grid x:Name="LayoutGrid">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="{Binding RelativeSource={RelativeSource TemplatedParent},Path=ActualHeight}" />
                            </Grid.ColumnDefinitions>
                            <ScrollViewer Margin="2" x:Name="PART_ContentHost" Grid.Column="0" />
                            <Label x:Name="LabelText" Margin="2" Grid.Column="0" Foreground="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=LabelTextColor}" Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=LabelText}" Padding="2,0,0,0" FontStyle="Italic" />
                            <Border x:Name="PART_SearchIconBorder" Grid.Column="1" BorderThickness="1" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" BorderBrush="{StaticResource SearchTextBox_SearchIconBorder}" Background="{StaticResource SearchTextBox_SearchIconBackground}">
                                <Image x:Name="SearchIcon" Stretch="None" Width="15" Height="15" HorizontalAlignment="Center" VerticalAlignment="Center" Source="/CommonTools;component/Resources/search.png" />
                             </Border>
                        </Grid>
                    </Border>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="BorderBrush" Value="{StaticResource SearchTextBox_BorderMouseOver}" />
                        </Trigger>
                        <Trigger Property="IsKeyboardFocusWithin" Value="True">
                            <Setter Property="BorderBrush" Value="{StaticResource SearchTextBox_BorderMouseOver}" />
                        </Trigger>
                        <Trigger Property="HasText" Value="True">
                            <Setter Property="Visibility" TargetName="LabelText" Value="Hidden" />
                        </Trigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="HasText" Value="True" />
                                <Condition Property="SearchMode" Value="Instant" />
                            </MultiTrigger.Conditions>
                            <Setter Property="Source" TargetName="SearchIcon" Value="/CommonTools;component/Resources/clear.png" />
                        </MultiTrigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsMouseOver" SourceName="PART_SearchIconBorder" Value="True" />
                                <Condition Property="HasText" Value="True" />
                            </MultiTrigger.Conditions>
                            <Setter Property="BorderBrush" TargetName="PART_SearchIconBorder" Value="{StaticResource SearchTextBox_SearchIconBorder_MouseOver}" />
                            <Setter Property="Background" TargetName="PART_SearchIconBorder" Value="{StaticResource SearchTextBox_SearchIconBackground_MouseOver}" />
                        </MultiTrigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsMouseOver" SourceName="PART_SearchIconBorder" Value="True" />
                                <Condition Property="IsMouseLeftButtonDown" Value="True" />
                                <Condition Property="HasText" Value="True" />
                            </MultiTrigger.Conditions>
                            <Setter Property="Padding" TargetName="PART_SearchIconBorder" Value="2,0,0,0" />
                            <Setter Property="BorderBrush" TargetName="PART_SearchIconBorder" Value="{StaticResource SearchTextBox_SearchIconBorder_MouseOver}" />
                            <Setter Property="Background" TargetName="PART_SearchIconBorder" Value="{StaticResource SearchTextBox_SearchIconBackground_MouseOver}" />
                        </MultiTrigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

    <Style x:Key="ExpandCollapseToggleStyle" TargetType="{x:Type ToggleButton}">
		<Setter Property="Focusable" Value="False"/>
		<Setter Property="Width" Value="19"/>
		<Setter Property="Height" Value="13"/>
		<Setter Property="Template">
			<Setter.Value>
				<ControlTemplate TargetType="ToggleButton">
					<Border Background="#00FFFFFF" Width="19" Height="13">
						<Border BorderThickness="1,1,1,1" CornerRadius="1,1,1,1" BorderBrush="#FF7898B5" Width="9" Height="9" SnapsToDevicePixels="True">
							<Border.Background>
								<LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
									<LinearGradientBrush.GradientStops>
										<GradientStop Color="#FFFFFFFF" Offset="0.2" />
										<GradientStop Color="#FFC0B7A6" Offset="1" />
									</LinearGradientBrush.GradientStops>
								</LinearGradientBrush>
							</Border.Background>
							<Path Data="M0,2L0,3 2,3 2,5 3,5 3,3 5,3 5,2 3,2 3,0 2,0 2,2z" Fill="#FF000000" Name="ExpandPath" Margin="1,1,1,1" />
						</Border>
					</Border>
					<ControlTemplate.Triggers>
						<Trigger Property="ToggleButton.IsChecked" Value="True">
							<Setter Property="Path.Data" TargetName="ExpandPath">
								<Setter.Value>
									<StreamGeometry>M0,2L0,3 5,3 5,2z</StreamGeometry>
								</Setter.Value>
							</Setter>
						</Trigger>
					</ControlTemplate.Triggers>
				</ControlTemplate>
			</Setter.Value>
		</Setter>
	</Style>

	<tree:LevelToIndentConverter x:Key="LevelToIndentConverter"/>
	<tree:CanExpandConverter x:Key="CanExpandConverter"/>

	<Style TargetType="{x:Type tree:RowExpander}">
		<Setter Property="Focusable" Value="False"/>
		<Setter Property="Template">
			<Setter.Value>
				<ControlTemplate TargetType="{x:Type tree:RowExpander}">
					<ToggleButton x:Name="Expander" 
									  Style="{StaticResource ExpandCollapseToggleStyle}" 
									  Margin="{Binding Node.Level, Converter={StaticResource LevelToIndentConverter},RelativeSource={RelativeSource AncestorType={x:Type tree:TreeListItem}}}"
									  IsChecked="{Binding Node.IsExpanded, Mode=TwoWay, RelativeSource={RelativeSource AncestorType={x:Type tree:TreeListItem}}}"
									  Visibility="{Binding Node.IsExpandable, Converter={StaticResource CanExpandConverter},RelativeSource={RelativeSource AncestorType={x:Type tree:TreeListItem}}}"
									  ClickMode="Press"/>
				</ControlTemplate>
			</Setter.Value>
		</Setter>
	</Style>
</ResourceDictionary>
