diff options
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner')
6 files changed, 299 insertions, 433 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/HardwareDesignerModule.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/HardwareDesignerModule.cs index 3c4d6e36a..4bd266f4c 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/HardwareDesignerModule.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/HardwareDesignerModule.cs @@ -35,7 +35,7 @@ namespace Tango.MachineStudio.HardwareDesigner { get { - return ResourceHelper.GetImageFromResources("Images/hardware-module.png"); + return ResourceHelper.GetImageFromResources("Images/components.png"); } } diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Images/components.png b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Images/components.png Binary files differnew file mode 100644 index 000000000..fc51d2acf --- /dev/null +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Images/components.png diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Tango.MachineStudio.HardwareDesigner.csproj b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Tango.MachineStudio.HardwareDesigner.csproj index b3b2f6ba9..cfebe1305 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Tango.MachineStudio.HardwareDesigner.csproj +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Tango.MachineStudio.HardwareDesigner.csproj @@ -160,5 +160,8 @@ <ItemGroup> <Resource Include="Images\thread.png" /> </ItemGroup> + <ItemGroup> + <Resource Include="Images\components.png" /> + </ItemGroup> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> </Project>
\ No newline at end of file diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs index a2c7e4460..ee5e0e39c 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs @@ -9,6 +9,7 @@ using Tango.BL.Entities; using Tango.MachineStudio.Common.Notifications; using Tango.SharedUI; using Tango.BL; +using Tango.SharedUI.Components; namespace Tango.MachineStudio.HardwareDesigner.ViewModels { @@ -24,6 +25,62 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels set { _adapter = value; RaisePropertyChangedAuto(); } } + private SelectedObjectCollection<HardwareMotorType> _motorTypes; + public SelectedObjectCollection<HardwareMotorType> MotorTypes + { + get { return _motorTypes; } + set { _motorTypes = value; RaisePropertyChangedAuto(); } + } + + private ObservableCollection<HardwareMotorType> _selectedMotorTypes; + public ObservableCollection<HardwareMotorType> SelectedMotorTypes + { + get { return _selectedMotorTypes; } + set { _selectedMotorTypes = value; RaisePropertyChangedAuto(); } + } + + private SelectedObjectCollection<HardwareDancerType> _dancerTypes; + public SelectedObjectCollection<HardwareDancerType> DancerTypes + { + get { return _dancerTypes; } + set { _dancerTypes = value; RaisePropertyChangedAuto(); } + } + + private ObservableCollection<HardwareDancerType> _selectedDancerTypes; + public ObservableCollection<HardwareDancerType> SelectedDancerTypes + { + get { return _selectedDancerTypes; } + set { _selectedDancerTypes = value; RaisePropertyChangedAuto(); } + } + + private SelectedObjectCollection<HardwarePidControlType> _pidControlTypes; + public SelectedObjectCollection<HardwarePidControlType> PidControlTypes + { + get { return _pidControlTypes; } + set { _pidControlTypes = value; RaisePropertyChangedAuto(); } + } + + private ObservableCollection<HardwarePidControlType> _selectedPidControlTypes; + public ObservableCollection<HardwarePidControlType> SelectedPidControlTypes + { + get { return _selectedPidControlTypes; } + set { _selectedPidControlTypes = value; RaisePropertyChangedAuto(); } + } + + private SelectedObjectCollection<HardwareWinderType> _winderTypes; + public SelectedObjectCollection<HardwareWinderType> WinderTypes + { + get { return _winderTypes; } + set { _winderTypes = value; RaisePropertyChangedAuto(); } + } + + private ObservableCollection<HardwareWinderType> _selectedWinderTypes; + public ObservableCollection<HardwareWinderType> SelectedWinderTypes + { + get { return _selectedWinderTypes; } + set { _selectedWinderTypes = value; RaisePropertyChangedAuto(); } + } + private HardwareVersion _selectedVersion; public HardwareVersion SelectedVersion { @@ -51,6 +108,20 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels } } + private Object _selectedHardwareObjectType; + public Object SelectedHardwareObjectType + { + get { return _selectedHardwareObjectType; } + set + { + _selectedHardwareObjectType = null; + RaisePropertyChangedAuto(); + _selectedHardwareObjectType = value; + RaisePropertyChangedAuto(); + OnSelectedHardwareObjectTypeChanged(); + } + } + public RelayCommand SaveCommand { get; set; } public RelayCommand DeleteCommand { get; set; } @@ -65,77 +136,115 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels SaveCommand = new RelayCommand(Save, () => CurrentVersion != null); NewCommand = new RelayCommand(New); DeleteCommand = new RelayCommand(Delete, () => !_isNew && CurrentVersion != null); - } - - private void OnSelectedVersionChanged() - { - if (SelectedVersion != null) - { - _isNew = false; - CurrentVersion = SelectedVersion.Clone(); - } - - InvalidateRelayCommands(); - } - public void OnRemoveDancer(HardwareDancer dancer) - { - CurrentVersion.HardwareDancers.Remove(dancer); + CurrentVersion = new HardwareVersion(); + CreateTemplate(CurrentVersion); } - public void OnRemoveMotor(HardwareMotor motor) + private void OnSelectedHardwareObjectTypeChanged() { - CurrentVersion.HardwareMotors.Remove(motor); - } + if (SelectedHardwareObjectType != null) + { + if (SelectedHardwareObjectType is SelectedObject<HardwareMotorType>) + { + var type = (SelectedHardwareObjectType as SelectedObject<HardwareMotorType>).Data; + var hardwareObj = CurrentVersion.HardwareMotors.SingleOrDefault(x => x.HardwareMotorType == type); - public void OnRemovePidControl(HardwarePidControl pidControl) - { - CurrentVersion.HardwarePidControls.Remove(pidControl); - } + if (hardwareObj != null) + { + SelectedHardwareObject = hardwareObj; + } + else + { + hardwareObj = new HardwareMotor() { HardwareMotorType = type }; + CurrentVersion.HardwareMotors.Add(hardwareObj); + SelectedHardwareObject = hardwareObj; + } + } + else if (SelectedHardwareObjectType is SelectedObject<HardwareDancerType>) + { + var type = (SelectedHardwareObjectType as SelectedObject<HardwareDancerType>).Data; + var hardwareObj = CurrentVersion.HardwareDancers.SingleOrDefault(x => x.HardwareDancerType == type); - public void OnRemoveWinder(HardwareWinder hardwareWinder) - { - CurrentVersion.HardwareWinders.Remove(hardwareWinder); - } + if (hardwareObj != null) + { + SelectedHardwareObject = hardwareObj; + } + else + { + hardwareObj = new HardwareDancer() { HardwareDancerType = type }; + CurrentVersion.HardwareDancers.Add(hardwareObj); + SelectedHardwareObject = hardwareObj; + } + } + else if (SelectedHardwareObjectType is SelectedObject<HardwarePidControlType>) + { + var type = (SelectedHardwareObjectType as SelectedObject<HardwarePidControlType>).Data; + var hardwareObj = CurrentVersion.HardwarePidControls.SingleOrDefault(x => x.HardwarePidControlType == type); - public void OnMotorDrop(HardwareMotorType motorType) - { - if (CheckCurrentVersionNull()) return; + if (hardwareObj != null) + { + SelectedHardwareObject = hardwareObj; + } + else + { + hardwareObj = new HardwarePidControl() { HardwarePidControlType = type }; + CurrentVersion.HardwarePidControls.Add(hardwareObj); + SelectedHardwareObject = hardwareObj; + } + } + else if (SelectedHardwareObjectType is SelectedObject<HardwareWinderType>) + { + var type = (SelectedHardwareObjectType as SelectedObject<HardwareWinderType>).Data; + var hardwareObj = CurrentVersion.HardwareWinders.SingleOrDefault(x => x.HardwareWinderType == type); - if (!CurrentVersion.HardwareMotors.ToList().Exists(x => x.HardwareMotorType == motorType)) - { - CurrentVersion.HardwareMotors.Add(new HardwareMotor() { HardwareMotorType = motorType }); + if (hardwareObj != null) + { + SelectedHardwareObject = hardwareObj; + } + else + { + hardwareObj = new HardwareWinder() { HardwareWinderType = type }; + CurrentVersion.HardwareWinders.Add(hardwareObj); + SelectedHardwareObject = hardwareObj; + } + } } } - public void OnDropDancer(HardwareDancerType dancerType) + private void CreateTemplate(HardwareVersion version) { - if (CheckCurrentVersionNull()) return; - - if (!CurrentVersion.HardwareDancers.ToList().Exists(x => x.HardwareDancerType == dancerType)) + if (version == null) { - CurrentVersion.HardwareDancers.Add(new HardwareDancer() { HardwareDancerType = dancerType }); + SelectedMotorTypes = new ObservableCollection<HardwareMotorType>(); + SelectedDancerTypes = new ObservableCollection<HardwareDancerType>(); + SelectedPidControlTypes = new ObservableCollection<HardwarePidControlType>(); + SelectedWinderTypes = new ObservableCollection<HardwareWinderType>(); } - } - - public void OnDropPidControl(HardwarePidControlType pidControlType) - { - if (CheckCurrentVersionNull()) return; - - if (!CurrentVersion.HardwarePidControls.ToList().Exists(x => x.HardwarePidControlType == pidControlType)) + else { - CurrentVersion.HardwarePidControls.Add(new HardwarePidControl() { HardwarePidControlType = pidControlType }); + SelectedMotorTypes = version.HardwareMotors.Select(x => x.HardwareMotorType).ToObservableCollection(); + SelectedDancerTypes = version.HardwareDancers.Select(x => x.HardwareDancerType).ToObservableCollection(); + SelectedPidControlTypes = version.HardwarePidControls.Select(x => x.HardwarePidControlType).ToObservableCollection(); + SelectedWinderTypes = version.HardwareWinders.Select(x => x.HardwareWinderType).ToObservableCollection(); } + + MotorTypes = new SelectedObjectCollection<HardwareMotorType>(Adapter.HardwareMotorTypes, SelectedMotorTypes); + DancerTypes = new SelectedObjectCollection<HardwareDancerType>(Adapter.HardwareDancerTypes, SelectedDancerTypes); + PidControlTypes = new SelectedObjectCollection<HardwarePidControlType>(Adapter.HardwarePidControlTypes, SelectedPidControlTypes); + WinderTypes = new SelectedObjectCollection<HardwareWinderType>(Adapter.HardwareWinderTypes, SelectedWinderTypes); } - public void OnDropWinder(HardwareWinderType hardwareWinderType) + private void OnSelectedVersionChanged() { - if (CheckCurrentVersionNull()) return; - - if (!CurrentVersion.HardwareWinders.ToList().Exists(x => x.HardwareWinderType == hardwareWinderType)) + if (SelectedVersion != null) { - CurrentVersion.HardwareWinders.Add(new HardwareWinder() { HardwareWinderType = hardwareWinderType }); + _isNew = false; + CurrentVersion = SelectedVersion.Clone(); + CreateTemplate(CurrentVersion); } + + InvalidateRelayCommands(); } private bool CheckCurrentVersionNull() @@ -159,7 +268,7 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels CurrentVersion = new HardwareVersion(); CurrentVersion.Version = Adapter.HardwareVersions.Max(x => x.Version) + 1; CurrentVersion.Name = name; - + CreateTemplate(CurrentVersion); _isNew = true; InvalidateRelayCommands(); } @@ -175,7 +284,12 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels if (_isNew) { - realVersion = CurrentVersion; + realVersion = CurrentVersion.Clone(); + + realVersion.HardwareMotors.ToList().Where(x => !SelectedMotorTypes.Contains(x.HardwareMotorType)).ToList().ForEach(x => realVersion.HardwareMotors.Remove(x)); + realVersion.HardwareDancers.ToList().Where(x => !SelectedDancerTypes.Contains(x.HardwareDancerType)).ToList().ForEach(x => realVersion.HardwareDancers.Remove(x)); + realVersion.HardwarePidControls.ToList().Where(x => !SelectedPidControlTypes.Contains(x.HardwarePidControlType)).ToList().ForEach(x => realVersion.HardwarePidControls.Remove(x)); + realVersion.HardwareWinders.ToList().Where(x => !SelectedWinderTypes.Contains(x.HardwareWinderType)).ToList().ForEach(x => realVersion.HardwareWinders.Remove(x)); } else { @@ -193,28 +307,76 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels realVersion.HardwarePidControls.Clear(); realVersion.HardwareWinders.Clear(); - - foreach (var item in CurrentVersion.HardwareDancers.ToList().Select(x => x.Clone())) + foreach (var type in SelectedDancerTypes) { - item.HardwareVersionGuid = realVersion.Guid; - realVersion.HardwareDancers.Add(item); + var item = CurrentVersion.HardwareDancers.SingleOrDefault(x => x.HardwareDancerType == type); + if (item != null) + { + item.HardwareVersionGuid = realVersion.Guid; + realVersion.HardwareDancers.Add(item); + } + else + { + realVersion.HardwareDancers.Add(new HardwareDancer() + { + HardwareVersionGuid = realVersion.Guid, + HardwareDancerType = type + }); + } } - foreach (var item in CurrentVersion.HardwareMotors.ToList().Select(x => x.Clone())) + foreach (var type in SelectedMotorTypes) { - item.HardwareVersionGuid = realVersion.Guid; - realVersion.HardwareMotors.Add(item); + var item = CurrentVersion.HardwareMotors.SingleOrDefault(x => x.HardwareMotorType == type); + if (item != null) + { + item.HardwareVersionGuid = realVersion.Guid; + realVersion.HardwareMotors.Add(item); + } + else + { + realVersion.HardwareMotors.Add(new HardwareMotor() + { + HardwareVersionGuid = realVersion.Guid, + HardwareMotorType = type + }); + } } - foreach (var item in CurrentVersion.HardwarePidControls.ToList().Select(x => x.Clone())) + foreach (var type in SelectedPidControlTypes) { - item.HardwareVersionGuid = realVersion.Guid; - realVersion.HardwarePidControls.Add(item); + var item = CurrentVersion.HardwarePidControls.SingleOrDefault(x => x.HardwarePidControlType == type); + if (item != null) + { + item.HardwareVersionGuid = realVersion.Guid; + realVersion.HardwarePidControls.Add(item); + } + else + { + realVersion.HardwarePidControls.Add(new HardwarePidControl() + { + HardwareVersionGuid = realVersion.Guid, + HardwarePidControlType = type + }); + } } - foreach (var item in CurrentVersion.HardwareWinders.ToList().Select(x => x.Clone())) + + foreach (var type in SelectedWinderTypes) { - item.HardwareVersionGuid = realVersion.Guid; - realVersion.HardwareWinders.Add(item); + var item = CurrentVersion.HardwareWinders.SingleOrDefault(x => x.HardwareWinderType == type); + if (item != null) + { + item.HardwareVersionGuid = realVersion.Guid; + realVersion.HardwareWinders.Add(item); + } + else + { + realVersion.HardwareWinders.Add(new HardwareWinder() + { + HardwareVersionGuid = realVersion.Guid, + HardwareWinderType = type + }); + } } } diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Views/MainView.xaml b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Views/MainView.xaml index 55b3580fe..335ce809e 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Views/MainView.xaml +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Views/MainView.xaml @@ -8,12 +8,13 @@ xmlns:mahApps="http://metro.mahapps.com/winfx/xaml/controls" xmlns:editors="clr-namespace:Tango.SharedUI.Editors;assembly=Tango.SharedUI" xmlns:converters="clr-namespace:Tango.SharedUI.Converters;assembly=Tango.SharedUI" + xmlns:entities="clr-namespace:Tango.BL.Entities;assembly=Tango.BL" xmlns:local="clr-namespace:Tango.MachineStudio.HardwareDesigner.Views" xmlns:vm="clr-namespace:Tango.MachineStudio.HardwareDesigner.ViewModels" xmlns:observables="clr-namespace:Tango.BL.Entities;assembly=Tango.BL" xmlns:global="clr-namespace:Tango.MachineStudio.HardwareDesigner" mc:Ignorable="d" - d:DesignHeight="720" Background="Transparent" d:DesignWidth="1280" d:DataContext="{d:DesignInstance Type=vm:MainViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.MainViewVM}"> + d:DesignHeight="720" d:DesignWidth="1280" d:DataContext="{d:DesignInstance Type=vm:MainViewVM, IsDesignTimeCreatable=False}" DataContext="{x:Static global:ViewModelLocator.MainViewVM}"> <UserControl.Resources> <converters:DoubleToIntConverter x:Key="DoubleToIntConverter" /> @@ -25,22 +26,17 @@ <Grid> <Grid.ColumnDefinitions> <ColumnDefinition Width="477*"/> - <ColumnDefinition Width="310"/> + <ColumnDefinition Width="500"/> </Grid.ColumnDefinitions> <Grid> - <Grid.ColumnDefinitions> - <ColumnDefinition Width="200"/> - <ColumnDefinition Width="1*"/> - </Grid.ColumnDefinitions> - <Grid Grid.Column="1"> <Grid.RowDefinitions> <RowDefinition Height="90"/> <RowDefinition Height="631*"/> </Grid.RowDefinitions> - <Grid Margin="-210 0 0 0"> + <Grid Margin="0 0 0 0"> <StackPanel Orientation="Horizontal"> <TextBlock FontSize="30" FontStyle="Italic" VerticalAlignment="Center" Margin="50 10 10 0" Foreground="Silver" FontWeight="Bold">HARDWARE DESIGNER</TextBlock> <StackPanel Orientation="Horizontal" VerticalAlignment="Center" Margin="10 10 0 0"> @@ -56,202 +52,76 @@ </StackPanel> </Grid> - <Viewbox MaxWidth="1200" Grid.Row="1" > - <Grid VerticalAlignment="Top"> - <Image IsHitTestVisible="False" Source="../Images/machine-sketch-trans.png" MaxWidth="800" RenderOptions.BitmapScalingMode="Fant"> - <Image.Effect> - <DropShadowEffect ShadowDepth="0" BlurRadius="20" Opacity="1" RenderingBias="Performance" Color="DimGray"></DropShadowEffect> - </Image.Effect> - </Image> + <Grid Grid.Row="1"> - <Canvas ClipToBounds="False" x:Name="canvas"> - <Border BorderThickness="1" BorderBrush="Gray" CornerRadius="0 0 20 20" Width="707" Height="132" Canvas.Left="50" Canvas.Top="378" Background="#ABFFFFFF"> - <Grid Style="{StaticResource droppableGrid}" dragAndDrop:DragAndDropService.Drop="OnDancerDrop"> - <TextBlock HorizontalAlignment="Center" VerticalAlignment="Top" Foreground="Silver" FontSize="20">DRAG & DROP DANCERS</TextBlock> - <ListBox x:Name="listDancers" ItemContainerStyle="{StaticResource basicListBoxItem}" HorizontalAlignment="Center" VerticalAlignment="Center" ItemsSource="{Binding CurrentVersion.HardwareDancers}" SelectedItem="{Binding SelectedHardwareObject,Mode=TwoWay}" Margin="0 5 0 0" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled"> - <ListBox.ItemsPanel> - <ItemsPanelTemplate> - <WrapPanel Orientation="Horizontal" /> - </ItemsPanelTemplate> - </ListBox.ItemsPanel> - <ListBox.ItemTemplate> - <DataTemplate DataType="{x:Type observables:HardwareDancer}"> - <Grid Style="{StaticResource draggableGrid}"> - <Border Margin="5" CornerRadius="5" Width="100" Height="100" BorderThickness="1" Padding="2" IsHitTestVisible="False"> - <Border.Style> - <Style TargetType="Border"> - <Setter Property="BorderBrush" Value="Silver"></Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem},Path=IsSelected}" Value="True"> - <Setter Property="BorderBrush" Value="{StaticResource AccentColorBrush}"></Setter> - </DataTrigger> - </Style.Triggers> - </Style> - </Border.Style> - <Border.Background> - <LinearGradientBrush> - <GradientStop Color="White"/> - <GradientStop Color="#FFD6D6D6" Offset="1"/> - </LinearGradientBrush> - </Border.Background> - <Grid> - <StackPanel> - <Image Source="../Images/compass.png" Width="32" Margin="5" /> - <TextBlock FontSize="8" TextAlignment="Center" TextWrapping="Wrap" Margin="0 5 0 0" Text="{Binding HardwareDancerType.Name}" VerticalAlignment="Center"></TextBlock> - </StackPanel> - </Grid> - </Border> - </Grid> - </DataTemplate> - </ListBox.ItemTemplate> - </ListBox> - </Grid> - </Border> - <Border BorderThickness="1 1 1 0" BorderBrush="Gray" Width="576" Height="157" Canvas.Left="114" Canvas.Top="224" Background="#ABFFFFFF"> - <Grid Style="{StaticResource droppableGrid}" dragAndDrop:DragAndDropService.Drop="OnMotorsDrop"> - <TextBlock HorizontalAlignment="Center" VerticalAlignment="Top" Foreground="Silver" FontSize="20">DRAG & DROP MOTORS</TextBlock> - <ListBox x:Name="listMotors" ItemContainerStyle="{StaticResource basicListBoxItem}" HorizontalAlignment="Center" VerticalAlignment="Center" ItemsSource="{Binding CurrentVersion.HardwareMotors}" SelectedItem="{Binding SelectedHardwareObject,Mode=TwoWay}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled"> - <ListBox.ItemsPanel> - <ItemsPanelTemplate> - <WrapPanel Orientation="Horizontal" /> - </ItemsPanelTemplate> - </ListBox.ItemsPanel> - <ListBox.ItemTemplate> - <DataTemplate DataType="{x:Type observables:HardwareMotor}"> - <Grid Style="{StaticResource draggableGrid}"> - <Border Margin="4" CornerRadius="3" Height="25" IsHitTestVisible="False" MaxWidth="100" BorderThickness="1" Padding="5 2 9 2"> - <Border.Style> - <Style TargetType="Border"> - <Setter Property="BorderBrush" Value="Silver"></Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem},Path=IsSelected}" Value="True"> - <Setter Property="BorderBrush" Value="{StaticResource AccentColorBrush}"></Setter> - </DataTrigger> - </Style.Triggers> - </Style> - </Border.Style> - <Border.Background> - <LinearGradientBrush> - <GradientStop Color="White"/> - <GradientStop Color="#FFD6D6D6" Offset="1"/> - </LinearGradientBrush> - </Border.Background> - <Grid> - <StackPanel Orientation="Horizontal"> - <Image Source="../Images/engine.png" Width="16" /> - <TextBlock FontSize="8" Margin="5 0 0 0" TextTrimming="CharacterEllipsis" Text="{Binding HardwareMotorType.Description}" VerticalAlignment="Center"></TextBlock> - </StackPanel> - </Grid> - </Border> - </Grid> - </DataTemplate> - </ListBox.ItemTemplate> - </ListBox> - </Grid> - </Border> + <ScrollViewer VerticalScrollBarVisibility="Auto" Margin="50 20 0 0"> + <StackPanel> + <StackPanel Orientation="Horizontal"> + <Image VerticalAlignment="Center" Source="../Images/engine.png" Width="32"></Image> + <TextBlock Margin="10 0 0 0" VerticalAlignment="Center" FontSize="18" FontWeight="SemiBold">MOTORS</TextBlock> + </StackPanel> + <ListBox ItemsSource="{Binding MotorTypes}" Margin="60 15" SelectedItem="{Binding SelectedHardwareObjectType}"> + <ListBox.ItemTemplate> + <DataTemplate DataType="{x:Type entities:HardwareMotorType}"> + <StackPanel Orientation="Horizontal"> + <CheckBox VerticalAlignment="Center" IsChecked="{Binding IsSelected}"></CheckBox> + <TextBlock Margin="10 0 0 0" VerticalAlignment="Center" Text="{Binding Data.Description}"></TextBlock> + </StackPanel> + </DataTemplate> + </ListBox.ItemTemplate> + </ListBox> - <Border BorderThickness="1 1 1 0" BorderBrush="Gray" Width="545" Height="120" Canvas.Left="130" Canvas.Top="105" Background="#ABFFFFFF" CornerRadius="20 20 0 0" Padding="5"> - <Grid Style="{StaticResource droppableGrid}" dragAndDrop:DragAndDropService.Drop="OnPidControlDrop"> - <TextBlock HorizontalAlignment="Center" VerticalAlignment="Top" Foreground="Silver" FontSize="20">DRAG & DROP PID CONTROLS</TextBlock> - <ListBox x:Name="listPid" ItemContainerStyle="{StaticResource basicListBoxItem}" HorizontalAlignment="Center" VerticalAlignment="Center" ItemsSource="{Binding CurrentVersion.HardwarePidControls}" SelectedItem="{Binding SelectedHardwareObject,Mode=TwoWay}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled"> - <ListBox.ItemsPanel> - <ItemsPanelTemplate> - <WrapPanel Orientation="Horizontal" /> - </ItemsPanelTemplate> - </ListBox.ItemsPanel> - <ListBox.ItemTemplate> - <DataTemplate DataType="{x:Type observables:HardwarePidControl}"> - <Grid Style="{StaticResource draggableGrid}"> - <Border Margin="4" CornerRadius="3" Height="25" IsHitTestVisible="False" MaxWidth="100" BorderThickness="1" Padding="5 2 9 2"> - <Border.Style> - <Style TargetType="Border"> - <Setter Property="BorderBrush" Value="Silver"></Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem},Path=IsSelected}" Value="True"> - <Setter Property="BorderBrush" Value="{StaticResource AccentColorBrush}"></Setter> - </DataTrigger> - </Style.Triggers> - </Style> - </Border.Style> - <Border.Background> - <LinearGradientBrush> - <GradientStop Color="White"/> - <GradientStop Color="#FFD6D6D6" Offset="1"/> - </LinearGradientBrush> - </Border.Background> - <Grid> - <StackPanel Orientation="Horizontal"> - <Image Source="../Images/balance.png" Width="16" /> - <TextBlock FontSize="8" Margin="5 0 0 0" TextTrimming="CharacterEllipsis" Text="{Binding HardwarePidControlType.Description}" VerticalAlignment="Center"></TextBlock> - </StackPanel> - </Grid> - </Border> - </Grid> - </DataTemplate> - </ListBox.ItemTemplate> - </ListBox> - </Grid> - </Border> + <StackPanel Orientation="Horizontal" Margin="0 20 0 0"> + <Image VerticalAlignment="Center" Source="../Images/compass.png" Width="32"></Image> + <TextBlock Margin="10 0 0 0" VerticalAlignment="Center" FontSize="18" FontWeight="SemiBold">DANCERS</TextBlock> + </StackPanel> + <ListBox ItemsSource="{Binding DancerTypes}" Margin="60 15" SelectedItem="{Binding SelectedHardwareObjectType}"> + <ListBox.ItemTemplate> + <DataTemplate DataType="{x:Type entities:HardwareDancerType}"> + <StackPanel Orientation="Horizontal"> + <CheckBox VerticalAlignment="Center" IsChecked="{Binding IsSelected}"></CheckBox> + <TextBlock Margin="10 0 0 0" VerticalAlignment="Center" Text="{Binding Data.Description}"></TextBlock> + </StackPanel> + </DataTemplate> + </ListBox.ItemTemplate> + </ListBox> - <Border BorderThickness="1 1 1 0" BorderBrush="Gray" Width="296" Height="73" Canvas.Left="255" Canvas.Top="33" Background="#ABFFFFFF" CornerRadius="20 20 0 0" Padding="5"> - <Grid Style="{StaticResource droppableGrid}" dragAndDrop:DragAndDropService.Drop="OnDropWinder"> - <TextBlock HorizontalAlignment="Center" VerticalAlignment="Top" Foreground="Silver" FontSize="16">DRAG & DROP WINDERS</TextBlock> - <ListBox x:Name="listWinders" ItemContainerStyle="{StaticResource basicListBoxItem}" HorizontalAlignment="Center" VerticalAlignment="Center" ItemsSource="{Binding CurrentVersion.HardwareWinders}" SelectedItem="{Binding SelectedHardwareObject,Mode=TwoWay}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" ScrollViewer.VerticalScrollBarVisibility="Disabled"> - <ListBox.ItemsPanel> - <ItemsPanelTemplate> - <WrapPanel Orientation="Horizontal" /> - </ItemsPanelTemplate> - </ListBox.ItemsPanel> - <ListBox.ItemTemplate> - <DataTemplate DataType="{x:Type observables:HardwareMotor}"> - <Grid Style="{StaticResource draggableGrid}"> - <Border Margin="4" CornerRadius="3" Height="53" IsHitTestVisible="False" MaxWidth="100" BorderThickness="1" Padding="5 2 9 2"> - <Border.Style> - <Style TargetType="Border"> - <Setter Property="BorderBrush" Value="Silver"></Setter> - <Style.Triggers> - <DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType=ListBoxItem},Path=IsSelected}" Value="True"> - <Setter Property="BorderBrush" Value="{StaticResource AccentColorBrush}"></Setter> - </DataTrigger> - </Style.Triggers> - </Style> - </Border.Style> - <Border.Background> - <LinearGradientBrush> - <GradientStop Color="White"/> - <GradientStop Color="#FFD6D6D6" Offset="1"/> - </LinearGradientBrush> - </Border.Background> - <Grid> - <StackPanel Orientation="Horizontal"> - <Image Source="../Images/thread.png" Width="16" /> - <TextBlock FontSize="8" Margin="5 0 0 0" TextTrimming="CharacterEllipsis" Text="{Binding HardwareWinderType.Description}" VerticalAlignment="Center"></TextBlock> - </StackPanel> - </Grid> - </Border> - </Grid> - </DataTemplate> - </ListBox.ItemTemplate> - </ListBox> - </Grid> - </Border> - </Canvas> - </Grid> - </Viewbox> - </Grid> + <StackPanel Orientation="Horizontal" Margin="0 20 0 0"> + <Image VerticalAlignment="Center" Source="../Images/balance.png" Width="32"></Image> + <TextBlock Margin="10 0 0 0" VerticalAlignment="Center" FontSize="18" FontWeight="SemiBold">PID CONTROLS</TextBlock> + </StackPanel> + <ListBox ItemsSource="{Binding PidControlTypes}" Margin="60 15" SelectedItem="{Binding SelectedHardwareObjectType}"> + <ListBox.ItemTemplate> + <DataTemplate DataType="{x:Type entities:HardwarePidControlType}"> + <StackPanel Orientation="Horizontal"> + <CheckBox VerticalAlignment="Center" IsChecked="{Binding IsSelected}"></CheckBox> + <TextBlock Margin="10 0 0 0" VerticalAlignment="Center" Text="{Binding Data.Description}"></TextBlock> + </StackPanel> + </DataTemplate> + </ListBox.ItemTemplate> + </ListBox> + + <StackPanel Orientation="Horizontal" Margin="0 20 0 0"> + <Image VerticalAlignment="Center" Source="../Images/thread.png" Width="32"></Image> + <TextBlock Margin="10 0 0 0" VerticalAlignment="Center" FontSize="18" FontWeight="SemiBold">WINDERS</TextBlock> + </StackPanel> + <ListBox ItemsSource="{Binding WinderTypes}" Margin="60 15" SelectedItem="{Binding SelectedHardwareObjectType}"> + <ListBox.ItemTemplate> + <DataTemplate DataType="{x:Type entities:HardwareWinderType}"> + <StackPanel Orientation="Horizontal"> + <CheckBox VerticalAlignment="Center" IsChecked="{Binding IsSelected}"></CheckBox> + <TextBlock Margin="10 0 0 0" VerticalAlignment="Center" Text="{Binding Data.Description}"></TextBlock> + </StackPanel> + </DataTemplate> + </ListBox.ItemTemplate> + </ListBox> + </StackPanel> + </ScrollViewer> - <Grid> - <Grid VerticalAlignment="Bottom" Margin="0 0 0 50" Style="{StaticResource droppableGrid}" dragAndDrop:DragAndDropService.Drop="OnTrashDrop"> - <StackPanel Margin="0 0 -80 50"> - <TextBlock HorizontalAlignment="Center" FontSize="20" Foreground="Gray"> - DROP HERE TO DELETE - </TextBlock> - <materialDesign:PackIcon Kind="ArrowDown" HorizontalAlignment="Center" Width="32" Height="32" Foreground="Gray" Margin="0 10 0 0" /> - <materialDesign:PackIcon Kind="Delete" Foreground="#9EFF6A6A" Width="250" Height="250" HorizontalAlignment="Center" /> - </StackPanel> </Grid> + </Grid> </Grid> @@ -261,7 +131,7 @@ <RowDefinition Height="60"/> </Grid.RowDefinitions> - <ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto" Margin="0 0 0 10"> + <ScrollViewer HorizontalScrollBarVisibility="Disabled" VerticalScrollBarVisibility="Auto" Margin="0 90 0 10"> <Grid> <StackPanel> <materialDesign:Card Margin="5,10,5,0" Background="{DynamicResource MaterialDesignBackground}" Padding="20 10"> @@ -278,114 +148,6 @@ <materialDesign:Card Margin="5,10,5,0" Background="{DynamicResource MaterialDesignBackground}"> <StackPanel> - <Expander HorizontalAlignment="Stretch" Header="Winders"> - <ListBox ItemsSource="{Binding Adapter.HardwareWinderTypes}" HorizontalContentAlignment="Stretch"> - <ListBox.ItemContainerStyle> - <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}"> - <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> - <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter> - <Setter Property="Padding" Value="1"></Setter> - </Style> - </ListBox.ItemContainerStyle> - <ListBox.ItemTemplate> - <DataTemplate> - <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}"> - <StackPanel Orientation="Horizontal" Margin="2 8"> - <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/thread.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image> - <StackPanel Margin="5 0 0 0" IsHitTestVisible="False" VerticalAlignment="Center"> - <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Description}"></Run></TextBlock> - </StackPanel> - </StackPanel> - - <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle> - </Grid> - </DataTemplate> - </ListBox.ItemTemplate> - </ListBox> - </Expander> - <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" /> - <Expander HorizontalAlignment="Stretch" Header="PID Controls"> - <ListBox ItemsSource="{Binding Adapter.HardwarePidControlTypes}" HorizontalContentAlignment="Stretch"> - <ListBox.ItemContainerStyle> - <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}"> - <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> - <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter> - <Setter Property="Padding" Value="1"></Setter> - </Style> - </ListBox.ItemContainerStyle> - <ListBox.ItemTemplate> - <DataTemplate> - <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}"> - <StackPanel Orientation="Horizontal" Margin="2 8"> - <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/balance.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image> - <StackPanel Margin="5 0 0 0" IsHitTestVisible="False" VerticalAlignment="Center"> - <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Description}"></Run></TextBlock> - </StackPanel> - </StackPanel> - - <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle> - </Grid> - </DataTemplate> - </ListBox.ItemTemplate> - </ListBox> - </Expander> - <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" /> - <Expander HorizontalAlignment="Stretch" Header="Motors"> - <ListBox ItemsSource="{Binding Adapter.HardwareMotorTypes}" HorizontalContentAlignment="Stretch"> - <ListBox.ItemContainerStyle> - <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}"> - <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> - <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter> - <Setter Property="Padding" Value="1"></Setter> - </Style> - </ListBox.ItemContainerStyle> - <ListBox.ItemTemplate> - <DataTemplate> - <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}"> - <StackPanel Orientation="Horizontal" Margin="2 8"> - <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/engine.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image> - <StackPanel Margin="5 0 0 0" IsHitTestVisible="False" VerticalAlignment="Center"> - <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Description}"></Run></TextBlock> - </StackPanel> - </StackPanel> - - <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle> - </Grid> - </DataTemplate> - </ListBox.ItemTemplate> - </ListBox> - </Expander> - <Border Height="1" HorizontalAlignment="Stretch" Background="{DynamicResource MaterialDesignDivider}" SnapsToDevicePixels="True" /> - <Expander HorizontalAlignment="Stretch" Header="Dancers"> - <ListBox ItemsSource="{Binding Adapter.HardwareDancerTypes}" HorizontalContentAlignment="Stretch"> - <ListBox.ItemContainerStyle> - <Style TargetType="ListBoxItem" BasedOn="{StaticResource {x:Type ListBoxItem}}"> - <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> - <Setter Property="VerticalContentAlignment" Value="Stretch"></Setter> - <Setter Property="Padding" Value="1"></Setter> - </Style> - </ListBox.ItemContainerStyle> - <ListBox.ItemTemplate> - <DataTemplate> - <Grid Background="Transparent" IsHitTestVisible="True" dragAndDrop:DragAndDropService.DraggableBorderBrush="{StaticResource AccentColorBrush}" dragAndDrop:DragAndDropService.Draggable="True" dragAndDrop:DragAndDropService.DraggingSurface="{Binding RelativeSource={RelativeSource AncestorType=UserControl},Path=DraggingSurface}"> - <StackPanel Orientation="Horizontal" Margin="2 8"> - <Image IsHitTestVisible="False" Width="24" Height="24" Source="../Images/compass.png" Stretch="Fill" RenderOptions.BitmapScalingMode="Fant"></Image> - <StackPanel Margin="5 0 0 0" IsHitTestVisible="False" VerticalAlignment="Center"> - <TextBlock IsHitTestVisible="False" FontSize="10" Foreground="DimGray"><Run Text="{Binding Description}"></Run></TextBlock> - </StackPanel> - </StackPanel> - - <Rectangle Margin="0 10 0 0" VerticalAlignment="Bottom" Stroke="Gainsboro" StrokeThickness="1"></Rectangle> - </Grid> - </DataTemplate> - </ListBox.ItemTemplate> - </ListBox> - </Expander> - </StackPanel> - </materialDesign:Card> - - <materialDesign:Card Margin="5,10,5,0" Background="{DynamicResource MaterialDesignBackground}"> - <StackPanel> <Grid> <Expander HorizontalAlignment="Stretch" Header="Component Properties" IsExpanded="True"> <editors:ParameterizedEditor ParameterizedObject="{Binding SelectedHardwareObject}" Padding="10"> diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Views/MainView.xaml.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Views/MainView.xaml.cs index dad105a43..14593327b 100644 --- a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Views/MainView.xaml.cs +++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/Views/MainView.xaml.cs @@ -25,72 +25,11 @@ namespace Tango.MachineStudio.HardwareDesigner.Views { private MainViewVM _vm; - public DraggingSurface DraggingSurface - { - get { return (DraggingSurface)GetValue(DraggingSurfaceProperty); } - set { SetValue(DraggingSurfaceProperty, value); } - } - public static readonly DependencyProperty DraggingSurfaceProperty = - DependencyProperty.Register("DraggingSurface", typeof(DraggingSurface), typeof(MainView), new PropertyMetadata(null)); - public MainView() { InitializeComponent(); - DraggingSurface = dragSufrace; Loaded += (x, y) => _vm = DataContext as MainViewVM; } - - private void OnMotorsDrop(object sender, DropEventArgs e) - { - if (e.Draggable.DataContext is HardwareMotorType) - { - _vm.OnMotorDrop(e.Draggable.DataContext as HardwareMotorType); - } - } - - private void OnDancerDrop(object sender, DropEventArgs e) - { - if (e.Draggable.DataContext is HardwareDancerType) - { - _vm.OnDropDancer(e.Draggable.DataContext as HardwareDancerType); - } - } - - private void OnPidControlDrop(object sender, DropEventArgs e) - { - if (e.Draggable.DataContext is HardwarePidControlType) - { - _vm.OnDropPidControl(e.Draggable.DataContext as HardwarePidControlType); - } - } - - private void OnDropWinder(object sender, DropEventArgs e) - { - if (e.Draggable.DataContext is HardwareWinderType) - { - _vm.OnDropWinder(e.Draggable.DataContext as HardwareWinderType); - } - } - - private void OnTrashDrop(object sender, DropEventArgs e) - { - if (e.Draggable.DataContext is HardwareMotor) - { - _vm.OnRemoveMotor(e.Draggable.DataContext as HardwareMotor); - } - else if (e.Draggable.DataContext is HardwareDancer) - { - _vm.OnRemoveDancer(e.Draggable.DataContext as HardwareDancer); - } - else if (e.Draggable.DataContext is HardwarePidControl) - { - _vm.OnRemovePidControl(e.Draggable.DataContext as HardwarePidControl); - } - else if (e.Draggable.DataContext is HardwareWinder) - { - _vm.OnRemoveWinder(e.Draggable.DataContext as HardwareWinder); - } - } } } |
