/*
         * Перегружаемые методы
         */

        #region public override void ApplyChanges()
        /// <summary>
        /// Применить к объекту сделанные изменения на контроле.
        /// Если не все данные удовлетворяют формату ввода (например при вводе чисел), свойства объекта не изменяются, возвращается false
        /// Вызов base.ApplyChanges() обязателен
        /// </summary>
        /// <returns></returns>
        public override void ApplyChanges()
        {
            // Применяем сделанные изменения объектам
            for (int i = 0; i < flowLayoutPanelMain.Controls.Count; i++)
            {
                EngineGeneralConditionControl d = flowLayoutPanelMain.Controls[i] as EngineGeneralConditionControl;
                if (d != null)
                {
                    d.ApplyChanges();
                    EnginesGeneralCondition genCond = d.EngineGeneral;
                    if (genCond == null)
                    {
                        return;
                    }
                    foreach (EngineCondition cond in genCond.EngineConditions)
                    {
                        if (Flight != null && Flight.EngineConditionCollection != null && !ConditionExists(cond))
                        {
                            Flight.EngineConditionCollection.Add(cond);
                        }
                    }
                }
            }
            base.ApplyChanges();
        }
        private void ConditionControlDeleted(object sender, EventArgs e)
        {
            EngineGeneralConditionControl control = (EngineGeneralConditionControl)sender;
            EnginesGeneralCondition       cond    = control.EngineGeneral;

            if (cond.EngineConditions.Count > 0 && MessageBox.Show("Do you really want to delete engine condition?", "Deleting confirmation", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
            {
                //если информация о состоянии сохранена в БД
                //и получен положительный ответ на ее удаление
                foreach (EngineCondition ec in cond.EngineConditions)
                {
                    try
                    {
                        GlobalObjects.CasEnvironment.NewKeeper.Delete(ec);
                    }
                    catch (Exception ex)
                    {
                        Program.Provider.Logger.Log("Error while removing data", ex);
                    }
                }
                flowLayoutPanelMain.Controls.Remove(control);
                control.Deleted -= ConditionControlDeleted;
                control.Dispose();
            }
        }
        /*
         * Реализация
         */

        #region private void BuildControls()
        /// <summary>
        /// Строит нужные контролы
        /// </summary>
        private void BuildControls()
        {
            // Освобождаем старые контролы

            if (Flight != null && Flight.EngineConditionCollection.Count > 0)
            {
                var aircraft = GlobalObjects.AircraftsCore.GetAircraftById(Flight.AircraftId);

                flowLayoutPanelMain.Controls.Clear();
                flowLayoutPanelMain.Controls.Remove(panelAdd);

                //группировка данных по времени замера
                List <IGrouping <TimeSpan, EngineCondition> > groupConditions =
                    Flight.EngineConditionCollection.GroupBy(e => e.TimeGMT).ToList();

                //создание для каждой группы нового элемента EngineGeneralCondition
                //и EngineGeneralConditionControl и помещение их на панель
                foreach (IGrouping <TimeSpan, EngineCondition> condition in groupConditions)
                {
                    EnginesGeneralCondition engineGeneral = new EnginesGeneralCondition(condition.First());
                    engineGeneral.EngineConditions.AddRange(condition.ToArray());

                    EngineGeneralConditionControl egc = new EngineGeneralConditionControl(aircraft, engineGeneral);
                    egc.Deleted += ConditionControlDeleted;
                    flowLayoutPanelMain.Controls.Add(egc);
                }
                flowLayoutPanelMain.Controls.Add(panelAdd);
            }
        }
Пример #4
0
        /*
         * Перегружаемые методы
         */

        #region public override void ApplyChanges()
        /// <summary>
        /// Применить к объекту сделанные изменения на контроле.
        /// Если не все данные удовлетворяют формату ввода (например при вводе чисел), свойства объекта не изменяются, возвращается false
        /// Вызов base.ApplyChanges() обязателен
        /// </summary>
        /// <returns></returns>
        public override void ApplyChanges()
        {
            // Заполняем общие данные о проведении измерений
            if (Flight != null)
            {
                EnginesGeneralCondition egc = Flight.EnginesGeneralCondition;
                egc.PressALT = textPressAlt.Text;
                TimeSpan time;
                if (TimeSpan.TryParse(textGMT.Text, out time))
                {
                    egc.TimeGMT = time;
                }
                egc.GrossWeight = UsefulMethods.StringToDouble(textGrossWeight.Text);
                egc.IAS         = UsefulMethods.StringToDouble(textIAS.Text);
                egc.MACH        = UsefulMethods.StringToDouble(textMach.Text);
                egc.TAT         = UsefulMethods.StringToDouble(textTAT.Text);
                egc.OAT         = UsefulMethods.StringToDouble(textOAT.Text);
            }

            // Заполняем данные о первом двигателе
            if (Flight != null && Flight.EngineConditions != null && Flight.EngineConditions.Length >= 1)
            {
                EngineCondition eng = Flight.EngineConditions[0];
                eng.EPR            = UsefulMethods.StringToDouble(textERP1.Text);
                eng.N1             = UsefulMethods.StringToDouble(textN11.Text);
                eng.EGT            = UsefulMethods.StringToDouble(textEGT1.Text);
                eng.N2             = UsefulMethods.StringToDouble(textN21.Text);
                eng.OilTemperature = UsefulMethods.StringToDouble(textOilTemperature1.Text);
                eng.OilPressure    = UsefulMethods.StringToDouble(textOilPressure1.Text);
                eng.FuelFlow       = UsefulMethods.StringToDouble(textFuelFlow1.Text);
                eng.FuelBurn       = UsefulMethods.StringToDouble(textFuelBurn1.Text);
            }

            // Заполняем данные о первом двигателе
            if (Flight != null && Flight.EngineConditions != null && Flight.EngineConditions.Length >= 2)
            {
                EngineCondition eng = Flight.EngineConditions[1];
                eng.EPR            = UsefulMethods.StringToDouble(textERP2.Text);
                eng.N1             = UsefulMethods.StringToDouble(textN12.Text);
                eng.EGT            = UsefulMethods.StringToDouble(textEGT2.Text);
                eng.N2             = UsefulMethods.StringToDouble(textN22.Text);
                eng.OilTemperature = UsefulMethods.StringToDouble(textOilTemperature2.Text);
                eng.OilPressure    = UsefulMethods.StringToDouble(textOilPressure2.Text);
                eng.FuelFlow       = UsefulMethods.StringToDouble(textFuelFlow2.Text);
                eng.FuelBurn       = UsefulMethods.StringToDouble(textFuelBurn2.Text);
            }

            //
            base.ApplyChanges();
        }
Пример #5
0
        ///<summary>
        /// Конструктор, создает ЭУ на онснове самолета
        ///</summary>
        public EngineGeneralConditionControl(Aircraft aircraft)
            : this()
        {
            if (aircraft == null)
            {
                return;
            }
            _currentAircraft = aircraft;

            var baseDetailTypeIds  = new[] { BaseComponentType.Apu.ItemId, BaseComponentType.Engine.ItemId };
            var aircraftBaseDetail = GlobalObjects.ComponentCore.GetAicraftBaseComponents(_currentAircraft.ItemId, baseDetailTypeIds).ToList();

            var conditions = aircraftBaseDetail.Select(baseDetail => new EngineCondition {
                Engine = baseDetail
            }).ToList();
            var general = new EnginesGeneralCondition();

            general.EngineConditions.AddRange(conditions.ToArray());
            AttachedObject = general;
        }
Пример #6
0
 ///<summary>
 /// Конструктор, создает ЭУ на онснове самолета и Группированной записи по состояниям двигателей
 ///</summary>
 public EngineGeneralConditionControl(Aircraft aircraft, EnginesGeneralCondition engineGeneral) : this()
 {
     _currentAircraft = aircraft;
     AttachedObject   = engineGeneral;
 }