diff options
| author | Mirta <mirta@twine-s.com> | 2020-11-23 16:13:53 +0200 |
|---|---|---|
| committer | Mirta <mirta@twine-s.com> | 2020-11-23 16:13:53 +0200 |
| commit | 91c007adced573e09b77ab4be4a5aba623a816cc (patch) | |
| tree | 250221fc2def7d59f1393be8394f766faf576656 /Software/Visual_Studio/Utilities/Tango.MachineEM.UI/ViewModels/MainViewVM.cs | |
| parent | 4e9af2b852eb3b9eecfa09e9bc76869558e183cb (diff) | |
| parent | 50a3c0b857b4aa88a9e3970d69256f12b5b24eb8 (diff) | |
| download | Tango-91c007adced573e09b77ab4be4a5aba623a816cc.tar.gz Tango-91c007adced573e09b77ab4be4a5aba623a816cc.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Visual_Studio/Utilities/Tango.MachineEM.UI/ViewModels/MainViewVM.cs')
| -rw-r--r-- | Software/Visual_Studio/Utilities/Tango.MachineEM.UI/ViewModels/MainViewVM.cs | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/ViewModels/MainViewVM.cs b/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/ViewModels/MainViewVM.cs index b46b89a4a..c993be2d7 100644 --- a/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/ViewModels/MainViewVM.cs +++ b/Software/Visual_Studio/Utilities/Tango.MachineEM.UI/ViewModels/MainViewVM.cs @@ -13,6 +13,8 @@ using Tango.Transport.Transporters; using Tango.Core; using Tango.Settings; using Tango.PMR.ThreadLoading; +using Tango.PMR.DataStore; +using System.Windows; namespace Tango.MachineEM.UI.ViewModels { @@ -138,6 +140,10 @@ namespace Tango.MachineEM.UI.ViewModels /// </summary> public RelayCommand AbortJobCommand { get; set; } + public RelayCommand GetDataStoreItemCommand { get; set; } + + public RelayCommand PutDataStoreItemCommand { get; set; } + public RelayCommand PerformDataStoreTestCommand { get; set; } #endregion @@ -191,6 +197,8 @@ namespace Tango.MachineEM.UI.ViewModels SelectedPort = Ports.First(); PerformDataStoreTestCommand = new RelayCommand(Emulator.PerformDataStoreTest); + GetDataStoreItemCommand = new RelayCommand(GetDataStoreItem); + PutDataStoreItemCommand = new RelayCommand(PutDataStoreItem); } #endregion @@ -282,6 +290,120 @@ namespace Tango.MachineEM.UI.ViewModels InvalidateRelayCommands(); } + private void GetDataStoreItem() + { + try + { + var result = GetUserInput<String>("Get Data Store Item", "Enter collection name", String.Empty); + if (!result.Confirmed) return; + var collectionName = result.Value; + + result = GetUserInput<String>("Get Data Store Item", "Enter item key", String.Empty); + if (!result.Confirmed) return; + var key = result.Value; + + Emulator.GetDataStoreItem(new PMR.DataStore.GetDataStoreItemRequest() + { + Collection = collectionName, + Key = key + }); + } + catch { } + } + + private void PutDataStoreItem() + { + try + { + var result = GetUserInput<String>("Put Data Store Item", "Enter collection name", String.Empty); + if (!result.Confirmed) return; + var collectionName = result.Value; + + result = GetUserInput<String>("Put Data Store Item", "Enter item key", String.Empty); + if (!result.Confirmed) return; + var key = result.Value; + + result = GetUserInput<String>("Put Data Store Item", "Enter data type", "Int32"); + if (!result.Confirmed) return; + DataType dataType = (DataType)Enum.Parse(typeof(DataType), result.Value); + + result = GetUserInput<String>("Put Data Store Item", "Enter value", "10"); + if (!result.Confirmed) return; + var value = result.Value; + + DataStoreItem item = new DataStoreItem(); + item.DataType = dataType; + + switch (dataType) + { + case DataType.Int32: + item.Int32Value = int.Parse(value); + break; + case DataType.Float: + item.FloatValue = float.Parse(value); + break; + case DataType.Double: + item.DoubleValue = double.Parse(value); + break; + case DataType.Boolean: + item.BooleanValue = bool.Parse(value); + break; + case DataType.String: + item.StringValue = value; + break; + default: + LogManager.Log("Data type not supported by this emulator."); + throw new NotSupportedException(); + } + + Emulator.PutDataStoreItem(new PutDataStoreItemRequest() + { + Collection = collectionName, + Key = key, + Item = item + }); + } + catch { } + } + + #endregion + + #region Private Methods + + private class InputResult<T> + { + public bool Confirmed { get; set; } + public T Value { get; set; } + } + + private InputResult<T> GetUserInput<T>(String title, String message, T defaultValue) + { + InputWindow window = new InputWindow(); + window.Title = title; + window.Message = message; + window.Value = defaultValue.ToStringSafe(); + window.Owner = Application.Current.MainWindow; + window.WindowStartupLocation = System.Windows.WindowStartupLocation.CenterOwner; + window.WindowStyle = WindowStyle.ToolWindow; + + try + { + if (window.ShowDialog().Value) + { + return new InputResult<T>() { Confirmed = true, Value = (T)Convert.ChangeType(window.Value, typeof(T)) }; + } + else + { + return new InputResult<T>(); + } + } + catch (Exception ex) + { + LogManager.Log(ex, "Error parsing input."); + throw ex; + } + } + #endregion } } |
