/* * Перегружаемые методы */ #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); } }
/* * Перегружаемые методы */ #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(); }
///<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; }
///<summary> /// Конструктор, создает ЭУ на онснове самолета и Группированной записи по состояниям двигателей ///</summary> public EngineGeneralConditionControl(Aircraft aircraft, EnginesGeneralCondition engineGeneral) : this() { _currentAircraft = aircraft; AttachedObject = engineGeneral; }