<hb:SimpleMaskControl x:Class="Plugin.DeviceConfig.DeviceConfig"
             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:hb="clr-namespace:HMI.Base;assembly=HMI.Base"
             xmlns:ui="clr-namespace:HMI.UI;assembly=HMI.UI"
             xmlns:pw="https://opensource.panuon.com/wpf"
             xmlns:pu="https://opensource.panuon.com/wpf-ui"
             xmlns:dp="clr-namespace:HMI.UI.DpUtil;assembly=HMI.UI"
             xmlns:local="clr-namespace:Plugin.DeviceConfig"
             mc:Ignorable="d"
             Loaded="SimpleMaskControl_Loaded"
             d:DesignHeight="700" d:DesignWidth="1200">
    <hb:SimpleMaskControl.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/HMI.UI;component/Style/PanuonListView.xaml"/>
            </ResourceDictionary.MergedDictionaries>
            <Style x:Key="TitleBox" TargetType="TextBlock">
                <Setter Property="FontSize" Value="14"/>
                <Setter Property="FontWeight" Value="SemiBold"/>
                <Setter Property="Padding" Value="8,4"/>
                <Setter Property="VerticalAlignment" Value="Center"/>
            </Style>
        </ResourceDictionary>
    </hb:SimpleMaskControl.Resources>

    <Grid dp:GridHelper.Space="8">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <!-- 顶部工具栏 -->
        <DockPanel Grid.Row="0">
            <StackPanel dp:StackPanelHelper.ChildSpace="10" DockPanel.Dock="Right" Orientation="Horizontal">
                <Button Style="{StaticResource AddBtn}" x:Name="addBtn" Click="Button_Click"/>
                <Button Style="{StaticResource EditBtn}" x:Name="editBtn" Content="编辑" Click="Button_Click"/>
                <Button Style="{StaticResource DelBtn}" x:Name="delBtn" Content="删除" Click="Button_Click"/>
                <Button x:Name="batchBtn" Click="Button_Click" Content="批量生成"
                        Style="{StaticResource AddBtn}"/>
                <Button Style="{StaticResource ImportBtn}" x:Name="importBtn" Click="Button_Click"/>
                <Button Style="{StaticResource ExportBtn}" x:Name="exportBtn" Click="Button_Click"/>
                <Button x:Name="versionBtn" Click="Button_Click" Content="版本管理"
                        Style="{StaticResource RfhBtn}"/>
                <Button Style="{StaticResource RfhBtn}" x:Name="rfhBtn" Click="Button_Click"/>
            </StackPanel>
            <TextBlock Style="{StaticResource TitleBox}" Text="仪器仪表注册"/>
        </DockPanel>

        <!-- 主体三栏区域 -->
        <Grid Grid.Row="1">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="250"/>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="300"/>
            </Grid.ColumnDefinitions>

            <!-- 左栏：设备分类树 -->
            <Border Grid.Column="0" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1" CornerRadius="4" Margin="0,0,4,0">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <TextBox x:Name="searchBox" Grid.Row="0" Margin="6" 
                             pu:TextBoxHelper.Watermark="搜索设备..."
                             Style="{StaticResource EditorTextBoxStyle}"
                             TextChanged="SearchBox_TextChanged"/>
                    <TreeView x:Name="deviceTree" Grid.Row="1" Margin="4"
                              SelectedItemChanged="DeviceTree_SelectedItemChanged">
                        <TreeView.ItemTemplate>
                            <HierarchicalDataTemplate ItemsSource="{Binding Children}">
                                <TextBlock Text="{Binding Name}" FontWeight="SemiBold"/>
                            </HierarchicalDataTemplate>
                        </TreeView.ItemTemplate>
                    </TreeView>
                </Grid>
            </Border>

            <!-- 中栏：设备详情 -->
            <Border Grid.Column="1" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1" CornerRadius="4" Margin="2,0,2,0">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>

                    <!-- 设备基本信息表单 -->
                    <GroupBox Grid.Row="0" Header="设备信息" Margin="6" FontWeight="SemiBold">
                        <Grid Margin="8">
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="120"/>
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="120"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                            <Grid.RowDefinitions>
                                <RowDefinition Height="36"/>
                                <RowDefinition Height="36"/>
                                <RowDefinition Height="36"/>
                            </Grid.RowDefinitions>

                            <TextBlock Grid.Row="0" Grid.Column="0" Text="设备ID" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
                            <TextBox Grid.Row="0" Grid.Column="1" x:Name="tbDeviceId" VerticalAlignment="Center" 
                                     Style="{StaticResource EditorTextBoxStyle}" IsReadOnly="True" Margin="4,0"/>

                            <TextBlock Grid.Row="0" Grid.Column="2" Text="设备类型" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
                            <TextBox Grid.Row="0" Grid.Column="3" x:Name="tbKind" VerticalAlignment="Center"
                                     Style="{StaticResource EditorTextBoxStyle}" IsReadOnly="True" Margin="4,0"/>

                            <TextBlock Grid.Row="1" Grid.Column="0" Text="驱动类型" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
                            <TextBox Grid.Row="1" Grid.Column="1" x:Name="tbDriverType" VerticalAlignment="Center"
                                     Style="{StaticResource EditorTextBoxStyle}" IsReadOnly="True" Margin="4,0"/>

                            <TextBlock Grid.Row="1" Grid.Column="2" Text="传输方式" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
                            <TextBox Grid.Row="1" Grid.Column="3" x:Name="tbTransport" VerticalAlignment="Center"
                                     Style="{StaticResource EditorTextBoxStyle}" IsReadOnly="True" Margin="4,0"/>

                            <TextBlock Grid.Row="2" Grid.Column="0" Text="连接端点" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
                            <TextBox Grid.Row="2" Grid.Column="1" x:Name="tbEndpoint" VerticalAlignment="Center"
                                     Style="{StaticResource EditorTextBoxStyle}" IsReadOnly="True" Margin="4,0"/>

                            <TextBlock Grid.Row="2" Grid.Column="2" Text="生效版本" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
                            <TextBox Grid.Row="2" Grid.Column="3" x:Name="tbEffectiveVersion" VerticalAlignment="Center"
                                     Style="{StaticResource EditorTextBoxStyle}" IsReadOnly="True" Margin="4,0"/>
                        </Grid>
                    </GroupBox>

                    <!-- 通道映射表 -->
                    <Grid Grid.Row="1" Margin="6">
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="*"/>
                        </Grid.RowDefinitions>
                        <TextBlock Grid.Row="0" Text="通道列表" FontWeight="SemiBold" Margin="0,0,0,4"/>
                        <ListView Grid.Row="1" Style="{StaticResource DefaultListTable}" x:Name="channelListView"
                                  ItemsSource="{Binding Channels}"
                                  VirtualizingPanel.IsVirtualizing="True"
                                  VirtualizingPanel.VirtualizationMode="Standard">
                            <ListView.View>
                                <GridView AllowsColumnReorder="False">
                                    <GridViewColumn Width="50" Header="#">
                                        <GridViewColumn.CellTemplate>
                                            <DataTemplate>
                                                <Border Style="{StaticResource CellBorder}">
                                                    <TextBlock Style="{StaticResource ListTableTextBlock}"
                                                        Text="{Binding Converter={StaticResource lvRowNumber},
                                                        RelativeSource={RelativeSource Mode=FindAncestor,AncestorType=ListViewItem,AncestorLevel=1}}"/>
                                                </Border>
                                            </DataTemplate>
                                        </GridViewColumn.CellTemplate>
                                    </GridViewColumn>
                                    <GridViewColumn Width="150" Header="DeviceId">
                                        <GridViewColumn.CellTemplate>
                                            <DataTemplate>
                                                <Border Style="{StaticResource CellBorder}">
                                                    <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding DeviceId}"/>
                                                </Border>
                                            </DataTemplate>
                                        </GridViewColumn.CellTemplate>
                                    </GridViewColumn>
                                    <GridViewColumn Width="80" Header="ChannelId">
                                        <GridViewColumn.CellTemplate>
                                            <DataTemplate>
                                                <Border Style="{StaticResource CellBorder}">
                                                    <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding ChannelId}"/>
                                                </Border>
                                            </DataTemplate>
                                        </GridViewColumn.CellTemplate>
                                    </GridViewColumn>
                                    <GridViewColumn Width="200" Header="Capability">
                                        <GridViewColumn.CellTemplate>
                                            <DataTemplate>
                                                <Border Style="{StaticResource CellBorder}">
                                                    <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding Capability}"/>
                                                </Border>
                                            </DataTemplate>
                                        </GridViewColumn.CellTemplate>
                                    </GridViewColumn>
                                    <GridViewColumn Width="100" Header="MaxVoltage">
                                        <GridViewColumn.CellTemplate>
                                            <DataTemplate>
                                                <Border Style="{StaticResource CellBorder}">
                                                    <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding MaxVoltage, StringFormat=F2}"/>
                                                </Border>
                                            </DataTemplate>
                                        </GridViewColumn.CellTemplate>
                                    </GridViewColumn>
                                    <GridViewColumn Width="100" Header="MaxCurrent">
                                        <GridViewColumn.CellTemplate>
                                            <DataTemplate>
                                                <Border Style="{StaticResource CellBorder}">
                                                    <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding MaxCurrent, StringFormat=F2}"/>
                                                </Border>
                                            </DataTemplate>
                                        </GridViewColumn.CellTemplate>
                                    </GridViewColumn>
                                </GridView>
                            </ListView.View>
                        </ListView>
                    </Grid>
                </Grid>
            </Border>

            <!-- 右栏：Slot映射表 -->
            <Border Grid.Column="2" BorderBrush="{DynamicResource BorderBrush}" BorderThickness="1" CornerRadius="4" Margin="4,0,0,0">
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto"/>
                        <RowDefinition Height="*"/>
                    </Grid.RowDefinitions>
                    <TextBlock Grid.Row="0" Text="Slot 映射" FontWeight="SemiBold" Margin="6"/>
                    <ListView Grid.Row="1" Style="{StaticResource DefaultListTable}" x:Name="slotListView"
                              ItemsSource="{Binding SlotMappings}"
                              VirtualizingPanel.IsVirtualizing="True"
                              VirtualizingPanel.VirtualizationMode="Standard"
                              Margin="4">
                        <ListView.View>
                            <GridView AllowsColumnReorder="False">
                                <GridViewColumn Width="80" Header="SlotId">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <Border Style="{StaticResource CellBorder}">
                                                <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding SlotId}"/>
                                            </Border>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                                <GridViewColumn Width="80" Header="Capability">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <Border Style="{StaticResource CellBorder}">
                                                <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding Capability}"/>
                                            </Border>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                                <GridViewColumn Width="100" Header="DeviceId">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <Border Style="{StaticResource CellBorder}">
                                                <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding DeviceId}"/>
                                            </Border>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                                <GridViewColumn Width="60" Header="ChId">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <Border Style="{StaticResource CellBorder}">
                                                <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding ChannelId}"/>
                                            </Border>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                                <GridViewColumn Width="80" Header="MapVer">
                                    <GridViewColumn.CellTemplate>
                                        <DataTemplate>
                                            <Border Style="{StaticResource CellBorder}">
                                                <TextBlock Style="{StaticResource ListTableTextBlock}" Text="{Binding MappingVersion}"/>
                                            </Border>
                                        </DataTemplate>
                                    </GridViewColumn.CellTemplate>
                                </GridViewColumn>
                            </GridView>
                        </ListView.View>
                    </ListView>
                </Grid>
            </Border>
        </Grid>

        <!-- 底部状态栏 -->
        <DockPanel Grid.Row="2" Margin="0,4,0,0">
            <StackPanel DockPanel.Dock="Left" Orientation="Horizontal" VerticalAlignment="Center" dp:StackPanelHelper.ChildSpace="6">
                <TextBlock Text="当前版本状态：" FontWeight="SemiBold" VerticalAlignment="Center"/>
                <Border Background="{DynamicResource SecondPrimaryColor}" CornerRadius="3" Padding="8,2">
                    <TextBlock x:Name="tbVersionStatus" Text="{Binding CurrentVersionStatus}" Foreground="White" FontWeight="Bold"/>
                </Border>
            </StackPanel>
            <StackPanel DockPanel.Dock="Right" Orientation="Horizontal" HorizontalAlignment="Right" dp:StackPanelHelper.ChildSpace="10">
                <Button x:Name="saveDraftBtn" Click="Button_Click" Content="保存草稿"
                        Style="{StaticResource RfhBtn}" Width="90"/>
                <Button x:Name="publishBtn" Click="Button_Click" Content="发布"
                        Style="{StaticResource AddBtn}" Width="70"/>
                <Button x:Name="applyBtn" Click="Button_Click" Content="应用"
                        Style="{StaticResource AddBtn}" Width="70"/>
            </StackPanel>
        </DockPanel>
    </Grid>
</hb:SimpleMaskControl>
