JD2022-TU1/main/tools/framework/JD.Timeline/Dance/MotionClipEditionHelper.xaml

187 lines
11 KiB
XML

<Window x:Class="JD.Timeline.View.Helpers.MotionClipEditionHelper"
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:converters="clr-namespace:JD.Timeline.View.Converters"
xmlns:serialization="clr-namespace:JD.Serialization;assembly=JD.Serialization"
xmlns:helpers="clr-namespace:JD.Timeline.View.Helpers"
mc:Ignorable="d"
Width="299"
WindowStyle="None"
AllowsTransparency="True"
ShowInTaskbar="False"
Deactivated="Window_Deactivated"
Background="Transparent"
SizeToContent="Height"
Height="126" Activated="Window_Activated">
<Window.Resources>
<!-- Converters -->
<BooleanToVisibilityConverter x:Key="boolToVisibility" />
<converters:WinFormsColorToWpfColorConverter x:Key="WinFormsColorToWpfColor" />
<!-- Golden clip checkbox template -->
<Style x:Key="GoldenMoveStyle" TargetType="{x:Type CheckBox}">
<Setter Property="Template" >
<Setter.Value>
<ControlTemplate TargetType="{x:Type CheckBox}">
<StackPanel Orientation="Vertical" Visibility="{Binding IsGoldenMoveEditable,Converter={StaticResource boolToVisibility}}">
<Grid>
<Border Width="32" Height="32" BorderThickness="1" BorderBrush="DarkGray">
<Image Source="/JD.Timeline;component/Resources/Icon_64x64_picto_gold.png" Stretch="Fill" />
</Border>
<Rectangle x:Name="checkedOverlay" Fill="#B2F1D54E" Width="32" Height="32"/>
</Grid>
<TextBlock x:Name="pictoText" Text="Golden" TextAlignment="Center" Foreground="DarkGray" FontSize="10"/>
</StackPanel>
<ControlTemplate.Triggers>
<Trigger Property="IsChecked" Value="False">
<Setter TargetName="checkedOverlay" Property="Visibility" Value="Hidden" />
<Setter TargetName="pictoText" Property="Foreground" Value="DarkGray" />
</Trigger>
<Trigger Property="IsChecked" Value="True">
<Setter TargetName="checkedOverlay" Property="Visibility" Value="Visible" />
<Setter TargetName="pictoText" Property="Foreground" Value="#FFEA8E42" />
</Trigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<!-- Template for move models in Combobox -->
<DataTemplate x:Key="MoveModelDataTemplate" DataType="serialization:MoveModel" >
<Border x:Name="MoveModelDataTemplateBorder" Background="Transparent">
<Grid Name="MoveModelDataTemplateGrid">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"></ColumnDefinition>
<ColumnDefinition Width="1*"></ColumnDefinition>
<ColumnDefinition Width="Auto"></ColumnDefinition>
</Grid.ColumnDefinitions>
<Rectangle Grid.Column="0" Width="16" Height="16" Margin="2">
<Rectangle.Fill>
<SolidColorBrush Color="{Binding Path=Color, Mode=OneWay, Converter={StaticResource ResourceKey=WinFormsColorToWpfColor}}" />
</Rectangle.Fill>
</Rectangle>
<TextBlock Grid.Column="1" Text="{Binding Name}" VerticalAlignment="Center" Margin="2 0 0 0" HorizontalAlignment="Stretch"/>
<Button Grid.Column="2" ToolTip="Create a copy of this model" Click="CreateNewModelButton_Click" >
<Button.Style>
<Style TargetType="{x:Type Button}">
<Setter Property="Opacity" Value="0.2"></Setter>
<Style.Triggers>
<DataTrigger Binding="{Binding ElementName=MoveModelDataTemplateBorder, Path=IsMouseOver}" Value="True">
<Setter Property="Opacity" Value="1.0"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
</Button.Style>
<Image Source="/JD.Timeline;component/Resources/Icon_16x16_AddModel.png" />
</Button>
</Grid>
</Border>
</DataTemplate>
<!-- Template for first entry in combobox used to add new movemodels -->
<DataTemplate x:Key="CreateMoveModelDataTemplate" DataType="helpers:AddNewMoveModelAction">
<StackPanel Orientation="Horizontal">
<Image Source="/JD.Timeline;component/Resources/Icon_16x16_AddModel.png" VerticalAlignment="Center" Margin="0 4 4 4"/>
<TextBlock Text="Create new model" VerticalAlignment="Center" Margin="0 4 4 4" FontWeight="Bold" />
</StackPanel>
</DataTemplate>
<!-- Template selector for combobox -->
<helpers:MoveModelHelperTemplateSelector x:Key="DataTemplateSelector"
MoveModelDataTemplate="{StaticResource MoveModelDataTemplate}"
CreateMoveModelDataTemplate="{StaticResource CreateMoveModelDataTemplate}" />
</Window.Resources>
<!-- Window loading animation -->
<Window.Triggers>
<EventTrigger RoutedEvent="Window.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="00:00:00.250" Storyboard.TargetProperty="Opacity" From="0" To="1" >
<DoubleAnimation.EasingFunction>
<CubicEase EasingMode="EaseIn"/>
</DoubleAnimation.EasingFunction>
</DoubleAnimation>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Window.Triggers>
<!-- Layout of the window -->
<Border Margin="5" Padding="5" Background="#DDFFFFFF" BorderBrush="LightGray" BorderThickness="2,2,2,2" CornerRadius="5" VerticalAlignment="Top">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Grid Grid.Row="0" Width="Auto">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="1*" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Grid.Column="0" Text="Model" Margin="0 0 5 0" VerticalAlignment="Center"/>
<!-- Model Selection -->
<Grid Grid.Row="0" Grid.Column="1" >
<!-- Validation background color -->
<Rectangle>
<Rectangle.Style >
<Style TargetType="{x:Type Rectangle}">
<Style.Triggers>
<DataTrigger Binding="{Binding ShowNameWarning}" Value="False">
<Setter Property="Fill" Value="White"/>
</DataTrigger>
<DataTrigger Binding="{Binding ShowNameWarning}" Value="True">
<Setter Property="Fill" Value="#FFEAA8A8"/>
<Setter Property="ToolTip" Value="This name is not valid."/>
</DataTrigger>
</Style.Triggers>
</Style>
</Rectangle.Style>
</Rectangle>
<!-- Watermark -->
<TextBlock Text="Enter model name" Foreground="Gray" FontStyle="Italic" Margin="5 2 0 0" Visibility="{Binding ShowWatermarkText,Converter={StaticResource boolToVisibility}}" />
<!-- Model Selection combobox -->
<ComboBox IsEditable="True" Background="Transparent" IsTextSearchEnabled="False" Name="_modelComboBox" ItemsSource="{Binding ModelList}" ItemTemplateSelector="{StaticResource DataTemplateSelector}" SelectionChanged="Models_SelectionChanged" TextBoxBase.TextChanged="Models_TextChanged" HorizontalContentAlignment="Stretch" />
</Grid>
<!-- Checkboxes to select color and golden -->
<StackPanel Grid.Row="1" Grid.Column="1" Orientation="Horizontal" Margin="0 5 0 0">
<CheckBox Margin="0 0 0 0" Style="{StaticResource ResourceKey=GoldenMoveStyle}" IsChecked="{Binding IsGoldenChecked}"/>
<StackPanel Margin="5 0 0 0" Orientation="Vertical" DataContext="{Binding CurrentModel}">
<Border Width="32" Height="32" BorderThickness="1" BorderBrush="DarkGray">
<Rectangle Width="32" Height="32" MouseLeftButtonDown="Color_MouseLeftButtonDown" >
<Rectangle.Fill>
<SolidColorBrush Color="{Binding Path=Color, Mode=OneWay, Converter={StaticResource ResourceKey=WinFormsColorToWpfColor}}" />
</Rectangle.Fill>
</Rectangle>
</Border>
<TextBlock Text="Color" TextAlignment="Center" Foreground="DarkGray" FontSize="10"/>
</StackPanel>
</StackPanel>
</Grid>
<!-- Dialog Buttons -->
<Grid Grid.Row="2" Visibility="{Binding IsModal,Converter={StaticResource boolToVisibility}}" Margin="0 5 0 0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Button Grid.Column="1" Click="OkClick" Content="Ok" IsDefault="true" Height="23" HorizontalAlignment="Right" Margin="0,0,12,0" VerticalAlignment="Bottom" Width="75" IsEnabled="{Binding IsCurrentNameValid}"/>
<Button Grid.Column="2" Click="CancelClick" Content="Cancel" IsCancel="True" Height="23" HorizontalAlignment="Right" Margin="0,0,12,0" VerticalAlignment="Bottom" Width="75" />
</Grid>
</Grid>
</Border>
</Window>