<UserControl x:Class="OpenTapEditor.StepTree"
|
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:local="clr-namespace:OpenTapEditor"
|
mc:Ignorable="d"
|
xmlns:ui="clr-namespace:UILib;assembly=UILib"
|
xmlns:dd="urn:gong-wpf-dragdrop"
|
xmlns:op="clr-namespace:OpenTap;assembly=OpenTap"
|
x:Name="self"
|
xmlns:sys="clr-namespace:System;assembly=mscorlib"
|
d:DesignHeight="450" d:DesignWidth="800">
|
<UserControl.InputBindings>
|
<KeyBinding Key="C" Modifiers="Ctrl" Command="{Binding CopyStepCommand}" />
|
<KeyBinding Key="V" Modifiers="Ctrl" Command="{Binding PasteStepCommand}" />
|
<KeyBinding Key="Delete" Command="{Binding DeleteStepCommand}" />
|
</UserControl.InputBindings>
|
<UserControl.Resources>
|
<ResourceDictionary>
|
<ResourceDictionary.MergedDictionaries>
|
<ResourceDictionary Source="/UILib;component/Themes/Generic.xaml"/>
|
</ResourceDictionary.MergedDictionaries>
|
|
<Style x:Key="gvh" TargetType="GridViewColumnHeader">
|
<Setter Property="Background" Value="#f5f5f5"/>
|
<Setter Property="Padding" Value="5"/>
|
</Style>
|
|
<Style x:Key="CellBorder" TargetType="Border">
|
<Setter Property="Padding" Value="2"/>
|
<Setter Property="BorderBrush" Value="DimGray"/>
|
<Setter Property="BorderThickness" Value="1,0,0,1"/>
|
<Setter Property="Margin" Value="-6,0"/>
|
</Style>
|
|
<DataTemplate x:Key="gvht">
|
<Border Padding="0">
|
<TextBlock Foreground="Black" Text="{Binding }"/>
|
</Border>
|
</DataTemplate>
|
</ResourceDictionary>
|
</UserControl.Resources>
|
<Grid>
|
<ui:TreeListView Grid.Row="1" Grid.Column="0" ItemsSource="{Binding Datasource}"
|
BorderBrush="{StaticResource BorderBrush}"
|
BorderThickness="0,1,0,0"
|
|
PreviewMouseLeftButtonDown="treeList_MouseDown"
|
dd:DragDrop.IsDragSource="True"
|
dd:DragDrop.IsDropTarget="True"
|
dd:DragDrop.DropTargetAdornerBrush="Red"
|
dd:DragDrop.DropHandler="{Binding DragHandler}"
|
PreviewMouseRightButtonDown="treeList_PreviewMouseRightButtonDown"
|
AlternationCount="2"
|
ItemSelectedColor="Transparent"
|
ItemSelectedForeground="Black"
|
ChildrenPath="ChildTestSteps"
|
BorderColor="{StaticResource BorderBrush}"
|
x:Name="treeList">
|
<ui:TreeListView.ItemTemplate>
|
<HierarchicalDataTemplate>
|
<Border BorderThickness="0" x:Name="border">
|
<GridViewRowPresenter Grid.Row="0" Margin="0"
|
Columns="{Binding Columns, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ui:TreeListView,AncestorLevel=1}}"
|
Content="{Binding }"/>
|
</Border>
|
|
<HierarchicalDataTemplate.Triggers>
|
<DataTrigger Value="True">
|
<DataTrigger.Binding>
|
<MultiBinding Converter="{x:Static local:RunningIdConverter.Instance}">
|
<Binding Path="RunningStepId" ElementName="self"/>
|
<Binding Path="Id"/>
|
</MultiBinding>
|
</DataTrigger.Binding>
|
<Setter TargetName="border" Property="Background" Value="LightYellow"/>
|
</DataTrigger>
|
|
<DataTrigger Value="True">
|
<DataTrigger.Binding>
|
<MultiBinding Converter="{x:Static local:RunningIdConverter.Instance}">
|
<Binding Path="ComplatedIds" ElementName="self"/>
|
<Binding Path="Id"/>
|
</MultiBinding>
|
</DataTrigger.Binding>
|
<Setter TargetName="border" Property="Background" Value="LightGreen"/>
|
</DataTrigger>
|
|
<DataTrigger Binding="{Binding Verdict}" Value="{x:Static op:Verdict.Fail}">
|
<Setter TargetName="border" Property="Background" Value="IndianRed"/>
|
</DataTrigger>
|
|
<MultiDataTrigger>
|
<MultiDataTrigger.Conditions>
|
<Condition Value="True">
|
<Condition.Binding>
|
<MultiBinding Converter="{x:Static local:RunningIdConverter.Instance}">
|
<Binding Path="ComplatedIds" ElementName="self"/>
|
<Binding Path="Id"/>
|
</MultiBinding>
|
</Condition.Binding>
|
</Condition>
|
<Condition Binding="{Binding Verdict}" Value="{x:Static op:Verdict.Fail}"/>
|
</MultiDataTrigger.Conditions>
|
<MultiDataTrigger.Setters>
|
<Setter TargetName="border" Property="Background" Value="IndianRed"/>
|
</MultiDataTrigger.Setters>
|
</MultiDataTrigger>
|
|
<MultiDataTrigger>
|
<MultiDataTrigger.Conditions>
|
<Condition Value="True">
|
<Condition.Binding>
|
<MultiBinding Converter="{x:Static local:RunningIdConverter.Instance}">
|
<Binding Path="ComplatedIds" ElementName="self"/>
|
<Binding Path="Id"/>
|
</MultiBinding>
|
</Condition.Binding>
|
</Condition>
|
<Condition Binding="{Binding Verdict}" Value="{x:Static op:Verdict.Error}"/>
|
</MultiDataTrigger.Conditions>
|
<MultiDataTrigger.Setters>
|
<Setter TargetName="border" Property="Background" Value="Red"/>
|
</MultiDataTrigger.Setters>
|
</MultiDataTrigger>
|
|
<Trigger Property="IsMouseOver" Value="True">
|
<Setter TargetName="border" Property="Background" Value="#e5f3fb"/>
|
</Trigger>
|
|
<DataTrigger Value="True">
|
<DataTrigger.Binding>
|
<MultiBinding Converter="{x:Static local:SelectedStepConverter.Instance}">
|
<Binding Path="SelectedSteps" ElementName="self"/>
|
<Binding Path=""/>
|
<Binding Path="SelectedSteps.Count" ElementName="self"/>
|
</MultiBinding>
|
</DataTrigger.Binding>
|
<Setter TargetName="border" Property="Background" Value="#c1dcf9"/>
|
</DataTrigger>
|
|
<DataTrigger Value="True">
|
<DataTrigger.Binding>
|
<MultiBinding Converter="{x:Static local:RunningIdConverter.Instance}">
|
<Binding Path="ComplatedIds" ElementName="self"/>
|
<Binding Path="Id"/>
|
</MultiBinding>
|
</DataTrigger.Binding>
|
<Setter TargetName="border" Property="Background" Value="LightGreen"/>
|
</DataTrigger>
|
</HierarchicalDataTemplate.Triggers>
|
</HierarchicalDataTemplate>
|
</ui:TreeListView.ItemTemplate>
|
|
<ui:TreeListView.Columns>
|
<GridViewColumn Header="" Width="20" ui:TreeViewColumnWidthHelper.AutoWidth="20"
|
HeaderTemplate="{StaticResource gvht}">
|
<GridViewColumn.HeaderContainerStyle>
|
<Style TargetType="GridViewColumnHeader" BasedOn="{StaticResource gvh}">
|
<Setter Property="IsEnabled" Value="False"/>
|
</Style>
|
</GridViewColumn.HeaderContainerStyle>
|
<GridViewColumn.CellTemplate>
|
<DataTemplate>
|
<Border Style="{StaticResource TreeCellBoard}" Padding="0">
|
<local:DebuggerBtn StepId="{Binding Id}" HandleClick="DebuggerBtn_HandleClick">
|
<local:DebuggerBtn.InDebug>
|
<MultiBinding Converter="{x:Static local:RunningIdConverter.Instance}">
|
<Binding Path="DebugIds" ElementName="self"/>
|
<Binding Path="Id"/>
|
</MultiBinding>
|
</local:DebuggerBtn.InDebug>
|
|
<local:DebuggerBtn.IsCurrent>
|
<MultiBinding Converter="{x:Static local:RunningIdConverter.Instance}">
|
<Binding Path="DebugStepId" ElementName="self"/>
|
<Binding Path="Id"/>
|
</MultiBinding>
|
</local:DebuggerBtn.IsCurrent>
|
|
<local:DebuggerBtn.Running>
|
<MultiBinding Converter="{x:Static local:RunningIdConverter.Instance}">
|
<Binding Path="RunningStepId" ElementName="self"/>
|
<Binding Path="Id"/>
|
</MultiBinding>
|
</local:DebuggerBtn.Running>
|
</local:DebuggerBtn>
|
</Border>
|
</DataTemplate>
|
</GridViewColumn.CellTemplate>
|
</GridViewColumn>
|
|
<GridViewColumn Header="" Width="20"
|
ui:TreeViewColumnWidthHelper.AutoWidth="Auto"
|
HeaderTemplate="{StaticResource gvht}">
|
<GridViewColumn.HeaderContainerStyle>
|
<Style TargetType="GridViewColumnHeader" BasedOn="{StaticResource gvh}">
|
<Setter Property="IsEnabled" Value="False"/>
|
</Style>
|
</GridViewColumn.HeaderContainerStyle>
|
<GridViewColumn.CellTemplate>
|
<DataTemplate>
|
<Border Style="{StaticResource TreeCellBoard}">
|
<DockPanel>
|
<local:ErrorSpan DockPanel.Dock="Right" Source="{Binding }"/>
|
<TextBlock DockPanel.Dock="Right" Style="{StaticResource TreeTotalIndex}"/>
|
|
<ToggleButton HorizontalAlignment="Left" x:Name="Expander" Style="{StaticResource ExpandCollapseToggleStyle}"
|
IsChecked="{Binding IsExpanded, RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ui:TreeListViewItem,AncestorLevel=1}}"
|
ClickMode="Press"/>
|
|
</DockPanel>
|
</Border>
|
</DataTemplate>
|
</GridViewColumn.CellTemplate>
|
</GridViewColumn>
|
|
<GridViewColumn Header="{DynamicResource 使能}" HeaderContainerStyle="{StaticResource gvh}" Width="80"
|
HeaderTemplate="{StaticResource gvht}">
|
<GridViewColumn.CellTemplate>
|
<DataTemplate>
|
<Border Style="{StaticResource TreeCellBoard}">
|
<CheckBox Margin="0,0,10,0" VerticalContentAlignment="Center"
|
IsChecked="{Binding Enabled,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
|
</Border>
|
</DataTemplate>
|
</GridViewColumn.CellTemplate>
|
</GridViewColumn>
|
|
<GridViewColumn Header="{DynamicResource 名称}" HeaderContainerStyle="{StaticResource gvh}" Width="200"
|
HeaderTemplate="{StaticResource gvht}">
|
<GridViewColumn.CellTemplate>
|
<DataTemplate>
|
<Border Style="{StaticResource TreeCellBoard}">
|
<ui:EditBox Value="{Binding Name,Mode=TwoWay}"/>
|
</Border>
|
</DataTemplate>
|
</GridViewColumn.CellTemplate>
|
</GridViewColumn>
|
|
<GridViewColumn Header="{DynamicResource 类型}" HeaderContainerStyle="{StaticResource gvh}" Width="200"
|
HeaderTemplate="{StaticResource gvht}">
|
<GridViewColumn.CellTemplate>
|
<DataTemplate>
|
<Border Style="{StaticResource TreeCellBoard}">
|
<TextBlock Text="{Binding TypeName}"/>
|
</Border>
|
</DataTemplate>
|
</GridViewColumn.CellTemplate>
|
</GridViewColumn>
|
|
<GridViewColumn Header="{DynamicResource 描述}" ui:TreeViewColumnWidthHelper.AutoWidth="*"
|
HeaderContainerStyle="{StaticResource gvh}" Width="200"
|
HeaderTemplate="{StaticResource gvht}">
|
<GridViewColumn.CellTemplate>
|
<DataTemplate>
|
<Border Style="{StaticResource TreeCellBoard}">
|
<ui:EditBox Value="{Binding Description,Mode=TwoWay}"/>
|
</Border>
|
</DataTemplate>
|
</GridViewColumn.CellTemplate>
|
</GridViewColumn>
|
|
<GridViewColumn Header="{DynamicResource 下限}" HeaderContainerStyle="{StaticResource gvh}" Width="200"
|
HeaderTemplate="{StaticResource gvht}">
|
<GridViewColumn.CellTemplate>
|
<DataTemplate>
|
<Border Style="{StaticResource TreeCellBoard}">
|
<ui:EditBox Value="{Binding LimitDown,Mode=TwoWay}"/>
|
</Border>
|
</DataTemplate>
|
</GridViewColumn.CellTemplate>
|
</GridViewColumn>
|
|
<GridViewColumn Header="{DynamicResource 上限}" HeaderContainerStyle="{StaticResource gvh}" Width="200"
|
HeaderTemplate="{StaticResource gvht}">
|
<GridViewColumn.CellTemplate>
|
<DataTemplate>
|
<Border Style="{StaticResource TreeCellBoard}">
|
<ui:EditBox Value="{Binding LimitUp,Mode=TwoWay}"/>
|
</Border>
|
</DataTemplate>
|
</GridViewColumn.CellTemplate>
|
</GridViewColumn>
|
|
<GridViewColumn Header="{DynamicResource 结果}" HeaderContainerStyle="{StaticResource gvh}" Width="200"
|
HeaderTemplate="{StaticResource gvht}">
|
<GridViewColumn.CellTemplate>
|
<DataTemplate>
|
<Border Style="{StaticResource TreeCellBoard}">
|
<TextBlock Text="{Binding Verdict}"/>
|
</Border>
|
</DataTemplate>
|
</GridViewColumn.CellTemplate>
|
</GridViewColumn>
|
</ui:TreeListView.Columns>
|
</ui:TreeListView>
|
</Grid>
|
</UserControl>
|