diff options
| author | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-02-27 17:25:26 +0200 |
|---|---|---|
| committer | Roy Ben-Shabat <Roy@Twine-s.com> | 2018-02-27 17:25:26 +0200 |
| commit | f1a77b05c2e56cd073180803947aa991a09f9b40 (patch) | |
| tree | e199c2bd9298fab848bdfd71eb09e993e8c535cb /Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.HardwareDesigner/ViewModels/MainViewVM.cs | |
| parent | 47c117490f9f9fed42329ebd1374709528693d6b (diff) | |
| download | Tango-f1a77b05c2e56cd073180803947aa991a09f9b40.tar.gz Tango-f1a77b05c2e56cd073180803947aa991a09f9b40.zip | |
Implemented hardware designer new, save, delete.
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.cs | 110 |
1 files changed, 104 insertions, 6 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 06a3c9ba4..6d605ed1c 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 @@ -6,12 +6,16 @@ using System.Text; using System.Threading.Tasks; using Tango.Core.Commands; using Tango.Integration.Observables; +using Tango.MachineStudio.Common.Notifications; using Tango.SharedUI; namespace Tango.MachineStudio.HardwareDesigner.ViewModels { public class MainViewVM : ViewModel { + private INotificationProvider _notification; + private bool _isNew; + private ObservablesEntitiesAdapter _adapter; public ObservablesEntitiesAdapter Adapter { @@ -30,21 +34,34 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels public HardwareVersion CurrentVersion { get { return _currentVersion; } - set { _currentVersion = value; RaisePropertyChangedAuto(); } + set { _currentVersion = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); } } public RelayCommand SaveCommand { get; set; } - public MainViewVM() + public RelayCommand DeleteCommand { get; set; } + + public RelayCommand NewCommand { get; set; } + + public MainViewVM(INotificationProvider notification) { - Adapter = ObservablesEntitiesAdapter.Instance; + _notification = notification; - SaveCommand = new RelayCommand(Save); + Adapter = ObservablesEntitiesAdapter.Instance; + SaveCommand = new RelayCommand(Save, () => CurrentVersion != null); + NewCommand = new RelayCommand(New); + DeleteCommand = new RelayCommand(Delete, () => !_isNew && CurrentVersion != null); } private void OnSelectedVersionChanged() { - CurrentVersion = SelectedVersion.Clone(); + if (SelectedVersion != null) + { + _isNew = false; + CurrentVersion = SelectedVersion.Clone(); + } + + InvalidateRelayCommands(); } public void OnRemoveDancer(HardwareDancer dancer) @@ -86,11 +103,92 @@ namespace Tango.MachineStudio.HardwareDesigner.ViewModels } } - private void Save() + private void New() + { + String name = _notification.ShowTextInput("Enter hardware version name", "Name"); + + if (!String.IsNullOrWhiteSpace(name)) + { + SelectedVersion = null; + CurrentVersion = new HardwareVersion(); + CurrentVersion.Version = Adapter.HardwareVersions.Max(x => x.Version) + 1; + CurrentVersion.Name = name; + + _isNew = true; + InvalidateRelayCommands(); + } + } + + private async void Save() { if (CurrentVersion != null) { + using (_notification.PushTaskItem("Saving hardware version...")) + { + HardwareVersion realVersion = null; + + if (_isNew) + { + realVersion = CurrentVersion; + } + else + { + realVersion = Adapter.HardwareVersions.SingleOrDefault(x => x.Guid == SelectedVersion.Guid); + realVersion.Version = CurrentVersion.Version; + realVersion.Name = CurrentVersion.Name; + realVersion.HardwareDancers.ToList().ForEach(x => x.DefferedDelete(Adapter.Context)); + realVersion.HardwareMotors.ToList().ForEach(x => x.DefferedDelete(Adapter.Context)); + realVersion.HardwarePidControls.ToList().ForEach(x => x.DefferedDelete(Adapter.Context)); + + realVersion.HardwareDancers.Clear(); + realVersion.HardwareMotors.Clear(); + realVersion.HardwarePidControls.Clear(); + + + foreach (var item in CurrentVersion.HardwareDancers.ToList().Select(x => x.Clone())) + { + item.HardwareVersionGuid = realVersion.Guid; + realVersion.HardwareDancers.Add(item); + } + + foreach (var item in CurrentVersion.HardwareMotors.ToList().Select(x => x.Clone())) + { + item.HardwareVersionGuid = realVersion.Guid; + realVersion.HardwareMotors.Add(item); + } + + foreach (var item in CurrentVersion.HardwarePidControls.ToList().Select(x => x.Clone())) + { + item.HardwareVersionGuid = realVersion.Guid; + realVersion.HardwarePidControls.Add(item); + } + } + + + + if (_isNew) + { + Adapter.Context.HardwareVersions.Add(realVersion); + } + + await realVersion.SaveAsync(Adapter.Context); + + SelectedVersion = Adapter.HardwareVersions.SingleOrDefault(x => x.Guid == realVersion.Guid); + } + } + } + + private void Delete() + { + if (_notification.ShowQuestion("Are you sure you want to delete this hardware version?")) + { + using (_notification.PushTaskItem("Deleting hardware version...")) + { + SelectedVersion.DeleteAsync(Adapter.Context); + SelectedVersion = null; + CurrentVersion = null; + } } } } |
