<UserControl x:Class="Tango.MachineStudio.Logging.Views.TimelineView"
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:Tango.SharedUI.Converters;assembly=Tango.SharedUI"
xmlns:global="clr-namespace:Tango.MachineStudio.Logging"
xmlns:localConverters="clr-namespace:Tango.MachineStudio.Logging.Converters"
xmlns:entities="clr-namespace:Tango.BL.Entities;assembly=Tango.BL"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
xmlns:vm="clr-namespace:Tango.MachineStudio.Logging.ViewModels"
xmlns:localControls="clr-namespace:Tango.MachineStudio.Logging.Controls"
xmlns:local="clr-namespace:Tango.MachineStudio.Logging.Views"
mc:Ignorable="d"
d:DesignHeight="1080" d:DesignWidth="1920" Background="{StaticResource MainWindow.Background}" d:DataContext="{d:DesignInstance Type=vm:TimelineViewVM, IsDesignTimeCreatable=False}" MouseWheel="UserControl_MouseWheel">
<UserControl.Resources>
<localConverters:TimeSpanToXConverter x:Key="TimeSpanToXConverter" />
<localConverters:MachineEventToXConverter x:Key="MachineEventToXConverter" />
<localConverters:SecondsToWidthConverter x:Key="SecondsToWidthConverter" />
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" />
<localConverters:StringToFirstLineConverter x:Key="StringToFirstLineConverter" />
<LinearGradientBrush x:Key="warningBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="#FFFF8C57"/>
<GradientStop Color="{StaticResource whiteColor}" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="errorBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="#FFFF5151"/>
<GradientStop Color="#FFD9D9" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="criticalBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="Red"/>
<GradientStop Color="{StaticResource whiteColor}" Offset="1"/>
</LinearGradientBrush>
<LinearGradientBrush x:Key="hoverBrush" StartPoint="0.5,0" EndPoint="0.5,1">
<GradientStop Color="#9D9D9D"/>
<GradientStop Color="#F9F9F9" Offset="1"/>
</LinearGradientBrush>
</UserControl.Resources>
<Grid>
<Grid>
<!--<Grid Grid.Row="1">-->
<Grid.RowDefinitions>
<RowDefinition Height="30"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="300"/>
<ColumnDefinition Width="1*"/>
</Grid.ColumnDefinitions>
<Grid Grid.Column="1" ClipToBounds="True">
<localControls:TimeRuler HorizontalAlignment="Left" FontSize="14" HorizontalOffset="{Binding ElementName=scrollViewer,Path=HorizontalOffset}" Background="{StaticResource MainWindow.Background}" BorderBrush="{StaticResource AccentColorBrush}" BorderThickness="1" Foreground="{StaticResource AccentColorBrush}" Height="30" x:Name="ruler" Width="{Binding RelativeSource={RelativeSource AncestorType=Grid},Path=ActualWidth}" RenderWidth="{Binding RelativeSource={RelativeSource AncestorType=Grid},Path=ActualWidth}" Zoom="{Binding TimelineScaleFactor}"></localControls:TimeRuler>
</Grid>
<Grid Background="{StaticResource MainWindow.Background}">
</Grid>
<ScrollViewer x:Name="scroll_channels" Grid.Column="0" Grid.Row="1" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden">
<ItemsControl ItemsSource="{Binding TimelineEventGroups}" Margin="0 0 0 0" Background="{StaticResource MainWindow.Background}" VerticalAlignment="Top">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type vm:TimelineEventGroup}">
<Border BorderThickness="1 0.5 1 0.5" BorderBrush="{StaticResource AccentColorBrush}" Margin="2 0 0 0" Padding="5" Height="{Binding Height,Mode=OneWay}">
<TextBlock Text="{Binding Name}" HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="22" TextWrapping="Wrap" TextAlignment="Center" FontWeight="SemiBold" Foreground="{StaticResource AccentColorBrush}"></TextBlock>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
<localControls:TimelineScrollViewer x:Name="scrollViewer" Grid.Column="1" Grid.Row="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto" ScrollChanged="scrollViewer_ScrollChanged">
<Grid HorizontalAlignment="Left">
<ItemsControl ItemsSource="{Binding TimelineEventGroups}" HorizontalAlignment="Left" MinWidth="{Binding RelativeSource={RelativeSource AncestorType=localControls:TimelineScrollViewer},Path=ActualWidth}">
<ItemsControl.Width>
<MultiBinding Converter="{StaticResource TimeSpanToXConverter}" ConverterParameter="300">
<Binding Path="TimelineMaxTime" />
<Binding Path="TimelineScaleFactor" />
</MultiBinding>
</ItemsControl.Width>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<UniformGrid Columns="1" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type vm:TimelineEventGroup}">
<Border BorderThickness="0 0 0 1" BorderBrush="#98DEFF" Margin="0 0 0 0">
<ItemsControl ItemsSource="{Binding Events}" SizeChanged="ItemsControl_SizeChanged">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel IsItemsHost="True"></StackPanel>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate DataType="{x:Type entities:MachinesEvent}">
<Canvas Margin="0 0 0 0" MinHeight="20">
<Grid Height="{Binding RelativeSource={RelativeSource AncestorType=Canvas},Path=ActualHeight}">
<Canvas.Left>
<MultiBinding Converter="{StaticResource MachineEventToXConverter}">
<Binding Path="." />
<Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.TimelineEventGroups" />
<Binding RelativeSource="{RelativeSource AncestorType=UserControl}" Path="DataContext.TimelineScaleFactor" />
</MultiBinding>
</Canvas.Left>
<Border BorderBrush="#4E4E4E" BorderThickness="1" Padding="2" MinWidth="50" Cursor="Hand">
<i:Interaction.Triggers>
<i:EventTrigger EventName="PreviewMouseUp">
<i:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DataContext.EventSelectedCommand}" CommandParameter="{Binding}" />
</i:EventTrigger>
</i:Interaction.Triggers>
<Border.Style>
<Style TargetType="Border">
<Style.Triggers>
<DataTrigger Binding="{Binding Category}" Value="Info">
<Setter Property="Background" Value="{StaticResource infoBrush}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Category}" Value="Warning">
<Setter Property="Background" Value="{StaticResource warningBrush}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Category}" Value="Error">
<Setter Property="Background" Value="{StaticResource errorBrush}"></Setter>
</DataTrigger>
<DataTrigger Binding="{Binding Category}" Value="Crtitical">
<Setter Property="Background" Value="{StaticResource criticalBrush}"></Setter>
</DataTrigger>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Opacity" Value="0.7"></Setter>
</Trigger>
</Style.Triggers>
</Style>
</Border.Style>
<StackPanel Orientation="Horizontal">
<TextBlock FontWeight="SemiBold" Text="{Binding EventType.Name}" Height="14" FontSize="11"></TextBlock>
<TextBlock Margin="10 0 0 0" Text="{Binding Description,Converter={StaticResource StringToFirstLineConverter}}" Height="14" FontSize="11" Foreground="{StaticResource Dialog.Foreground}"></TextBlock>
</StackPanel>
</Border>
</Grid>
</Canvas>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
<Canvas Visibility="{Binding EnableTimeMarker,Converter={StaticResource BooleanToVisibilityConverter}}" MinWidth="{Binding RelativeSource={RelativeSource AncestorType=localControls:TimelineScrollViewer},Path=ActualWidth}" ClipToBounds="False" IsHitTestVisible="False">
<Grid Height="{Binding RelativeSource={RelativeSource AncestorType=Canvas},Path=ActualHeight}" ClipToBounds="False">
<Canvas.Left>
<MultiBinding Converter="{StaticResource TimeSpanToXConverter}">
<Binding Path="CurrentPosition" />
<Binding Path="TimelineScaleFactor" />
</MultiBinding>
</Canvas.Left>
<Rectangle Stroke="DodgerBlue" StrokeThickness="1" HorizontalAlignment="Left" VerticalAlignment="Stretch" />
<Polygon Fill="DodgerBlue" Points="0,0 16,0 8,15 0,0" Margin="-8 -5 0 0" VerticalAlignment="Top" />
</Grid>
</Canvas>
</Grid>
</localControls:TimelineScrollViewer>
<Border Grid.Row="1" Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Bottom" Margin="20" Padding="10" Background="#7ECECECE" CornerRadius="5">
<Grid>
<materialDesign:PackIcon Kind="MagnifyPlus" Margin="0 -35 0 0" Width="20" Height="20" Foreground="Gray" />
<Slider Minimum="0.5" Maximum="100" Value="{Binding TimelineScaleFactor}" Orientation="Vertical" Height="120"/>
</Grid>
</Border>
</Grid>
<!--</Grid>-->
</Grid>
</UserControl>