public void SelectionChanged(PositionedControlComponent selectedComponent)
        {
            if (selectedComponent.IsSelected && !isShiftDown)
            {
                foreach (PositionedControlComponent component in PositionedControlComponents.Except(Enumerables.Create(selectedComponent)))
                {
                    component.IsSelected = false;
                }

                Changed();
            }
        }
        void InsertLength(double length)
        {
            if (PositionedControlComponents.Any(positionedControlComponent => positionedControlComponent.IsSelected))
            {
                return;
            }

            double newCurveLength = Comparables.Maximum(1, nextSpecification.CurveLength + length);

            ChangeCurveLength(newCurveLength);

            curveOptimizer.Submit(nextSpecification);
        }