aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs292
1 files changed, 227 insertions, 65 deletions
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
+ });
+ }
}
}