public void checkEndConditionspublic(Box box) { if (m_LoadedWorkflow != null) { if (m_CurrentWorkingStepNumber < m_LoadedWorkflow.WorkingSteps.Count) { WorkingStep step = m_LoadedWorkflow.WorkingSteps.ElementAt(m_CurrentWorkingStepNumber); if (step.EndConditionObjectName == ("" + box.TriggerMessage)) { // trigger next step NextWorkingStep(AllEnums.WorkingStepEndConditionTrigger.BOX); } else { if (!box.wasRecentlyFalselyTriggered()) { OnFailStateOccured(WorkflowFailState.BOX_FAILSTATE); m_BoxErrorCounter++; if (SettingsManager.Instance.Settings.SettingsTable.EnableFaultBoxMode) { box.IsBoxErroneous = true; } } } } } }
private void onListViewDrop(object sender, DragEventArgs e) { ListBoxItem overItem = sender as ListBoxItem; var workingSteps = EditWorkflowManager.Instance.CurrentWorkflow.WorkingSteps; WorkingStep droppedData = e.Data.GetData(typeof(WorkingStep)) as WorkingStep; WorkingStep target = ((ListBoxItem)(sender)).DataContext as WorkingStep; int removedIdx = m_WorkflowListview.Items.IndexOf(droppedData); int targetIdx = m_WorkflowListview.Items.IndexOf(target); if (targetIdx != removedIdx) { workingSteps.Move(removedIdx, targetIdx); //Set step numbers int idx = 1; foreach (WorkingStep workingStep in workingSteps) { workingStep.StepNumber = idx; idx++; } } overItem.IsSelected = true; overItem.Opacity = 1.0; }
public void AddWorkingStepByDemonstration(List <AdaptiveScene> adaptiveScenes, string pName, string withdrawel, int sNumber, string endCondition, AllEnums.PBD_Mode mode) { // add the working step WorkingStep newStep = new WorkingStep(pName, withdrawel, endCondition, sNumber); newStep.StepNumber = m_HighestWorkingStepNumber + 1; newStep.Withdrawel = withdrawel; newStep.Mode = mode; if (mode == AllEnums.PBD_Mode.END_CONDITION) { newStep.createNewName(mode); } newStep.AdaptiveScenes.Clear(); // delete adaptivitylevels that are created from the usual way automatically adaptiveScenes.ForEach(aScene => newStep.AdaptiveScenes.Add(aScene)); m_HighestWorkingStepNumber += 1; m_CurrentWorkflow.AddWorkingStep(newStep); if (mode == AllEnums.PBD_Mode.BOX_WITHDRAWEL) { string stepCsv = "StepENT" + sNumber; } if (mode == AllEnums.PBD_Mode.ASSEMBLY_DONE) { string stepCsv = "StepMON" + sNumber; } }
private void m_WorkflowListview_GotFocus(object sender, RoutedEventArgs e) { //TODO Refactor to be DRY // update the SceneManager here Object o = m_WorkflowListview.SelectedItem; if (o != null) { if (o is WorkingStep) { m_FailStatesListView.IsEnabled = true; WorkingStep step = (WorkingStep)o; //SceneManager.Instance.CurrentScene = step.AdaptiveScenes.FirstOrDefault().Scene; if (m_ComboboxAdaptivityLevel.SelectedValue != null) { SceneManager.Instance.CurrentScene = step.getAdaptiveScene((int)m_ComboboxAdaptivityLevel.SelectedValue).Scene; m_FailStatesListView.ItemsSource = step.FailStates; } } } else { m_FailStatesListView.IsEnabled = false; m_FailStatesListView.ItemsSource = null; } }
private void upButton_Click(object sender, RoutedEventArgs e) { var selectedItem = treeViewWorkflow.SelectedItem; if (selectedItem is WorkingStep) { WorkingStep workingStepItem = (WorkingStep)selectedItem; int oldindex = workingStepItem.StepNumber; int index = workingStepItem.StepNumber; int currentStep = workingStepItem.StepNumber; if (currentStep > 0) { foreach (WorkingStep step in EditWorkflowManager.Instance.CurrentWorkflow.WorkingSteps) { if (step.StepNumber == currentStep - 1) { // if (step.StepNumber != oldindex - 1) // { step.StepNumber = currentStep; step.createNewName(step.Mode); // } } if (step.StepNumber == (currentStep + 1)) { } } workingStepItem.StepNumber = oldindex - 1; workingStepItem.createNewName(workingStepItem.Mode); EditWorkflowManager.Instance.CurrentWorkflow.WorkingSteps.Move(oldindex, oldindex - 1); treeViewWorkflow.DataContext = EditWorkflowManager.Instance.CurrentWorkflow; } } }
private void MenuItem_EditScene(object sender, RoutedEventArgs e) { // update the EditWorkflowManager here Object o = m_WorkflowListview.SelectedItem; if (o != null) { if (o is WorkingStep) { WorkingStep step = (WorkingStep)o; Scene.Scene scene = new Scene.Scene(); if (m_ComboboxAdaptivityLevel.SelectedValue != null) { scene = step.getAdaptiveScene((int)m_ComboboxAdaptivityLevel.SelectedValue).Scene; foreach (SceneItem itemIter in scene.Items) { itemIter.Touchy = true; } } SceneManager.Instance.CurrentScene = scene; SceneEditorDialog dlg = new SceneEditorDialog(scene); dlg.Show(); } } }
public void AddWorkingStep(string pName, string endCondition) { // add the working step WorkingStep newStep = new WorkingStep(pName, "", endCondition, 0); newStep.StepNumber = calculateHighestStepnumber() + 1; m_CurrentWorkflow.AddWorkingStep(newStep); }
private void NetworkTableMenuItemSetTrigger_Cick(object sender, RoutedEventArgs e) { Object o = listBoxNetworkTables.SelectedItem; if (m_WorkflowListview.SelectedIndex >= 0 && o is TableInfo) { WorkingStep selectedWorkingStep = (WorkingStep)m_WorkflowListview.SelectedItem; TableInfo selectedNetworkTable = (TableInfo)o; //Create new Failstate selectedWorkingStep.EndConditionObjectName = "net" + selectedNetworkTable.Id; } }
private void MenuItemSetTrigger_Cick(object sender, RoutedEventArgs e) { Object o = listBoxAssemblyZones.SelectedItem; if (m_WorkflowListview.SelectedIndex >= 0 && o is AssemblyZone) { WorkingStep selectedWorkingStep = (WorkingStep)m_WorkflowListview.SelectedItem; AssemblyZone selectedAssemblyZone = (AssemblyZone)o; //Create new Failstate selectedWorkingStep.EndConditionObjectName = selectedAssemblyZone.TriggerMessage; } }
private void MenuItemCreateErrorTrigger_Cick(object sender, RoutedEventArgs e) { Object o = listBoxAssemblyZones.SelectedItem; if (m_WorkflowListview.SelectedIndex >= 0 && o is AssemblyZone) { WorkingStep selectedWorkingStep = (WorkingStep)m_WorkflowListview.SelectedItem; AssemblyZone selectedAssemblyZone = (AssemblyZone)o; //Create new Failstate selectedWorkingStep.CreateFailState(selectedAssemblyZone.TriggerMessage); } }
private void buttonRemoveWorkingStep_Click(object sender, RoutedEventArgs e) { // delete currently selected item var selectedItem = treeViewWorkflow.SelectedItem; if (selectedItem is WorkingStep) { WorkingStep workingStepItem = (WorkingStep)selectedItem; EditWorkflowManager.Instance.CurrentWorkflow.WorkingSteps.Remove(workingStepItem); EditWorkflowManager.Instance.CurrentWorkingStepNumber -= 1; EditWorkflowManager.Instance.HighestWorkingStepNumber = EditWorkflowManager.Instance.HighestWorkingStepNumber; } }
private void MenuItemDeleteErrorState_Click(object sender, RoutedEventArgs e) { Object o = m_WorkflowListview.SelectedItem; int idxFailState = m_FailStatesListView.SelectedIndex; if (o != null && idxFailState >= 0) { if (o is WorkingStep) { WorkingStep step = (WorkingStep)o; step.FailStates.RemoveAt(idxFailState); } } }
private void m_ComboboxAdaptivityLevel_Selected(object sender, RoutedEventArgs e) { // update the SceneManager here Object o = m_WorkflowListview.SelectedItem; if (o != null) { if (o is WorkingStep) { WorkingStep step = (WorkingStep)o; //SceneManager.Instance.CurrentScene = step.AdaptiveScenes.FirstOrDefault().Scene; SceneManager.Instance.CurrentScene = step.getAdaptiveScene((int)m_ComboboxAdaptivityLevel.SelectedValue).Scene; } } }
public EditWorkingStepDialog(WorkingStep step) { InitializeComponent(); name = step.Name; endCondition = step.EndConditionObjectName; timeOut = step.TimeOut; expectedDuration = step.ExpectedDuration; isManualStep = step.IsManualStep; isQSStep = step.IsQSStep; textBoxName.Text = name; textBoxEndCondition.Text = endCondition; inputTimeOut.Value = timeOut; inputExpectedDuration.Value = expectedDuration; inputIsManualStep.IsChecked = isManualStep; inputIsQSStep.IsChecked = isQSStep; }
private void MenuItemPasteScene_Click(object sender, RoutedEventArgs e) { Object o = m_WorkflowListview.SelectedItem; if (o != null) { if (o is WorkingStep) { WorkingStep step = (WorkingStep)o; Scene.Scene scene = Scene.Scene.GetFromClipboard(); if (m_ComboboxAdaptivityLevel.SelectedValue != null && scene is Scene.Scene) { step.getAdaptiveScene((int)m_ComboboxAdaptivityLevel.SelectedValue).Scene = scene; SceneManager.Instance.CurrentScene = scene; } } } }
private void MenuItemCopyScene_Click(object sender, RoutedEventArgs e) { Object o = m_WorkflowListview.SelectedItem; if (o != null) { if (o is WorkingStep) { WorkingStep step = (WorkingStep)o; Scene.Scene scene = new Scene.Scene(); if (m_ComboboxAdaptivityLevel.SelectedValue != null) { scene = step.getAdaptiveScene((int)m_ComboboxAdaptivityLevel.SelectedValue).Scene; } scene.CopyToClipboard(); } } }
private void checkNetworkEndConditionspublic(object sender, PropertyChangedEventArgs e) { if (m_LoadedWorkflow != null) { if (m_CurrentWorkingStepNumber < m_LoadedWorkflow.WorkingSteps.Count) { if (sender.GetType() == typeof(NetworkTableMonitor)) { var monitor = (NetworkTableMonitor)sender; WorkingStep step = m_LoadedWorkflow.WorkingSteps.ElementAt(m_CurrentWorkingStepNumber); if (step.EndConditionObjectName.Length > 3) { //TODO: Implement proper endCondition objects var endParams = step.EndConditionObjectName.Substring(3).Split(':'); var tableId = endParams.First(); int endStep = -1; if (endParams.Length > 1) { endStep = Int32.Parse(endParams.ElementAt(1)); } var triggerNext = false; if (tableId == monitor.TableName) { if (endStep > 0 && e.PropertyName == "StepNumber" && monitor.StepNumber >= endStep) { triggerNext = true; } else if (e.PropertyName == "ProducedParts" && monitor.ProducedParts > CommunicationManager.Instance.ServerInfo.SelfStatus.ProducedParts) { triggerNext = true; } } if (triggerNext) { // trigger next step NextWorkingStep(AllEnums.WorkingStepEndConditionTrigger.NETWORK_TABLE); } } } } } }
private void createFromTableButton_Click(object sender, RoutedEventArgs e) { Object o = listBoxNetworkTables.SelectedItem; if (o != null) { if (o is TableInfo) { TableInfo tableInfo = (TableInfo)o; Scene.Scene autoScene; autoScene = new Scene.Scene(); AdaptiveScene aScene = new AdaptiveScene(autoScene, AdaptivityLevel.AdaptivityLevels.FirstOrDefault()); WorkingStep step = new WorkingStep(); step.AdaptiveScenes.Add(aScene); step.EndConditionObjectName = "net" + tableInfo.Id; EditWorkflowManager.Instance.createStep(HciLab.motionEAP.InterfacesAndDataModel.AllEnums.PBD_Mode.NETWORK_TABLE_DONE, aScene, "NetTable-" + tableInfo.Id, step.EndConditionObjectName); } } }
private void MenuItemEditWorkingStep_Click(object sender, RoutedEventArgs e) { Object o = m_WorkflowListview.SelectedItem; if (o != null) { if (o is WorkingStep) { WorkingStep step = (WorkingStep)o; EditWorkingStepDialog dlg = new EditWorkingStepDialog(step); dlg.ShowDialog(); // blocking if (dlg.wasOkay()) { step.Name = dlg.EditedName; step.EndConditionObjectName = dlg.EditedEndCondition; step.TimeOut = dlg.EditedTimeOut; step.ExpectedDuration = dlg.EditedExpectedDuration; step.IsManualStep = dlg.IsManualStep; step.IsQSStep = dlg.IsQSStep; // } } } }
public void checkEndConditionspublic(AssemblyZone zone) { if (m_LoadedWorkflow != null) { if (m_CurrentWorkingStepNumber < m_LoadedWorkflow.WorkingSteps.Count) { if (m_QSMode) { checkQSModeEndConditions(zone); } else { WorkingStep step = m_LoadedWorkflow.WorkingSteps.ElementAt(m_CurrentWorkingStepNumber); if (step.EndConditionObjectName == ("" + zone.TriggerMessage)) { // trigger next step NextWorkingStep(AllEnums.WorkingStepEndConditionTrigger.ASSEMBLY_ZONE); } int i = 0; while (step.HasFailstate(i)) { if (step.GetFailState(i).CheckForFail(zone.TriggerMessage)) { // trigger FailEvent OnFailStateOccured(step.GetFailState(i)); // Show Error Scene SceneManager.Instance.CurrentScene = step.GetFailStateScene(i); m_AssemblyErrors++; } i++; } } } } }
private void LoadCurrentWorkingStep() { if (!AdminView.Instance.Dispatcher.CheckAccess()) { AdminView.Instance.Dispatcher.Invoke(new LoadCurrentWorkingStepDelegate(LoadCurrentWorkingStep)); return; // Important to leave the culprit thread } WorkingStep step = LoadedWorkflow.WorkingSteps.ElementAt(m_CurrentWorkingStepNumber); if (step.IsQSStep && m_QSMode == false) { m_QSMode = true; NotifyPropertyChanged("QSModeEnabled"); WorkingStep stepIt = step; m_NumQS = 0; while (stepIt.IsQSStep) { m_NumQS++; stepIt = LoadedWorkflow.WorkingSteps.ElementAt(m_CurrentWorkingStepNumber + m_NumQS); } m_QSFullfilled = new bool[m_NumQS]; Array.Clear(m_QSFullfilled, 0, m_QSFullfilled.Length); } if (m_QSMode && m_CurrentWorkingStepNumber < m_LoadedWorkflow.WorkingSteps.Count - 1) { LoadQSModeScene(); } else { SceneManager.Instance.CurrentScene = step.getAdaptiveScene(m_adaptivityLevelId).Scene; BackendControl.Instance.refreshGUI(); } if (m_CurrentWorkingStepTimeOut != null) { m_CurrentWorkingStepTimeOut.Dispose(); } if (step.TimeOut > 0) { m_CurrentWorkingStepTimeOut = new WorkflowTimeTrigger(step.TimeOut); m_CurrentWorkingStepTimeOut.TimeOutTriggered += timeOutWorkstep; } if (m_CurrentWorkingStepExpectedDurationTimeOut != null) { m_CurrentWorkingStepExpectedDurationTimeOut.Dispose(); } if (step.ExpectedDuration > 0) { m_CurrentWorkingStepExpectedDurationTimeOut = new WorkflowTimeTrigger(step.ExpectedDuration); m_CurrentWorkingStepExpectedDurationTimeOut.TimeOutTriggered += timeOutExpectedDuration; } //If EndCondition depends on other Table if (m_CurrentNetworkTableDependency != null) { m_CurrentNetworkTableDependency.Dispose(); } //TODO: Change this when refactoring Endconditions altogether if (step.EndConditionObjectName.Length > 3 && step.EndConditionObjectName.Substring(0, 3) == "net") { var tableId = step.EndConditionObjectName.Substring(3).Split(':').First(); m_CurrentNetworkTableDependency = new NetworkTableMonitor(tableId); m_CurrentNetworkTableDependency.PropertyChanged += checkNetworkEndConditionspublic; } else { m_CurrentNetworkTableDependency = null; } }