/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.ThreadExtensions/Models/

<UserControl x:Class="Tango.MachineStudio.UI.Views.MachineConnectionView"
             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:mahapps="http://metro.mahapps.com/winfx/xaml/controls"
             xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
             xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
             xmlns:integration="clr-namespace:Tango.Integration.ExternalBridge;assembly=Tango.Integration"
             xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI"
             xmlns:emulations="clr-namespace:Tango.Emulations.ExternalBridge;assembly=Tango.Emulations"
             xmlns:local="clr-namespace:Tango.MachineStudio.UI.Views"
             mc:Ignorable="d" 
             d:DesignHeight="300" d:DesignWidth="400" Width="700" Height="500" Background="{StaticResource Dialog.Background}" DataContext="{Binding MachineConnectionViewVM, Source={StaticResource Locator}}" Foreground="{StaticResource MainWindow.Foreground}">

    <UserControl.Resources>
        <converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"></converters:BooleanToVisibilityConverter>
        <converters:BooleanToVisibilityInverseConverter x:Key="BooleanToVisibilityInverseConverter"></converters:BooleanToVisibilityInverseConverter>
        <converters:BooleanInverseConverter x:Key="BooleanInverseConverter"></converters:BooleanInverseConverter>
    </UserControl.Resources>

    <Grid>
        <Grid>
            <Grid.RowDefinitions>
                <RowDefinition Height="80"/>
                <RowDefinition Height="1*"/>
            </Grid.RowDefinitions>

            <Grid>
                <StackPanel Orientation="Horizontal" Margin="10">
                    <Image Source="{StaticResource MachineSmall}" Width="60" RenderOptions.BitmapScalingMode="Fant"></Image>
                    <TextBlock Text="Machine Connection" VerticalAlignment="Center" Margin="10 0 0 0" FontSize="20"></TextBlock>
                </StackPanel>
            </Grid>

            <Grid Grid.Row="1" Margin="10 0 10 10">
                <Grid.RowDefinitions>
                    <RowDefinition Height="1*"/>
                    <RowDefinition Height="50"/>
                </Grid.RowDefinitions>

                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="30"/>
                        <RowDefinition Height="223*"/>
                    </Grid.RowDefinitions>

                    <Grid>
                        <TextBlock VerticalAlignment="Center" Margin="0 0 0 0" Text="Scanning for machines on your local environment..."></TextBlock>

                        <!--<Button Command="{Binding ScanCommand}" HorizontalAlignment="Right" Width="40" Padding="0" Style="{StaticResource MaterialDesignFlatButton}" Foreground="Black" ToolTip="Scan">
                            <materialDesign:PackIcon Kind="Refresh" Width="24" Height="24"></materialDesign:PackIcon>
                        </Button>-->
                    </Grid>

                    <Grid Grid.Row="1">
                        <ListBox ItemsSource="{Binding Scanner.AvailableMachines}" SelectedItem="{Binding SelectedMachine}" Margin="0 0 0 7" BorderThickness="1" BorderBrush="{StaticResource BorderBrushGainsboro}" HorizontalContentAlignment="Stretch">
                            <ListBox.Resources>
                                <DataTemplate DataType="{x:Type integration:ExternalBridgeSignalRClient}">
                                    <DockPanel>
                                        <StackPanel Orientation="Horizontal">
                                            <Image Source="/Images/external-bridge-signalr.png" Height="45" RenderOptions.BitmapScalingMode="Fant"></Image>
                                            <StackPanel Margin="10 0 0 0">
                                                <TextBlock FontSize="11">
                                            <Run FontWeight="Bold">S/N:</Run> <Run Text="{Binding SerialNumber,Mode=OneWay}"></Run>
                                                </TextBlock>
                                                <TextBlock FontSize="11">
                                            <Run FontWeight="Bold">Address:</Run> <Run Text="{Binding IPAddress,Mode=OneWay}"></Run>
                                                </TextBlock>
                                                <TextBlock FontSize="11">
                                            <Run FontWeight="Bold">Organization:</Run> <Run Text="{Binding Machine.Organization.Name,Mode=OneWay}"></Run>
                                                </TextBlock>
                                            </StackPanel>
                                        </StackPanel>
                                    </DockPanel>
                                </DataTemplate>
                                <DataTemplate DataType="{x:Type integration:ExternalBridgeTcpClient}">
                                    <DockPanel>
                                        <StackPanel Orientation="Horizontal">
                                            <Image Source="/Images/external-bridge-tcp.png" Height="45" RenderOptions.BitmapScalingMode="Fant"></Image>
                                            <StackPanel Margin="10 0 0 0">
                                                <TextBlock FontSize="11">
                                            <Run FontWeight="Bold">S/N:</Run> <Run Text="{Binding SerialNumber,Mode=OneWay}"></Run>
                                                </TextBlock>
                                                <TextBlock FontSize="11">
                                            <Run FontWeight="Bold">IP Address:</Run> <Run Text="{Binding IPAddress,Mode=OneWay}"></Run>
                                                </TextBlock>
                                                <TextBlock FontSize="11">
                                            <Run FontWeight="Bold">Organization:</Run> <Run Text="{Binding Machine.Organization.Name,Mode=OneWay}"></Run>
                                                </TextBlock>
                                            </StackPanel>
                                        </StackPanel>
                                    </DockPanel>
                                </DataTemplate>
                                <DataTemplate DataType="{x:Type integration:ExternalBridgeUsbClient}">
                                    <DockPanel>
                                        <StackPanel Orientation="Horizontal">
                                            <Image Source="/Images/external-bridge-usb.png" Height="45" RenderOptions.BitmapScalingMode="Fant"></Image>
                                            <StackPanel Margin="10 0 0 0">
                                                <TextBlock FontSize="11">
                                            <Run FontWeight="Bold">Port:</Run> <Run Text="{Binding ComPort,Mode=OneWay}"></Run>
                                                </TextBlock>
                                                <TextBlock FontSize="11">
                                            <Run FontWeight="Bold">Device:</Run> <Run Text="{Binding Device,Mode=OneWay}"></Run>
                                                </TextBlock>
                                            </StackPanel>
                                        </StackPanel>
                                    </DockPanel>
                                </DataTemplate>
                                <DataTemplate DataType="{x:Type emulations:EmulatorExternalBridge}">
                                    <DockPanel>
                                        <StackPanel Orientation="Horizontal">
                                            <Image Source="/Images/external-bridge-emulator.png" Height="45" RenderOptions.BitmapScalingMode="Fant"></Image>
                                            <StackPanel Margin="10 0 0 0">
                                                <TextBlock FontSize="11">
                                                <Run Text="External Bridge Emulator"></Run>
                                                </TextBlock>
                                                <TextBlock FontSize="11">
                                            <Run FontWeight="Bold">Address:</Run> <Run Text="{Binding Adapter.Address,Mode=OneWay}"></Run>
                                                </TextBlock>
                                            </StackPanel>
                                        </StackPanel>
                                    </DockPanel>
                                </DataTemplate>
                            </ListBox.Resources>
                        </ListBox>

                        <mahapps:MetroProgressBar VerticalAlignment="Bottom" Height="1" IsIndeterminate="True"></mahapps:MetroProgressBar>
                    </Grid>
                </Grid>

                <Grid Grid.Row="1">

                    <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
                        <StackPanel Orientation="Horizontal" VerticalAlignment="Center">
                            <ToggleButton IsChecked="{Binding EnableDiagnostics}" VerticalAlignment="Center" ToolTip="Allow incoming diagnostics data, debug logs and hardware events"></ToggleButton>
                            <TextBlock VerticalAlignment="Center" FontSize="10" Margin="5 0 0 0">Diagnostics, Debug &amp; Events</TextBlock>
                        </StackPanel>

                        <StackPanel Margin="20 0 0 0" Orientation="Horizontal" VerticalAlignment="Center" Visibility="{Binding RequiresAuthentication,Converter={StaticResource BooleanToVisibilityInverseConverter}}">
                            <ToggleButton IsChecked="{Binding UploadHardwareConfiguration}" VerticalAlignment="Center" ToolTip="Upload hardware configuration after connection is successful"></ToggleButton>
                            <TextBlock VerticalAlignment="Center" FontSize="10" Margin="5 0 0 0">Upload HW Configuration</TextBlock>
                        </StackPanel>

                        <StackPanel Margin="20 0 0 0" Orientation="Horizontal" VerticalAlignment="Center" Visibility="{Binding RequiresAuthentication,Converter={StaticResource BooleanToVisibilityConverter}}">
                            <ToggleButton IsChecked="{Binding EnableApplicationLogs}" VerticalAlignment="Center" ToolTip="Allow incoming application logs from the remote host"></ToggleButton>
                            <TextBlock VerticalAlignment="Center" FontSize="10" Margin="5 0 0 0">Enable Application Logs</TextBlock>
                        </StackPanel>

                        <StackPanel Margin="20 0 0 0" Orientation="Horizontal" VerticalAlignment="Center">
                            <ToggleButton IsChecked="{Binding EnableKeepAlive}" VerticalAlignment="Center" ToolTip="Allow a keep alive mechanism to improve lost connection detection"></ToggleButton>
                            <TextBlock VerticalAlignment="Center" FontSize="10" Margin="5 0 0 0">Keep Alive</TextBlock>
                        </StackPanel>
                    </StackPanel>

                    <Button HorizontalAlignment="Right" Width="140" Command="{Binding ConnectCommand}">CONNECT</Button>
                </Grid>
            </Grid>
        </Grid>
    </Grid>
</UserControl>