﻿<UserControl x:Class="Plugin.UICollection.TcpDebugger"
             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:Plugin.UICollection"
             mc:Ignorable="d" 
             xmlns:pu="https://opensource.panuon.com/wpf-ui"
             xmlns:dp="clr-namespace:UILib.DpUtil;assembly=UILib"
             xmlns:uic="clr-namespace:UILib.Converter;assembly=UILib"
             FontSize="16"
             d:DesignHeight="450" d:DesignWidth="800">
    <UserControl.Resources>
        <ResourceDictionary>
            <!--<ResourceDictionary.MergedDictionaries>
                <pu:StyleDictionary Excludes="Button" />
            </ResourceDictionary.MergedDictionaries>-->
            <Style TargetType="ComboBox"/>
            <Style TargetType="ComboBoxItem"/>
            <Style TargetType="Button">
                
            </Style>
            <Style TargetType="GroupBox">

            </Style>
            <Style TargetType="TextBox">
                <Setter Property="VerticalContentAlignment" Value="Center"/>
                <Setter Property="MinWidth" Value="120"/>
                <Setter Property="Height" Value="Auto"/>
            </Style>
        </ResourceDictionary>
    </UserControl.Resources>

    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="Auto"/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <StackPanel dp:StackPanelHelper.ChildSpace="10" Margin="0,10,0,10">
            <pu:FormGroup Header="IP" GroupName="client">
                <TextBox Text="{Binding Ip}"/>
            </pu:FormGroup>

            <pu:FormGroup Header="Port" GroupName="client">
                <TextBox Text="{Binding Port}"/>
            </pu:FormGroup>

            <pu:FormGroup Header="客户端端口" GroupName="client">
                <TextBox Text="{Binding ClientPort}"/>
            </pu:FormGroup>

            <Label>
                <Label.Style>
                    <Style TargetType="Label">
                        <Setter Property="Foreground" Value="White"/>
                        <Setter Property="Background" Value="Red"/>
                        <Setter Property="VerticalContentAlignment" Value="Center"/>
                        <Setter Property="HorizontalContentAlignment" Value="Center"/>
                        <Setter Property="Content" Value="未连接"/>
                        <Style.Triggers>
                            <DataTrigger Binding="{Binding IsConnected}" Value="True">
                                <Setter Property="Background" Value="Green"/>
                                <Setter Property="Content" Value="已连接"/>
                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </Label.Style>
            </Label>

            <Button Tag="Connect" Content="连接" Click="Button_Click"/>
            <GroupBox Header="接收设置">
                <StackPanel dp:StackPanelHelper.ChildSpace="10" Margin="0,10">
                    <StackPanel Orientation="Horizontal">
                        <RadioButton Content="字符串" IsChecked="{Binding ReceiveDataType,Converter={x:Static uic:RadioEnumConverter.Instance},ConverterParameter={x:Static local:DataType.String}}" GroupName="ReceiveType"/>
                        <RadioButton Content="Hex"  IsChecked="{Binding ReceiveDataType,Converter={x:Static uic:RadioEnumConverter.Instance},ConverterParameter={x:Static local:DataType.HEX}}" GroupName="ReceiveType"/>
                    </StackPanel>
                    <pu:FormGroup Header="编码格式">
                        <ComboBox x:Name="receiveEncodeInput" SelectedValue="{Binding ReceiveEncode}"/>
                        <pu:FormGroup.Style>
                            <Style TargetType="pu:FormGroup">
                                <Setter Property="IsEnabled" Value="False"/>
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding ReceiveDataType}" Value="{x:Static local:DataType.String}">
                                        <Setter Property="IsEnabled" Value="True"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </pu:FormGroup.Style>
                    </pu:FormGroup>
                </StackPanel>
            </GroupBox>
        </StackPanel>

        <StackPanel Grid.Row="1" Grid.Column="0">
            <GroupBox Header="发送设置">
                <StackPanel dp:StackPanelHelper.ChildSpace="10" Margin="0,10">
                    <StackPanel Orientation="Horizontal">
                        <RadioButton Content="字符串" IsChecked="{Binding SendDataType,Converter={x:Static uic:RadioEnumConverter.Instance},ConverterParameter={x:Static local:DataType.String}}" GroupName="SendType"/>
                        <RadioButton Content="Hex"  IsChecked="{Binding SendDataType,Converter={x:Static uic:RadioEnumConverter.Instance},ConverterParameter={x:Static local:DataType.HEX}}" GroupName="SendType"/>
                    </StackPanel>

                    <pu:FormGroup Header="编码格式">
                        <ComboBox x:Name="sendEncodeInput" SelectedValue="{Binding SendEncode}"/>
                        <pu:FormGroup.Style>
                            <Style TargetType="pu:FormGroup">
                                <Setter Property="IsEnabled" Value="False"/>
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding SendDataType}" Value="{x:Static local:DataType.String}">
                                        <Setter Property="IsEnabled" Value="True"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </pu:FormGroup.Style>
                    </pu:FormGroup>

                    <pu:FormGroup Header="分隔符">
                        <ComboBox ItemsSource="{Binding EndMarkSource}" SelectedValue="{Binding EndMark}" DisplayMemberPath="Name" SelectedValuePath="Type"/>
                        <pu:FormGroup.Style>
                            <Style TargetType="pu:FormGroup">
                                <Setter Property="IsEnabled" Value="False"/>
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding SendDataType}" Value="{x:Static local:DataType.String}">
                                        <Setter Property="IsEnabled" Value="True"/>
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </pu:FormGroup.Style>
                    </pu:FormGroup>
                    <pu:FormGroup Header="自定义分隔符">
                        <TextBox Text="{Binding CustomEndMark}"/>
                        <pu:FormGroup.Style>
                            <Style TargetType="pu:FormGroup">
                                <Setter Property="IsEnabled" Value="False"/>
                                <Style.Triggers>
                                    <MultiDataTrigger>
                                        <MultiDataTrigger.Conditions>
                                            <Condition Binding="{Binding SendDataType}" Value="{x:Static local:DataType.String}"/>
                                            <Condition Binding="{Binding EndMark}" Value="2"/>
                                        </MultiDataTrigger.Conditions>
                                        <Setter Property="IsEnabled" Value="True"/>
                                    </MultiDataTrigger>
                                </Style.Triggers>
                            </Style>
                        </pu:FormGroup.Style>
                    </pu:FormGroup>
                </StackPanel>
            </GroupBox>
        </StackPanel>

        <Grid Grid.Row="1" Grid.Column="1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <GroupBox Header="数据发送">
                <TextBox x:Name="sendBox" TextWrapping="Wrap" VerticalContentAlignment="Top"
                         PreviewTextInput="TextBox_PreviewTextInput"/>
            </GroupBox>
            <Button Grid.Column="1" Padding="20" Content="发送" Tag="Send" Click="Button_Click"/>
        </Grid>

        <Grid Grid.Row="0" Grid.Column="1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <GroupBox Header="数据接收">
                <RichTextBox x:Name="console" IsReadOnly="True"/>
            </GroupBox>
        </Grid>
    </Grid>
</UserControl>
