<Window x:Class="DeviceService.MainWindow"
        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:local="clr-namespace:DeviceService"
        xmlns:service="clr-namespace:DeviceService.Service"
        mc:Ignorable="d"
        Title="设备服务" Height="560" Width="960"
        Background="{StaticResource PageBackgroundBrush}">
    <Grid Margin="12">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="250" />
            <ColumnDefinition Width="*" />
        </Grid.ColumnDefinitions>

        <!-- 左侧：按 Type 分组的设备树 -->
        <Border Grid.Column="0" Style="{StaticResource CardBorder}" Margin="0,0,10,0">
            <DockPanel Margin="4">
                <TextBlock DockPanel.Dock="Top"
                           Style="{StaticResource TitleText}"
                           Text="设备列表"
                           Margin="6,2,0,10" />
                <TreeView x:Name="DeviceTree"
                          Background="Transparent"
                          BorderThickness="0"
                          ItemContainerStyle="{StaticResource DeviceTreeViewItem}"
                          SelectedItemChanged="DeviceTree_SelectedItemChanged">
                    <TreeView.Resources>
                        <HierarchicalDataTemplate DataType="{x:Type local:DeviceGroupNode}"
                                                  ItemsSource="{Binding Children}">
                            <StackPanel Orientation="Horizontal">
                                <Border Background="{StaticResource AccentFaintBrush}"
                                        CornerRadius="4"
                                        Padding="5,1"
                                        Margin="0,0,6,0">
                                    <TextBlock Text="{Binding Type}"
                                               FontSize="11"
                                               FontWeight="Bold"
                                               Foreground="{StaticResource AccentPressedBrush}" />
                                </Border>
                            </StackPanel>
                        </HierarchicalDataTemplate>
                        <DataTemplate DataType="{x:Type local:DeviceNode}">
                            <TextBlock Text="{Binding DisplayName}" TextTrimming="CharacterEllipsis" />
                        </DataTemplate>
                    </TreeView.Resources>
                </TreeView>
            </DockPanel>
        </Border>

        <!-- 右侧：工具栏 + 设备配置区域 -->
        <Grid Grid.Column="1">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>

            <DockPanel Grid.Row="0" Margin="0,0,0,10">
                <StackPanel Orientation="Horizontal" DockPanel.Dock="Right" VerticalAlignment="Center">
                    <!-- 服务状态徽标：绑定全局状态机 ServiceStateMachine.GlobalState.State -->
                    <Border x:Name="ServiceStateBadge"
                            CornerRadius="12"
                            Padding="12,5"
                            Margin="0,0,12,0"
                            VerticalAlignment="Center">
                        <Border.Style>
                            <Style TargetType="Border">
                                <Setter Property="Background" Value="#F3F4F6" />
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding State, Source={x:Static service:ServiceStateMachine.GlobalState}}"
                                                 Value="Running">
                                        <Setter Property="Background" Value="#D1FAE5" />
                                    </DataTrigger>
                                    <DataTrigger Binding="{Binding State, Source={x:Static service:ServiceStateMachine.GlobalState}}"
                                                 Value="Error">
                                        <Setter Property="Background" Value="#FEE2E2" />
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </Border.Style>
                        <TextBlock x:Name="ServiceStateText" FontSize="12.5" FontWeight="SemiBold">
                            <TextBlock.Style>
                                <Style TargetType="TextBlock">
                                    <Setter Property="Text" Value="未启动" />
                                    <Setter Property="Foreground" Value="{StaticResource TextSecondaryBrush}" />
                                    <Style.Triggers>
                                        <DataTrigger Binding="{Binding State, Source={x:Static service:ServiceStateMachine.GlobalState}}"
                                                     Value="Running">
                                            <Setter Property="Text" Value="运行中" />
                                            <Setter Property="Foreground" Value="#047857" />
                                        </DataTrigger>
                                        <DataTrigger Binding="{Binding State, Source={x:Static service:ServiceStateMachine.GlobalState}}"
                                                     Value="Error">
                                            <Setter Property="Text" Value="异常" />
                                            <Setter Property="Foreground" Value="#B91C1C" />
                                        </DataTrigger>
                                    </Style.Triggers>
                                </Style>
                            </TextBlock.Style>
                        </TextBlock>
                    </Border>

                    <!-- 启动/停止：Running 时文案变为“停止”，点击走停止逻辑 -->
                    <Button x:Name="StartServiceBtn"
                            MinWidth="92"
                            Click="StartService_Click">
                        <Button.Style>
                            <Style TargetType="Button" BasedOn="{StaticResource PrimaryButton}">
                                <Setter Property="Content" Value="启动" />
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding State, Source={x:Static service:ServiceStateMachine.GlobalState}}"
                                                 Value="Running">
                                        <Setter Property="Content" Value="停止" />
                                        <Setter Property="Background" Value="#B91C1C" />
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </Button.Style>
                    </Button>

                    <!-- 添加设备：服务运行中禁止操作 -->
                    <Button x:Name="AddDeviceButton"
                            MinWidth="92"
                            Margin="8,0,0,0"
                            Content="添加设备"
                            Click="AddDeviceButton_Click">
                        <Button.Style>
                            <Style TargetType="Button" BasedOn="{StaticResource PrimaryButton}">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding State, Source={x:Static service:ServiceStateMachine.GlobalState}}"
                                                 Value="Running">
                                        <Setter Property="IsEnabled" Value="False" />
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </Button.Style>
                    </Button>

                    <!-- 刷新：服务运行中禁止操作 -->
                    <Button x:Name="RefreshButton"
                            MinWidth="72"
                            Margin="8,0,0,0"
                            Content="刷新"
                            Click="RefreshButton_Click">
                        <Button.Style>
                            <Style TargetType="Button" BasedOn="{StaticResource SecondaryButton}">
                                <Style.Triggers>
                                    <DataTrigger Binding="{Binding State, Source={x:Static service:ServiceStateMachine.GlobalState}}"
                                                 Value="Running">
                                        <Setter Property="IsEnabled" Value="False" />
                                    </DataTrigger>
                                </Style.Triggers>
                            </Style>
                        </Button.Style>
                    </Button>
                    <Button x:Name="DebugWindowButton"
                            Style="{StaticResource SecondaryButton}"
                            MinWidth="92"
                            Margin="8,0,0,0"
                            Content="调试窗口"
                            Click="DebugWindowButton_Click" />
                    <Button x:Name="LogWindowButton"
                            Style="{StaticResource SecondaryButton}"
                            MinWidth="72"
                            Margin="8,0,0,0"
                            Content="日志"
                            Click="LogWindowButton_Click" />
                </StackPanel>
                <TextBlock x:Name="HeaderText"
                           Style="{StaticResource SectionText}"
                           Text="设备配置"
                           VerticalAlignment="Center" />
            </DockPanel>

            <Border Grid.Row="1" Style="{StaticResource CardBorder}">
                <ContentControl x:Name="ConfigHost" Margin="4" Focusable="False" />
            </Border>
        </Grid>
    </Grid>
</Window>
