Example #1
0
        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;
        }