aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels
diff options
context:
space:
mode:
Diffstat (limited to 'Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels')
-rw-r--r--Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs98
1 files changed, 98 insertions, 0 deletions
diff --git a/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs
new file mode 100644
index 000000000..ff42d870c
--- /dev/null
+++ b/Software/Visual_Studio/MachineStudio/Modules/Tango.MachineStudio.RML/ViewModels/MainViewVM.cs
@@ -0,0 +1,98 @@
+using System;
+using System.Collections.Generic;
+using System.Collections.ObjectModel;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.BL;
+using Tango.BL.Builders;
+using Tango.BL.Entities;
+using Tango.MachineStudio.Common;
+using Tango.MachineStudio.Common.Notifications;
+
+namespace Tango.MachineStudio.RML.ViewModels
+{
+ public class MainViewVM : StudioViewModel
+ {
+ private INotificationProvider _notification;
+
+ private ObservablesContext _rmls_context;
+ private ObservablesContext _active_context;
+
+ private ObservableCollection<Rml> _rmls;
+ public ObservableCollection<Rml> Rmls
+ {
+ get { return _rmls; }
+ set { _rmls = value; RaisePropertyChangedAuto(); }
+ }
+
+ private Rml _selectedRML;
+ public Rml SelectedRML
+ {
+ get { return _selectedRML; }
+ set { _selectedRML = value; RaisePropertyChangedAuto(); OnSelectedRmlChanged(); }
+ }
+
+ private Rml _activeRML;
+ public Rml ActiveRML
+ {
+ get { return _activeRML; }
+ set { _activeRML = value; RaisePropertyChangedAuto(); }
+ }
+
+ public MainViewVM(INotificationProvider notificationProvider)
+ {
+ _notification = notificationProvider;
+ }
+
+ public override void OnApplicationReady()
+ {
+ LoadRmls();
+ }
+
+ private void LoadRmls()
+ {
+ using (_rmls_context = ObservablesContext.CreateDefault())
+ {
+ Rmls = _rmls.ToList().ToObservableCollection();
+ }
+ }
+
+ private void OnSelectedRmlChanged()
+ {
+ if (SelectedRML != null)
+ {
+ LoadActiveRML(SelectedRML.Guid);
+ }
+ else
+ {
+ UnloadActiveRML();
+ }
+ }
+
+ private void UnloadActiveRML()
+ {
+ ActiveRML = null;
+ }
+
+ private async void LoadActiveRML(String guid)
+ {
+ using (_notification.PushTaskItem("Loading RML..."))
+ {
+ if (_active_context != null)
+ {
+ _active_context.Dispose();
+ }
+
+ _active_context = ObservablesContext.CreateDefault();
+
+ ActiveRML = await new RmlBuilder(_active_context)
+ .Set(guid)
+ .WithAllParametersGroup()
+ .WithCCT()
+ .WithLiquidFactors()
+ .BuildAsync();
+ }
+ }
+ }
+}