public StepWrapper(StepWrapper parent, IStep element, Workout baseWorkout, bool isWorkoutLinkChild) : base(parent, element) { Debug.Assert(baseWorkout != null); m_BaseWorkout = baseWorkout; m_IsWorkoutLinkChild = isWorkoutLinkChild; }
private void AddStepsToList(List<TreeList.TreeListNode> list, List<IStep> steps, StepWrapper parent) { foreach (IStep currentStep in steps) { StepWrapper wrapper = GetStepWrapper(SelectedWorkout.ConcreteWorkout, currentStep, parent); // Reset hierarchy wrapper.Parent = null; wrapper.Children.Clear(); if (parent != null) { parent.Children.Add(wrapper); } else { list.Add(wrapper); } wrapper.Parent = parent; if (currentStep is RepeatStep) { RepeatStep concreteStep = currentStep as RepeatStep; AddStepsToList(list, concreteStep.StepsToRepeat, wrapper); } else if (currentStep is WorkoutLinkStep) { WorkoutLinkStep concreteStep = currentStep as WorkoutLinkStep; AddStepsToList(list, concreteStep.LinkedWorkoutSteps, wrapper); } } }
private StepWrapper GetStepWrapper(Workout baseWorkout, IStep step, StepWrapper parent) { StepWrapper wrapper; if (!m_StepWrapperMap.ContainsKey(baseWorkout)) { m_StepWrapperMap.Add(baseWorkout, new Dictionary<IStep, StepWrapper>()); } // If we already have a wrapper for this workout, use it if (m_StepWrapperMap[baseWorkout].ContainsKey(step)) { wrapper = m_StepWrapperMap[baseWorkout][step]; } else { bool isWorkoutLinkChild = SelectedWorkout.ParentStep != null || (parent != null && (parent.IsWorkoutLinkChild || (parent.Element as IStep) is WorkoutLinkStep)); // Create a new wrapper wrapper = new StepWrapper(parent, step, baseWorkout, isWorkoutLinkChild); m_StepWrapperMap[baseWorkout][step] = wrapper; } return wrapper; }