private void cylinderFunctionWithGasPressure_Force_FunctionChanged(object sender, FunctionEventArgs e)
        {
            CylinderFunctionWithGasPressure _cylinderFunctionWithGasPressure = (CylinderFunctionWithGasPressure)sender;

            #region "requires harmonic order"
            bool _requiresHarmonicOrder = false;
            if (e.FunctionInfoBase is FunctionInfoKinematic)
            {
                FunctionInfoKinematic _functionInfoKinematic = (FunctionInfoKinematic)e.FunctionInfoBase;

                if (_functionInfoKinematic.RequiresHarmonicOrder)
                {
                    _requiresHarmonicOrder = true;
                }
            }
            if (_requiresHarmonicOrder)
            {
                _cylinderFunctionWithGasPressure.ReselectHarmonicOrder();
                _cylinderFunctionWithGasPressure.EnableHarmonicOrder();
            }
            else
            {
                _cylinderFunctionWithGasPressure.DisableHarmonicOrder();
                _cylinderFunctionWithGasPressure.DeselectHarmonicOrder();
            }
            #endregion "requires harmonic order"

            #region "requires indicator function"
            bool _requiresIndicatorFunction = false;
            if (e.FunctionInfoBase is FunctionInfoForce)
            {
                FunctionInfoForce _functionInfoForce = (FunctionInfoForce)e.FunctionInfoBase;

                if (_functionInfoForce.RequiresIndicatorFunction)
                {
                    _requiresIndicatorFunction = true;
                }
            }
            if (_requiresIndicatorFunction)
            {
                _cylinderFunctionWithGasPressure.EnableCylinderPressureVsCrankAngleIndicatorFunction();
            }
            else
            {
                _cylinderFunctionWithGasPressure.DisableCylinderPressureVsCrankAngleIndicatorFunction();
            }
            #endregion "requires indicator function"


            //pokličemo kar tega, da pohendlamo še enable/disable ok buttona
            this.tabControl1_SelectedIndexChanged(base.tabControl1, new EventArgs());
        }
        protected override void OnOKButtonClicked(ref FunctionInfoBase _selectedFunction, ref bool _cancel)
        {
            base.OnOKButtonClicked(ref _selectedFunction, ref _cancel);


            if (base.tabControl1.SelectedTab == this.tabPage_Kinematics)
            {
                FunctionInfoKinematic _functionInfoKinematic = (FunctionInfoKinematic)this.cylinderFunction_Kinematics.SelectedFunction;
                _functionInfoKinematic.PositionedCylinder = cylinderFunction_Kinematics.SelectedPositionedCylinder;
                _functionInfoKinematic.HarmonicOrder      = cylinderFunction_Kinematics.SelectedHarmonicOrder;
                _functionInfoKinematic.CylinderRelative   = this.CylinderRelative;
                _selectedFunction = _functionInfoKinematic;
            }
        }
        public Form_AddAFunctionKinematics(ChartAreaInfo[] _availableChartAreas, PositionedCylinder[] _availablePositionedCylinders)
            : base(_availableChartAreas)
        {
            this.Constructor();


            this.cylinderFunction_Kinematics.AvailablePositionedCylinders = _availablePositionedCylinders;
            this.cylinderFunction_Kinematics.AvailableFunctions           = FunctionInfoKinematic.GetAvailableFunctions();

            this.cylinderFunction_Kinematics.AvailableHarmonicOrders = new HarmonicOrderInfo[]
            {
                HarmonicOrderInfo.Full,
                HarmonicOrderInfo.FirstApproximation,
                HarmonicOrderInfo.SecondApproximation,
            };
        }