Пример #1
0
        /*
         * Перегружаемые методы
         */

        #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++)
            {
                PowerUnitRunupControl c = flowLayoutPanelMain.Controls[i] as PowerUnitRunupControl;
                if (c == null)
                {
                    continue;
                }
                c.ApplyChanges();
                if (Flight != null && Flight.RunupsCollection != null && !ConditionExists(c.Runup))
                {
                    Flight.RunupsCollection.Add(c.Runup);
                }
            }

            /*
             * Все изменения сохранены в коллекции
             *
             * Здесь необходимо сохранить внесенные данные
             * Коллекция является StringConvertibleCollection и не имеет отдельной таблицы в базе данных,
             * а хранится в качестве поля таблицы AircraftFlights
             */

            //
            base.ApplyChanges();
        }
Пример #2
0
        private void RunUpControlDeleted(object sender, EventArgs e)
        {
            PowerUnitRunupControl control = (PowerUnitRunupControl)sender;
            RunUp cond = control.Runup;

            if (cond.ItemId > 0 && MessageBox.Show("Do you really want to delete run-up?", "Deleting confirmation", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
            {
                //если информация о состоянии сохранена в БД
                //и получен положительный ответ на ее удаление
                try
                {
                    GlobalObjects.NewKeeper.Delete(cond);
                }
                catch (Exception ex)
                {
                    Program.Provider.Logger.Log("Error while removing data", ex);
                }

                flowLayoutPanelMain.Controls.Remove(control);
                control.Deleted         -= RunUpControlDeleted;
                control.WorkTimeChanged -= RunUpControlWorkTimeChanged;
                control.Dispose();
            }
            else if (cond.ItemId <= 0)
            {
                flowLayoutPanelMain.Controls.Remove(control);
                control.Deleted         -= RunUpControlDeleted;
                control.WorkTimeChanged -= RunUpControlWorkTimeChanged;
                control.Dispose();
            }
        }
Пример #3
0
        /*
         * Реализация
         */

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

            if (Flight != null && Flight.RunupsCollection != null)
            {
                var aircraft = GlobalObjects.AircraftsCore.GetAircraftById(Flight.AircraftId);

                List <RunUp> runUps =
                    Flight.RunupsCollection.ToArray().Where(r => r.BaseComponent.BaseComponentType.ItemId == _componentType.ItemId).
                    ToList();
                //группировка запусков по ИД детали и определение первого запуска в каждой группе
                List <RunUp> firsts =
                    Flight.RunupsCollection.GroupBy(r => r.BaseComponentId).Select(ups => ups.First()).ToList();
                for (int i = 0; i < runUps.Count; i++)
                {
                    // Добавляем контрол для ввода данных по запускам
                    PowerUnitRunupControl c =
                        new PowerUnitRunupControl(aircraft,
                                                  Flight,
                                                  runUps[i])
                    {
                        DetailLabelText = _componentType.ToString(),
                        FligthDate      = _flightDate,
                    };
                    if (i > 0)
                    {
                        c.ShowHeaders = false;
                    }
                    //если добавляемый запуск является первым в группе, то блокируется список выбора
                    foreach (RunUp first in firsts)
                    {
                        if (runUps[i] == first)
                        {
                            c.EnableDetailCombobox = false;
                        }
                        else
                        {
                            c.Deleted += RunUpControlDeleted;
                        }
                    }
                    c.WorkTimeChanged += RunUpControlWorkTimeChanged;
                    flowLayoutPanelMain.Controls.Add(c);

                    RunUpControlWorkTimeChanged(c, null);
                }
            }

            flowLayoutPanelMain.Controls.Add(panelAddRunUp);
        }
Пример #4
0
 /// <summary>
 /// Проверяет введенные данные.
 /// Если какое-либо поле не подходит по формату, следует сразу кидать MessageBox, ставить курсор в необходимое поле и возвращать false в качестве результата метода
 /// </summary>
 /// <returns></returns>
 public override bool CheckData()
 {
     // Проверяем введенные данные
     for (int i = 0; i < flowLayoutPanelMain.Controls.Count; i++)
     {
         PowerUnitRunupControl c = flowLayoutPanelMain.Controls[i] as PowerUnitRunupControl;
         if (c != null)
         {
             if (!c.CheckData())
             {
                 Visible = true;
                 return(false);
             }
         }
     }
     // Все данные введены корректно
     return(true);
 }
Пример #5
0
        private void LinkLabelAddNewLinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            var aircraft = GlobalObjects.AircraftsCore.GetAircraftById(Flight.AircraftId);
            PowerUnitRunupControl performance =
                new PowerUnitRunupControl(aircraft, _componentType)
            {
                FligthDate = _flightDate,
            };

            performance.Deleted         += RunUpControlDeleted;
            performance.WorkTimeChanged += RunUpControlWorkTimeChanged;
            if (flowLayoutPanelMain.Controls.Count > 1)
            {
                performance.ShowHeaders = false;
            }
            flowLayoutPanelMain.Controls.Remove(panelAddRunUp);
            flowLayoutPanelMain.Controls.Add(performance);
            flowLayoutPanelMain.Controls.Add(panelAddRunUp);
        }