Newer
Older
Import / projects / Gameloft / bne_lib / tools / BNEBotManager / MainWindow.xaml
<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>