aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2018-04-11 14:50:47 +0300
committerRoy Ben-Shabat <Roy@Twine-s.com>2018-04-11 14:50:47 +0300
commitc400fa026cdb2bc5c1c5c25f5bfae37461e87cab (patch)
tree07c9d4027e82ecfdd3be47ecd2a79369210097f6 /Software/Visual_Studio/MachineStudio
parentf33393bff08e57360953143e6bb93aa8eb03a852 (diff)
downloadTango-c400fa026cdb2bc5c1c5c25f5bfae37461e87cab.tar.gz
Tango-c400fa026cdb2bc5c1c5c25f5bfae37461e87cab.zip
Added Disconnect & Connect requests.
Fixed issue with Machine Connection View Scanning. Fixed issue with ShowModalDialog close event.. Added ConnectedMachineView. Added TransferRate for Adapters.
Diffstat (limited to 'Software/Visual_Studio/MachineStudio')
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/EventLogging/DefaultEventLogger.cs2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Html/HtmlWindow.xaml2
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Notifications/DefaultNotificationProvider.cs21
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj8
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModelLocator.cs9
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/ConnectedMachineViewVM.cs36
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs125
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ConnectedMachineView.xaml111
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ConnectedMachineView.xaml.cs28
-rw-r--r--Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MachineConnectionView.xaml2
10 files changed, 281 insertions, 63 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/EventLogging/DefaultEventLogger.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/EventLogging/DefaultEventLogger.cs
index f3ae1002b..2a5dcb3a0 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/EventLogging/DefaultEventLogger.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.Common/EventLogging/DefaultEventLogger.cs
@@ -206,7 +206,7 @@ namespace Tango.MachineStudio.Common.EventLogging
}
LogManager.Log("Logging event " + machineEvent.EventType.Name + " - " + machineEvent.Description);
- machineEvent.MachineGuid = _application.ConnectedMachine.Guid;
+ machineEvent.MachineGuid = _application.ConnectedMachine.Machine.Guid;
machineEvent.UserGuid = _authentication.CurrentUser.Guid;
machineEvent.User = _authentication.CurrentUser;
_events.Enqueue(machineEvent);
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Html/HtmlWindow.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Html/HtmlWindow.xaml
index d7032cedc..f984a985f 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Html/HtmlWindow.xaml
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Html/HtmlWindow.xaml
@@ -18,7 +18,7 @@
<Grid>
<DockPanel>
<Grid DockPanel.Dock="Bottom">
- <Button Margin="10" Width="140" HorizontalAlignment="Right" Click="OKClicked">OK</Button>
+ <Button Margin="10" Width="140" HorizontalAlignment="Right" Click="OKClicked">RESOLVE</Button>
</Grid>
<WebBrowser x:Name="webBrowser"
OverridesDefaultStyle="False"
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Notifications/DefaultNotificationProvider.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Notifications/DefaultNotificationProvider.cs
index 1c9b8732f..cb36d8d29 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Notifications/DefaultNotificationProvider.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Notifications/DefaultNotificationProvider.cs
@@ -112,14 +112,16 @@ namespace Tango.MachineStudio.UI.Notifications
dialog.DataContext = context;
Action onAcceptAction = null;
+ Action onCancelAction = null;
+
onAcceptAction = new Action(() =>
{
dialog.Close();
onAccept(context);
context.Accepted -= onAcceptAction;
+ context.Canceled -= onCancelAction;
});
- Action onCancelAction = null;
onCancelAction = new Action(() =>
{
dialog.Close();
@@ -129,6 +131,7 @@ namespace Tango.MachineStudio.UI.Notifications
onCancel();
}
+ context.Accepted -= onAcceptAction;
context.Canceled -= onCancelAction;
});
@@ -163,14 +166,16 @@ namespace Tango.MachineStudio.UI.Notifications
dialog.DataContext = context;
Action onAcceptAction = null;
+ Action onCancelAction = null;
+
onAcceptAction = new Action(() =>
{
dialog.Close();
onAccept(context);
context.Accepted -= onAcceptAction;
+ context.Canceled -= onCancelAction;
});
- Action onCancelAction = null;
onCancelAction = new Action(() =>
{
dialog.Close();
@@ -180,6 +185,7 @@ namespace Tango.MachineStudio.UI.Notifications
onCancel();
}
+ context.Accepted -= onAcceptAction;
context.Canceled -= onCancelAction;
});
@@ -213,14 +219,16 @@ namespace Tango.MachineStudio.UI.Notifications
dialog.DataContext = context;
Action onAcceptAction = null;
+ Action onCancelAction = null;
+
onAcceptAction = new Action(() =>
{
dialog.Close();
onAccept(context);
context.Accepted -= onAcceptAction;
+ context.Canceled -= onCancelAction;
});
- Action onCancelAction = null;
onCancelAction = new Action(() =>
{
dialog.Close();
@@ -231,6 +239,7 @@ namespace Tango.MachineStudio.UI.Notifications
}
context.Canceled -= onCancelAction;
+ context.Accepted -= onAcceptAction;
});
context.Accepted += onAcceptAction;
@@ -279,15 +288,18 @@ namespace Tango.MachineStudio.UI.Notifications
}
dialog.DataContext = context;
+ Action onCancelAction = null;
Action onAcceptAction = null;
+
onAcceptAction = new Action(() =>
{
dialog.Close();
onAccept(context);
+
+ context.Canceled -= onCancelAction;
context.Accepted -= onAcceptAction;
});
- Action onCancelAction = null;
onCancelAction = new Action(() =>
{
dialog.Close();
@@ -298,6 +310,7 @@ namespace Tango.MachineStudio.UI.Notifications
}
context.Canceled -= onCancelAction;
+ context.Accepted -= onAcceptAction;
});
context.Accepted += onAcceptAction;
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj
index c13970674..eb4139936 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Tango.MachineStudio.UI.csproj
@@ -159,6 +159,7 @@
<DependentUpon>MessageBoxWindow.xaml</DependentUpon>
</Compile>
<Compile Include="SupervisingController\IMainView.cs" />
+ <Compile Include="ViewModels\ConnectedMachineViewVM.cs" />
<Compile Include="ViewModels\LoadingViewVM.cs" />
<Compile Include="ViewModels\LoginViewVM.cs" />
<Compile Include="ViewModels\MachineConnectionViewVM.cs" />
@@ -169,6 +170,9 @@
<Compile Include="ViewModels\ModuleWindowVM.cs" />
<Compile Include="ViewModels\ShutdownViewVM.cs" />
<Compile Include="ViewModels\UpdateViewVM.cs" />
+ <Compile Include="Views\ConnectedMachineView.xaml.cs">
+ <DependentUpon>ConnectedMachineView.xaml</DependentUpon>
+ </Compile>
<Compile Include="Views\LoadingView.xaml.cs">
<DependentUpon>LoadingView.xaml</DependentUpon>
</Compile>
@@ -234,6 +238,10 @@
<Generator>MSBuild:Compile</Generator>
<SubType>Designer</SubType>
</Page>
+ <Page Include="Views\ConnectedMachineView.xaml">
+ <SubType>Designer</SubType>
+ <Generator>MSBuild:Compile</Generator>
+ </Page>
<Page Include="Views\LoadingView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModelLocator.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModelLocator.cs
index bbb916d02..97eb2913b 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModelLocator.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModelLocator.cs
@@ -82,6 +82,7 @@ namespace Tango.MachineStudio.UI
SimpleIoc.Default.Register<ShutdownViewVM>();
SimpleIoc.Default.Register<LoginViewVM>();
SimpleIoc.Default.Register<MachineConnectionViewVM>();
+ SimpleIoc.Default.Register<ConnectedMachineViewVM>();
SimpleIoc.Default.Register<MachineLoginViewVM>();
SimpleIoc.Default.Register<UpdateViewVM>();
@@ -133,6 +134,14 @@ namespace Tango.MachineStudio.UI
}
}
+ public ConnectedMachineViewVM ConnectedMachineViewVM
+ {
+ get
+ {
+ return ServiceLocator.Current.GetInstance<ConnectedMachineViewVM>();
+ }
+ }
+
public MachineLoginViewVM MachineLoginViewVM
{
get
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/ConnectedMachineViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/ConnectedMachineViewVM.cs
new file mode 100644
index 000000000..9f84cfb53
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/ConnectedMachineViewVM.cs
@@ -0,0 +1,36 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.BL.Entities;
+using Tango.Core.Commands;
+using Tango.MachineStudio.Common.Notifications;
+using Tango.MachineStudio.Common.StudioApplication;
+using Tango.SharedUI;
+
+namespace Tango.MachineStudio.UI.ViewModels
+{
+ public class ConnectedMachineViewVM : DialogViewVM
+ {
+ private IStudioApplicationManager _applicationManager;
+ public IStudioApplicationManager ApplicationManager
+ {
+ get { return _applicationManager; }
+ set { _applicationManager = value; RaisePropertyChangedAuto(); }
+ }
+
+ public RelayCommand DisconnectCommand { get; set; }
+
+ public ConnectedMachineViewVM(IStudioApplicationManager application)
+ {
+ ApplicationManager = application;
+ DisconnectCommand = new RelayCommand(Disconnect);
+ }
+
+ private void Disconnect()
+ {
+ Accept();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
index f9bffae29..f78cc15be 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/ViewModels/MainViewVM.cs
@@ -384,70 +384,42 @@ namespace Tango.MachineStudio.UI.ViewModels
/// </summary>
private void ConnectToMachine()
{
- _notificationProvider.ShowModalDialog<MachineConnectionViewVM>(async (x) =>
+ if (ApplicationManager.ConnectedMachine == null)
{
- if (x.SelectedMachine != null)
+ _notificationProvider.ShowModalDialog<MachineConnectionViewVM>(async (x) =>
{
- if (ApplicationManager.IsMachineConnected)
+ if (x.SelectedMachine != null)
{
- using (_notificationProvider.PushTaskItem("Disconnecting..."))
+ if (ApplicationManager.IsMachineConnected)
{
- await ApplicationManager.ConnectedMachine.Disconnect();
- await Task.Delay(1000);
- }
- }
-
- if (x.SelectedMachine.RequiresAuthentication)
- {
- _notificationProvider.ShowModalDialog<MachineLoginViewVM>(async (login) =>
- {
- using (NotificationProvider.PushTaskItem("Connecting to machine " + x.SelectedMachine.ToString() + "..."))
+ using (_notificationProvider.PushTaskItem("Disconnecting..."))
{
- try
- {
- await x.SelectedMachine.Connect();
-
- var authenticated = await x.SelectedMachine.As<IExternalBridgeSecureClient>().Authenticate(login.Password);
- if (!authenticated)
- {
- _notificationProvider.ShowError("It seems like you are not authorized to access the selected machine.");
- }
- else
- {
- ApplicationManager.ConnectedMachine = x.SelectedMachine;
- PostMessage(new MachineConnectionChangedMessage() { Machine = x.SelectedMachine });
- _eventLogger.Log(String.Format("Successfully connected to machine {0} via TCP", x.SelectedMachine.SerialNumber));
- }
- }
- catch (Exception ex)
- {
- LogManager.Log(ex);
- _eventLogger.Log(ex, "Error connecting to machine " + x.SelectedMachine.SerialNumber);
- _notificationProvider.ShowError(ex.Message);
- }
-
- InvalidateRelayCommands();
+ await ApplicationManager.ConnectedMachine.Disconnect();
+ await Task.Delay(1000);
}
- });
- }
- else
- {
- _notificationProvider.ShowModalDialog<MachineSerialViewVM>(async (vm) =>
+ }
+
+ if (x.SelectedMachine.RequiresAuthentication)
{
- if (vm.SelectedMachine != null)
+ _notificationProvider.ShowModalDialog<MachineLoginViewVM>(async (login) =>
{
- using (NotificationProvider.PushTaskItem("Connecting to " + x.SelectedMachine.ToString() + "..."))
+ using (NotificationProvider.PushTaskItem("Connecting to machine " + x.SelectedMachine.ToString() + "..."))
{
try
{
await x.SelectedMachine.Connect();
- x.SelectedMachine.SerialNumber = vm.SelectedMachine.SerialNumber;
- ApplicationManager.ConnectedMachine = x.SelectedMachine;
- PostMessage(new MachineConnectionChangedMessage() { Machine = x.SelectedMachine });
- _eventLogger.Log(String.Format("Successfully connected to machine {0} via USB", x.SelectedMachine.SerialNumber));
- SettingsManager.Default.MachineStudio.LastVirtualMachineSerialNumber = vm.SelectedMachine.SerialNumber;
- SettingsManager.SaveDefaultSettings();
+ var authenticated = await x.SelectedMachine.As<IExternalBridgeSecureClient>().Authenticate(login.Password);
+ if (!authenticated)
+ {
+ _notificationProvider.ShowError("It seems like you are not authorized to access the selected machine.");
+ }
+ else
+ {
+ ApplicationManager.ConnectedMachine = x.SelectedMachine;
+ PostMessage(new MachineConnectionChangedMessage() { Machine = x.SelectedMachine });
+ _eventLogger.Log(String.Format("Successfully connected to machine {0} via TCP", x.SelectedMachine.SerialNumber));
+ }
}
catch (Exception ex)
{
@@ -458,15 +430,55 @@ namespace Tango.MachineStudio.UI.ViewModels
InvalidateRelayCommands();
}
- }
- });
+ });
+ }
+ else
+ {
+ _notificationProvider.ShowModalDialog<MachineSerialViewVM>(async (vm) =>
+ {
+ if (vm.SelectedMachine != null)
+ {
+ using (NotificationProvider.PushTaskItem("Connecting to " + x.SelectedMachine.ToString() + "..."))
+ {
+ try
+ {
+ await x.SelectedMachine.Connect();
+ x.SelectedMachine.SerialNumber = vm.SelectedMachine.SerialNumber;
+ ApplicationManager.ConnectedMachine = x.SelectedMachine;
+
+ PostMessage(new MachineConnectionChangedMessage() { Machine = x.SelectedMachine });
+ _eventLogger.Log(String.Format("Successfully connected to machine {0} via USB", x.SelectedMachine.SerialNumber));
+ SettingsManager.Default.MachineStudio.LastVirtualMachineSerialNumber = vm.SelectedMachine.SerialNumber;
+ SettingsManager.SaveDefaultSettings();
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex);
+ _eventLogger.Log(ex, "Error connecting to machine " + x.SelectedMachine.SerialNumber);
+ _notificationProvider.ShowError(ex.Message);
+ }
+
+ InvalidateRelayCommands();
+ }
+ }
+ });
+ }
+
+ InvalidateRelayCommands();
}
InvalidateRelayCommands();
- }
+ });
+ }
+ else
+ {
+ _notificationProvider.ShowModalDialog<ConnectedMachineViewVM>((x) =>
+ {
+ DisconnectFromMachine();
+ });
+ }
- InvalidateRelayCommands();
- });
+ InvalidateRelayCommands();
}
/// <summary>
@@ -581,6 +593,7 @@ namespace Tango.MachineStudio.UI.ViewModels
{
if (ApplicationManager.ConnectedMachine != null && machineEvent.EventType.Resolvable)
{
+ _eventLogger.Log(String.Format("Event '{0}' resolved by user.", machineEvent.EventType.Name));
await ApplicationManager.ConnectedMachine.ResolveEvent((PMR.Diagnostics.EventType)machineEvent.Type);
}
}
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ConnectedMachineView.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ConnectedMachineView.xaml
new file mode 100644
index 000000000..797d4dcb0
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ConnectedMachineView.xaml
@@ -0,0 +1,111 @@
+<UserControl x:Class="Tango.MachineStudio.UI.Views.ConnectedMachineView"
+ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:mahapps="http://metro.mahapps.com/winfx/xaml/controls"
+ xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes"
+ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+ xmlns:integration="clr-namespace:Tango.Integration.Services;assembly=Tango.Integration"
+ xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI"
+ xmlns:controls="clr-namespace:Tango.SharedUI.Controls;assembly=Tango.SharedUI"
+ xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
+ xmlns:local="clr-namespace:Tango.MachineStudio.UI.Views"
+ mc:Ignorable="d"
+ d:DesignHeight="300" d:DesignWidth="300" Width="600" Height="400" Background="White" DataContext="{Binding ConnectedMachineViewVM, Source={StaticResource Locator}}">
+
+ <UserControl.Resources>
+ <converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"></converters:BooleanToVisibilityConverter>
+ <converters:BooleanToVisibilityInverseConverter x:Key="BooleanToVisibilityInverseConverter"></converters:BooleanToVisibilityInverseConverter>
+ <converters:BooleanInverseConverter x:Key="BooleanInverseConverter"></converters:BooleanInverseConverter>
+ <converters:ByteArrayToFileSizeConverter x:Key="ByteArrayToFileSizeConverter" />
+ </UserControl.Resources>
+
+ <Grid>
+ <Grid>
+ <Grid.RowDefinitions>
+ <RowDefinition Height="80"/>
+ <RowDefinition Height="1*"/>
+ </Grid.RowDefinitions>
+
+ <Grid>
+ <StackPanel Orientation="Horizontal" Margin="10">
+ <ContentControl Content="{Binding ApplicationManager.ConnectedMachine}">
+ <ContentControl.Resources>
+ <DataTemplate DataType="{x:Type integration:ExternalBridgeTcpClient}">
+ <Image Source="/Images/external-bridge-tcp.png" Width="48" Height="48" RenderOptions.BitmapScalingMode="Fant"></Image>
+ </DataTemplate>
+
+ <DataTemplate DataType="{x:Type integration:ExternalBridgeUsbClient}">
+ <Image Source="/Images/external-bridge-usb.png" Width="48" Height="48" RenderOptions.BitmapScalingMode="Fant"></Image>
+ </DataTemplate>
+ </ContentControl.Resources>
+ </ContentControl>
+
+ <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>
+ <ContentControl Content="{Binding ApplicationManager.ConnectedMachine}">
+ <ContentControl.Resources>
+ <DataTemplate DataType="{x:Type integration:ExternalBridgeTcpClient}">
+ <controls:TableGrid RowHeight="30">
+ <TextBlock FontWeight="SemiBold" Text="Serial Number:" />
+ <TextBlock Text="{Binding SerialNumber}" />
+ <TextBlock FontWeight="SemiBold" Text="Name:" />
+ <TextBlock Text="{Binding Machine.Name}" />
+ <TextBlock FontWeight="SemiBold" Text="Organization:" />
+ <TextBlock Text="{Binding Machine.Organization.Name}" />
+ <TextBlock FontWeight="SemiBold" Text="IP Address:" />
+ <TextBlock Text="{Binding IPAddress}" />
+ <TextBlock FontWeight="SemiBold" Text="Total Bytes Sent:" />
+ <TextBlock Text="{Binding Adapter.TotalBytesSent,Converter={StaticResource ByteArrayToFileSizeConverter},Mode=OneWay}" />
+ <TextBlock FontWeight="SemiBold" Text="Total Bytes Received:" />
+ <TextBlock Text="{Binding Adapter.TotalBytesReceived,Converter={StaticResource ByteArrayToFileSizeConverter},Mode=OneWay}" />
+ <TextBlock FontWeight="SemiBold" Text="Transfer Rate:" />
+ <TextBlock>
+ <Run Text="{Binding Adapter.TransferRate,Converter={StaticResource ByteArrayToFileSizeConverter},Mode=OneWay}"></Run>
+ <Run Text="/ second"></Run>
+ </TextBlock>
+ </controls:TableGrid>
+ </DataTemplate>
+
+ <DataTemplate DataType="{x:Type integration:ExternalBridgeUsbClient}">
+ <controls:TableGrid RowHeight="30">
+ <TextBlock FontWeight="SemiBold" Text="Serial Number:" />
+ <TextBlock Text="{Binding SerialNumber}" />
+ <TextBlock FontWeight="SemiBold" Text="Name:" />
+ <TextBlock Text="{Binding Machine.Name}" />
+ <TextBlock FontWeight="SemiBold" Text="Organization:" />
+ <TextBlock Text="{Binding Machine.Organization.Name}" />
+ <TextBlock FontWeight="SemiBold" Text="COM Port:" />
+ <TextBlock Text="{Binding ComPort}" />
+ <TextBlock FontWeight="SemiBold" Text="Device:" />
+ <TextBlock Text="{Binding Device}" />
+ <TextBlock FontWeight="SemiBold" Text="Total Bytes Sent:" />
+ <TextBlock Text="{Binding Adapter.TotalBytesSent,Converter={StaticResource ByteArrayToFileSizeConverter},Mode=OneWay}" />
+ <TextBlock FontWeight="SemiBold" Text="Total Bytes Received:" />
+ <TextBlock Text="{Binding Adapter.TotalBytesReceived,Converter={StaticResource ByteArrayToFileSizeConverter},Mode=OneWay}" />
+ <TextBlock FontWeight="SemiBold" Text="Transfer Rate:" />
+ <TextBlock>
+ <Run Text="{Binding Adapter.TransferRate,Converter={StaticResource ByteArrayToFileSizeConverter},Mode=OneWay}"></Run>
+ <Run Text="/ second"></Run>
+ </TextBlock>
+ </controls:TableGrid>
+ </DataTemplate>
+ </ContentControl.Resources>
+ </ContentControl>
+ </Grid>
+
+ <Grid Grid.Row="1">
+ <Button HorizontalAlignment="Right" Width="140" Command="{Binding DisconnectCommand}">DISCONNECT</Button>
+ </Grid>
+ </Grid>
+ </Grid>
+ </Grid>
+</UserControl>
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ConnectedMachineView.xaml.cs b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ConnectedMachineView.xaml.cs
new file mode 100644
index 000000000..cc8ac2237
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/ConnectedMachineView.xaml.cs
@@ -0,0 +1,28 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows;
+using System.Windows.Controls;
+using System.Windows.Data;
+using System.Windows.Documents;
+using System.Windows.Input;
+using System.Windows.Media;
+using System.Windows.Media.Imaging;
+using System.Windows.Navigation;
+using System.Windows.Shapes;
+
+namespace Tango.MachineStudio.UI.Views
+{
+ /// <summary>
+ /// Interaction logic for ConnectedMachineView.xaml
+ /// </summary>
+ public partial class ConnectedMachineView : UserControl
+ {
+ public ConnectedMachineView()
+ {
+ InitializeComponent();
+ }
+ }
+}
diff --git a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MachineConnectionView.xaml b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MachineConnectionView.xaml
index 1626e67ef..6f0a74805 100644
--- a/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MachineConnectionView.xaml
+++ b/Software/Visual_Studio/MachineStudio/Tango.MachineStudio.UI/Views/MachineConnectionView.xaml
@@ -70,7 +70,7 @@
<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 Organization,Mode=OneWay}"></Run>
+ <Run FontWeight="Bold">Organization:</Run> <Run Text="{Binding Machine.Organization.Name,Mode=OneWay}"></Run>
</TextBlock>
</StackPanel>
</StackPanel>