aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakViewVM.cs
diff options
context:
space:
mode:
authorRoy Ben Shabat <Roy.mail.net@gmail.com>2020-11-05 19:33:06 +0200
committerRoy Ben Shabat <Roy.mail.net@gmail.com>2020-11-05 19:33:06 +0200
commitb9009a814b9c91010e44534b42fa15fe164757a3 (patch)
tree007aa60379f5a519ce3c3328887c8aec4951931f /Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakViewVM.cs
parentee3f1aa159ebb326e7c7053501130afa06bf47d4 (diff)
downloadTango-b9009a814b9c91010e44534b42fa15fe164757a3.tar.gz
Tango-b9009a814b9c91010e44534b42fa15fe164757a3.zip
Completed ThreadBreak/Loading Wizards !!!
Diffstat (limited to 'Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakViewVM.cs')
-rw-r--r--Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakViewVM.cs243
1 files changed, 243 insertions, 0 deletions
diff --git a/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakViewVM.cs b/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakViewVM.cs
new file mode 100644
index 000000000..131f976c1
--- /dev/null
+++ b/Software/Visual_Studio/PPC/Tango.PPC.UI/Dialogs/ThreadBreakViewVM.cs
@@ -0,0 +1,243 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Tango.Core.Commands;
+using Tango.Core.DI;
+using Tango.Logging;
+using Tango.PPC.Common.Connection;
+using Tango.PPC.Common.Notifications;
+using Tango.SharedUI;
+
+namespace Tango.PPC.UI.Dialogs
+{
+ public class ThreadBreakViewVM : DialogViewVM
+ {
+ public enum ThreadBreakWizardResult
+ {
+ None,
+ StartThreadLoading
+ }
+
+ public enum WizardStage
+ {
+ Welcome,
+ GuidingUnits,
+ FeedingUnits,
+ Jogging,
+ TheDryer,
+ DryerClose,
+ Fixed,
+ ContactSupport,
+ }
+
+ [TangoInject]
+ private IMachineProvider MachineProvider { get; set; }
+
+ [TangoInject]
+ private INotificationProvider NotificationProvider { get; set; }
+
+ public ThreadBreakWizardResult Result { get; set; }
+
+ private WizardStage _stage;
+ public WizardStage Stage
+ {
+ get { return _stage; }
+ set { _stage = value; RaisePropertyChangedAuto(); InvalidateRelayCommands(); }
+ }
+
+ private bool _isArcHead;
+ public bool IsArcHead
+ {
+ get { return _isArcHead; }
+ set { _isArcHead = value; RaisePropertyChangedAuto(); }
+ }
+
+ public RelayCommand BackCommand { get; set; }
+
+ //Guiding Units
+ public RelayCommand GuidingUnitsFoundCantFixCommand { get; set; }
+ public RelayCommand GuidingUnitsCantFindItCommand { get; set; }
+ public RelayCommand GuidingUnitsFoundAndFixedCommand { get; set; }
+
+ //Feeding Units
+ public RelayCommand FeedingUnitsCantFixCommand { get; set; }
+ public RelayCommand FeedingUnitsFoundAndFixedCommand { get; set; }
+
+ //The Dryer
+ public RelayCommand TheDryerCantRemoveCommand { get; set; }
+ public RelayCommand TheDryerRemovedSuccessfullyCommand { get; set; }
+
+ //Dryer Close
+ public RelayCommand OpenThreadLoadingWizardCommand { get; set; }
+
+ public ThreadBreakViewVM()
+ {
+ CanClose = true;
+ TangoIOC.Default.Inject(this);
+
+ MachineProvider.MachineOperator.MachineEventsStateProvider.EventsChanged += MachineEventsStateProvider_EventsChanged;
+ MachineProvider.MachineDisconnected += MachineProvider_MachineDisconnected;
+
+ IsArcHead = MachineProvider.Machine.MachineHeadType == BL.Enumerations.HeadTypes.Arc;
+
+ BackCommand = new RelayCommand(GoBack, CanGoBack);
+
+ //Guiding Units Commands
+ GuidingUnitsFoundCantFixCommand = new RelayCommand(GuidingUnitsFoundCantFix);
+ GuidingUnitsCantFindItCommand = new RelayCommand(GuidingUnitsCantFindIt);
+ GuidingUnitsFoundAndFixedCommand = new RelayCommand(GuidingUnitsFoundAndFixed);
+
+ //Feeding Units Commands
+ FeedingUnitsCantFixCommand = new RelayCommand(FeedingUnitsCantFix);
+ FeedingUnitsFoundAndFixedCommand = new RelayCommand(FeedingUnitsFoundAndFixed);
+
+ //The Dryer Commands
+ TheDryerRemovedSuccessfullyCommand = new RelayCommand(TheDryerRemovedSuccessfully);
+ TheDryerCantRemoveCommand = new RelayCommand(TheDryerCantRemove);
+
+ OpenThreadLoadingWizardCommand = new RelayCommand(OpenThreadLoadingWizard, () => !MachineProvider.MachineOperator.MachineEventsStateProvider.Events.Any(x => x.Type == BL.Enumerations.EventTypes.DRYER_DOOR_OPEN));
+ }
+
+ private void MachineProvider_MachineDisconnected(object sender, EventArgs e)
+ {
+ InvokeUI(() =>
+ {
+ Cancel();
+ });
+ }
+
+ private void MachineEventsStateProvider_EventsChanged(object sender, IEnumerable<BL.Entities.MachinesEvent> e)
+ {
+ InvalidateRelayCommands();
+ }
+
+ #region Back
+
+ private bool CanGoBack()
+ {
+ return Stage != WizardStage.GuidingUnits &&
+ Stage != WizardStage.Jogging &&
+ Stage != WizardStage.Fixed;
+ }
+
+ private void GoBack()
+ {
+ switch (Stage)
+ {
+ case WizardStage.FeedingUnits:
+ Stage = WizardStage.GuidingUnits;
+ break;
+ case WizardStage.TheDryer:
+ Stage = WizardStage.GuidingUnits;
+ break;
+ case WizardStage.ContactSupport:
+ Stage = WizardStage.TheDryer;
+ break;
+ case WizardStage.DryerClose:
+ Stage = WizardStage.TheDryer;
+ break;
+ }
+ }
+
+ #endregion
+
+ #region Guiding Units Commands
+
+ private async void GuidingUnitsFoundAndFixed()
+ {
+ Stage = WizardStage.Jogging;
+
+ try
+ {
+ await MachineProvider.MachineOperator.AttemptThreadJogging();
+ Stage = WizardStage.Fixed;
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, LogCategory.Warning, "Error occurred while attempting to perform thread jogging.");
+ Stage = WizardStage.FeedingUnits;
+ }
+ }
+
+ private void GuidingUnitsCantFindIt()
+ {
+ Stage = WizardStage.FeedingUnits;
+ }
+
+ private void GuidingUnitsFoundCantFix()
+ {
+ Stage = WizardStage.TheDryer;
+ }
+
+ #endregion
+
+ #region Feeding Units Commands
+
+ private void FeedingUnitsCantFix()
+ {
+ Stage = WizardStage.TheDryer;
+ }
+
+ private async void FeedingUnitsFoundAndFixed()
+ {
+ Stage = WizardStage.Jogging;
+
+ try
+ {
+ await MachineProvider.MachineOperator.AttemptThreadJogging();
+ Stage = WizardStage.Fixed;
+ }
+ catch (Exception ex)
+ {
+ LogManager.Log(ex, LogCategory.Warning, "Error occurred while attempting to perform thread jogging.");
+ Stage = WizardStage.TheDryer;
+ }
+ }
+
+ #endregion
+
+ #region The Dryer Commands
+
+ private void TheDryerCantRemove()
+ {
+ Stage = WizardStage.ContactSupport;
+ }
+
+ private void TheDryerRemovedSuccessfully()
+ {
+ Stage = WizardStage.DryerClose;
+ }
+
+ #endregion
+
+ #region Dryer Close Commands
+
+ private void OpenThreadLoadingWizard()
+ {
+ Result = ThreadBreakWizardResult.StartThreadLoading;
+ Accept();
+ }
+
+ #endregion
+
+ protected override void Accept()
+ {
+ base.Accept();
+ CleanUp();
+ }
+
+ protected override void Cancel()
+ {
+ base.Cancel();
+ CleanUp();
+ }
+
+ private void CleanUp()
+ {
+ MachineProvider.MachineOperator.MachineEventsStateProvider.EventsChanged -= MachineEventsStateProvider_EventsChanged;
+ MachineProvider.MachineDisconnected -= MachineProvider_MachineDisconnected;
+ }
+ }
+}