<pu:WindowX x:Class="Plugin.DeviceConfig.DeviceEditModal"
            xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
            xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
            xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
            xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
            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"
            Title="设备编辑"
            SizeToContent="Height"
            Width="720"
            WindowStartupLocation="CenterOwner"
            Style="{StaticResource ModalWindow}">
    <pu:WindowX.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="/HMI.UI;component/Style/PanuonListView.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </pu:WindowX.Resources>

    <Grid Margin="16">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <!-- 设备基本信息 -->
        <GroupBox Grid.Row="0" Header="设备信息" FontWeight="SemiBold" Margin="0,0,0,12">
            <Grid Margin="8">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="100"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="100"/>
                    <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}" Margin="4,0"/>

                <TextBlock Grid.Row="0" Grid.Column="2" Text="设备类型 *" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
                <ComboBox Grid.Row="0" Grid.Column="3" x:Name="cbKind" VerticalAlignment="Center" 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}" Margin="4,0"/>

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

                <TextBlock Grid.Row="2" Grid.Column="0" Text="连接端点 *" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
                <TextBox Grid.Row="2" Grid.Column="1" Grid.ColumnSpan="3" x:Name="tbEndpoint" VerticalAlignment="Center"
                         Style="{StaticResource EditorTextBoxStyle}" Margin="4,0"
                         pu:TextBoxHelper.Watermark="例: 192.168.10.124:30000 或 COM3"/>
            </Grid>
        </GroupBox>

        <!-- 执行位置（V3.0 §05） -->
        <GroupBox Grid.Row="1" Header="执行位置" FontWeight="SemiBold" Margin="0,0,0,12">
            <Grid Margin="8">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="100"/>
                    <ColumnDefinition Width="*"/>
                    <ColumnDefinition Width="100"/>
                    <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="执行模式 *" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
                <StackPanel Grid.Row="0" Grid.Column="1" Grid.ColumnSpan="3" Orientation="Horizontal" VerticalAlignment="Center"
                            dp:StackPanelHelper.ChildSpace="16" Margin="4,0">
                    <RadioButton x:Name="rbLocal" Content="本地仪器 (Local 直连)" GroupName="ExecMode" IsChecked="True"
                                 Checked="ExecMode_Changed" VerticalAlignment="Center"/>
                    <RadioButton x:Name="rbBroker" Content="共享仪器 (Broker 代理)" GroupName="ExecMode"
                                 Checked="ExecMode_Changed" VerticalAlignment="Center"/>
                </StackPanel>

                <TextBlock Grid.Row="1" Grid.Column="0" Text="仲裁域 *" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
                <ComboBox Grid.Row="1" Grid.Column="1" x:Name="cbAuthority" VerticalAlignment="Center" Margin="4,0"
                         SelectionChanged="CbAuthority_SelectionChanged"/>

                <TextBlock Grid.Row="1" Grid.Column="2" Text="访问策略" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
                <TextBox Grid.Row="1" Grid.Column="3" x:Name="tbAccessPolicy" VerticalAlignment="Center" IsReadOnly="True"
                         Style="{StaticResource EditorTextBoxStyle}" Margin="4,0"/>

                <!-- Broker 模式专属字段：默认隐藏 -->
                <Grid Grid.Row="2" Grid.ColumnSpan="4" x:Name="spBroker" Visibility="Collapsed">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="100"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="100"/>
                        <ColumnDefinition Width="*"/>
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="36"/>
                        <RowDefinition Height="36"/>
                    </Grid.RowDefinitions>

                    <TextBlock Grid.Row="0" Grid.Column="0" Text="BrokerId *" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
                    <ComboBox Grid.Row="0" Grid.Column="1" x:Name="cbBrokerId" VerticalAlignment="Center" 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="tbOwnerProcessId" VerticalAlignment="Center" IsReadOnly="True"
                             Style="{StaticResource EditorTextBoxStyle}" Margin="4,0"
                             pu:TextBoxHelper.Watermark="Broker 宿主 PID（MVP 占位当前进程）"/>

                    <TextBlock Grid.Row="1" Grid.Column="0" Text="物理会话键 *" VerticalAlignment="Center" Style="{StaticResource ListTableTextBlock}"/>
                    <ComboBox Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="3" x:Name="cbSessionKey" VerticalAlignment="Center"
                             IsEditable="True" Margin="4,0"
                             pu:TextBoxHelper.Watermark="由端点规范化的固定字符串，如 can/CAN_BUS_1/main"/>
                </Grid>
            </Grid>
        </GroupBox>

        <!-- 通道列表 -->
        <GroupBox Grid.Row="2" Header="通道列表" FontWeight="SemiBold" Margin="0,0,0,12">
            <Grid Margin="8">
                <Grid.RowDefinitions>
                    <RowDefinition Height="Auto"/>
                    <RowDefinition Height="180"/>
                    <RowDefinition Height="Auto"/>
                </Grid.RowDefinitions>

                <StackPanel Grid.Row="0" Orientation="Horizontal" HorizontalAlignment="Right" Margin="0,0,0,4"
                            dp:StackPanelHelper.ChildSpace="8">
                    <Button x:Name="addChannelBtn" Click="AddChannel_Click" Content="+ 新增通道"
                            Style="{StaticResource AddBtn}" Width="100"/>
                    <Button x:Name="delChannelBtn" Click="DelChannel_Click" Content="删除通道"
                            Style="{StaticResource DelBtn}" Width="100"/>
                </StackPanel>

                <ListView Grid.Row="1" Style="{StaticResource DefaultListTable}" x:Name="channelListView"
                          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="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>
                            <GridViewColumn Width="100" Header="操作">
                                <GridViewColumn.CellTemplate>
                                    <DataTemplate>
                                        <StackPanel Orientation="Horizontal" dp:StackPanelHelper.ChildSpace="6">
                                            <Button x:Name="editChBtn" Style="{StaticResource EditLink}" Click="EditChannel_Click" Tag="{Binding}"/>
                                            <Button x:Name="delChBtn" Style="{StaticResource DeleteLink}" Click="DeleteChannel_Click" Tag="{Binding}"/>
                                        </StackPanel>
                                    </DataTemplate>
                                </GridViewColumn.CellTemplate>
                            </GridViewColumn>
                        </GridView>
                    </ListView.View>
                </ListView>

                <!-- 通道编辑行 -->
                <Grid Grid.Row="2" Margin="0,6,0,0">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="80"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="100"/>
                        <ColumnDefinition Width="100"/>
                        <ColumnDefinition Width="80"/>
                    </Grid.ColumnDefinitions>
                    <TextBox Grid.Column="0" x:Name="tbChId" Style="{StaticResource EditorTextBoxStyle}"
                             pu:TextBoxHelper.Watermark="编号" Margin="0,0,4,0"/>
                    <TextBox Grid.Column="1" x:Name="tbChCap" Style="{StaticResource EditorTextBoxStyle}"
                             pu:TextBoxHelper.Watermark="能力描述" Margin="0,0,4,0"/>
                    <TextBox Grid.Column="2" x:Name="tbChVolt" Style="{StaticResource EditorTextBoxStyle}"
                             pu:TextBoxHelper.Watermark="最大电压" Margin="0,0,4,0"/>
                    <TextBox Grid.Column="3" x:Name="tbChCurr" Style="{StaticResource EditorTextBoxStyle}"
                             pu:TextBoxHelper.Watermark="最大电流" Margin="0,0,4,0"/>
                    <Button Grid.Column="4" x:Name="saveChBtn" Click="SaveChannel_Click" Content="保存"
                            Style="{StaticResource AddBtn}" Width="70"/>
                </Grid>
            </Grid>
        </GroupBox>

        <!-- 底部按钮 -->
        <StackPanel Grid.Row="4" Orientation="Horizontal" HorizontalAlignment="Right" dp:StackPanelHelper.ChildSpace="10" Margin="0,12,0,0">
            <Button x:Name="saveBtn" Click="SaveBtn_Click" Content="保存"
                    Style="{StaticResource AddBtn}" Width="90"/>
            <Button x:Name="cancelBtn" Click="CancelBtn_Click" Content="取消"
                    Style="{StaticResource RfhBtn}" Width="90"/>
        </StackPanel>
    </Grid>
</pu:WindowX>
