<Window x:Class="BNEBotManager.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="clr-namespace:BNEBotManager"
Title="BNE Bot Manager" Height="800" Width="525"
Closing="Window_Closing">
<Window.Resources>
<BooleanToVisibilityConverter x:Key="BoolToVisConv" />
<DataTemplate DataType="{x:Type local:LauncherConnection}">
<Grid>
<Grid Visibility="{Binding Connected, Converter={StaticResource BoolToVisConv}}">
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<GroupBox Header="Running Bots" Grid.Row="0">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<DataGrid x:Name="RunningBots" Grid.Row="0"
ItemsSource="{Binding Bots}" AutoGenerateColumns="False" IsReadOnly="True" Padding="2"
SelectionMode="Extended" SelectionUnit="FullRow" SelectionChanged="RunningBots_SelectionChanged">
<DataGrid.Columns>
<DataGridTextColumn Header="Bot Name" Binding="{Binding Name}" />
<DataGridTextColumn Header="State" Binding="{Binding State}" />
<DataGridTextColumn Header="CPU Usage" Binding="{Binding CPUUsage, StringFormat={}{0:f2}%}" />
<DataGridTextColumn Header="Memory Usage" Binding="{Binding MemoryUsage, StringFormat={}{0:f2}MB}" />
<DataGridTextColumn Header="Uptime" Binding="{Binding Uptime}" />
</DataGrid.Columns>
</DataGrid>
<Grid Grid.Row="1" Margin="0,4,0,0">
<StackPanel>
<StackPanel Orientation="Horizontal">
<Button MinWidth="80" Padding="2" IsEnabled="{Binding HasSelectedBots, Converter={StaticResource BoolToVisConv}}"
Command="{Binding KillSelectedBots}" Margin="0,0,4,0">Kill Selected</Button>
<Button MinWidth="80" Padding="2"
Command="{Binding KillAllBots}" Margin="0,0,4,0">Kill All</Button>
<Button MinWidth="80" Padding="2"
Command="{Binding TerminateServer}" Margin="0,0,4,0">Terminate</Button>
</StackPanel>
</StackPanel>
</Grid>
</Grid>
</GroupBox>
<GroupBox Header="Spawn Bots" Grid.Row="1">
<Grid >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="*" />
<ColumnDefinition Width="150" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0" Text="Number of bots to spawn:" VerticalAlignment="Center" />
<TextBox Grid.Column="1" Grid.Row="0" Text="{Binding BotSpawnCount}" HorizontalAlignment="Stretch" />
<TextBlock Grid.Column="0" Grid.Row="1" Text="Bot strategy:" VerticalAlignment="Center" />
<ComboBox ItemsSource="{Binding AvailableBotStrategies}" SelectedItem="{Binding BotSpawnStrategy}"
Grid.Column="1" Grid.Row="1" HorizontalAlignment="Stretch" Margin="0,2,0,0" />
<TextBlock Grid.Column="0" Grid.Row="2" Text="Bot target level:" VerticalAlignment="Center" />
<TextBox Grid.Column="1" Grid.Row="2" Text="{Binding BotSpawnTarget}" HorizontalAlignment="Stretch" Margin="0,2,0,0" />
<Button Grid.Column="2" Grid.Row="0" Grid.RowSpan="3" MinWidth="80" Padding="2"
Command="{Binding SpawnBots}" Margin="10,0,0,0">Spawn</Button>
</Grid>
</GroupBox>
<GroupBox Header="Statistics" Grid.Row="2">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Grid.Column="0" Grid.Row="0" Text="Running:" />
<TextBlock Grid.Column="1" Grid.Row="0" Text="{Binding RunningBotCount}" />
<TextBlock Grid.Column="0" Grid.Row="1" Text="Finished:" />
<TextBlock Grid.Column="1" Grid.Row="1" Text="{Binding FinishedBotCount}" Foreground="Green" />
<TextBlock Grid.Column="0" Grid.Row="2" Text="Killed:" />
<TextBlock Grid.Column="1" Grid.Row="2" Text="{Binding KilledBotCount}" Foreground="Orange" />
<TextBlock Grid.Column="0" Grid.Row="3" Text="Crashed:" />
<TextBlock Grid.Column="1" Grid.Row="3" Text="{Binding CrashedBotCount}" Foreground="Red" />
</Grid>
</GroupBox>
</Grid>
<TextBlock Text="Server offline" VerticalAlignment="Center" HorizontalAlignment="Center" Visibility="{Binding Disconnected, Converter={StaticResource BoolToVisConv}}" />
</Grid>
</DataTemplate>
</Window.Resources>
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<TabControl Grid.Row="0" ItemsSource="{Binding ConnectedLaunchers}" SelectedIndex="0">
<TabControl.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding ID}" Margin="0,0,4,0" />
<TextBlock Text="(online)" Foreground="Green" Visibility="{Binding Connected, Converter={StaticResource BoolToVisConv}}" />
<TextBlock Text="(offline)" Foreground="Red" Visibility="{Binding Disconnected, Converter={StaticResource BoolToVisConv}}" />
</StackPanel>
</DataTemplate>
</TabControl.ItemTemplate>
</TabControl>
<Grid Grid.Row="1" Margin="2" MinHeight="25">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Button Grid.Column="0" Command="{Binding OpenConnectionCommand}">Open new connection...</Button>
</Grid>
</Grid>
</Window>