Пример #1
0
        private void ConditionControlDeleted(object sender, EventArgs e)
        {
            DiscrepancyControlLight control = (DiscrepancyControlLight)sender;
            Discrepancy             cond    = control.Discrepancy;

            if (cond.ItemId > 0 && MessageBox.Show("Do you really want to delete Discrepancy?", "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);
                }

                if (panelDiscrepancies.Controls.Contains(control))
                {
                    panelDiscrepancies.Controls.Remove(control);
                }
                else if (panelMEL.Controls.Contains(control))
                {
                    panelMEL.Controls.Remove(control);
                }
                else if (panelOldMEL.Controls.Contains(control))
                {
                    panelOldMEL.Controls.Remove(control);
                }

                control.Deleted -= ConditionControlDeleted;
                control.Dispose();
            }
            else if (cond.ItemId <= 0)
            {
                if (panelDiscrepancies.Controls.Contains(control))
                {
                    panelDiscrepancies.Controls.Remove(control);
                }
                else if (panelMEL.Controls.Contains(control))
                {
                    panelMEL.Controls.Remove(control);
                }
                else if (panelOldMEL.Controls.Contains(control))
                {
                    panelOldMEL.Controls.Remove(control);
                }
                control.Deleted -= ConditionControlDeleted;
                control.Dispose();
            }

            if (panelDiscrepancies.Controls.OfType <DiscrepancyControlLight>().Count() < 4)
            {
                linkLabelAddNew.Enabled = true;
            }
        }
Пример #2
0
        private void LinkLabelAddNewLinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            panelDiscrepancies.Controls.Remove(panelAdd);
            // Добавляем контрол - неисправность
            _discrepanciesCount++;
            var d = new DiscrepancyControlLight(new Discrepancy {
                ParentFlight = Flight
            }, Discrepancies);

            d.Index    = _discrepanciesCount;
            d.Station  = _station;
            d.RTSDate  = _rtsDate;
            d.Extended = true;
            d.EnableExtendedControl = false;
            d.Deleted += ConditionControlDeleted;

            panelDiscrepancies.Controls.Add(d);
            panelDiscrepancies.Controls.Add(panelAdd);

            if (panelDiscrepancies.Controls.OfType <DiscrepancyControlLight>().Count() >= 4)
            {
                linkLabelAddNew.Enabled = false;
            }
        }
Пример #3
0
        /*
         * Реализация
         */

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

            foreach (Control control in panelDiscrepancies.Controls)
            {
                if (control is DiscrepancyControlLight)
                {
                    ((DiscrepancyControlLight)control).Deleted -= ConditionControlDeleted;
                    control.Dispose();
                }
                else if (control != panelAdd)
                {
                    control.Dispose();
                }
            }
            panelDiscrepancies.Controls.Clear();

            foreach (Control control in panelMEL.Controls)
            {
                if (control is DiscrepancyControlLight)
                {
                    ((DiscrepancyControlLight)control).Deleted -= ConditionControlDeleted;
                    control.Dispose();
                }
            }
            panelMEL.Controls.Clear();

            foreach (Control control in panelOldMEL.Controls)
            {
                if (control is DiscrepancyControlLight)
                {
                    ((DiscrepancyControlLight)control).Deleted -= ConditionControlDeleted;
                    control.Dispose();
                }
            }
            panelOldMEL.Controls.Clear();

            #endregion

            #region Добавление неисправностей

            var discrepancies = Flight != null && Flight.Discrepancies != null
                                              ? Flight.Discrepancies.Where(d => d.DirectiveId <= 0).ToList()
                                              : new List <Discrepancy>();

            int count = discrepancies.Count;

            for (int i = 0; i < count; i++)
            {
                // Добавляем разделитель
                if (i > 0)
                {
                    Delimiter delimiter = new Delimiter
                    {
                        Style       = DelimiterStyle.Solid,
                        Orientation = DelimiterOrientation.Horizontal,
                        Margin      = new Padding(0, 10, 0, 10),
                        Width       = 1000
                    };
                    panelDiscrepancies.Controls.Add(delimiter);
                }

                // Добавляем контрол - неисправность
                _discrepanciesCount++;
                DiscrepancyControlLight d = new DiscrepancyControlLight
                {
                    Index = _discrepanciesCount,
                    EnableExtendedControl = count >= 2,
                    _discrepancies        = Discrepancies
                };
                d.Deleted += ConditionControlDeleted;
                if (Flight != null && i < discrepancies.Count)
                {
                    d.Discrepancy = discrepancies[i];
                    if (discrepancies[i].Description == "")
                    {
                        d.Discrepancy.Description = "No";
                    }
                }
                else if (Flight != null) // Не будем создавать Discrepancy, если объект Flight не задан - черевато дальнейшими ошибками
                {
                    Discrepancy discrepancy = new Discrepancy();
                    d.Discrepancy = discrepancy;
                }
                _discrepanciesCount++;
                panelDiscrepancies.Controls.Add(d);
            }
            panelDiscrepancies.Controls.Add(panelAdd);

            #endregion

            #region Добавление неисправностей MEL

            var mels = Flight != null && Flight.Discrepancies != null
                                              ? Flight.Discrepancies.Where(d => d.DirectiveId > 0).ToList()
                                              : new List <Discrepancy>();

            count = mels.Count();

            for (int i = 0; i < count; i++)
            {
                // Добавляем разделитель
                if (i > 0)
                {
                    Delimiter delimiter = new Delimiter
                    {
                        Style       = DelimiterStyle.Solid,
                        Orientation = DelimiterOrientation.Horizontal,
                        Margin      = new Padding(0, 10, 0, 10),
                        Width       = 1000
                    };
                    panelMEL.Controls.Add(delimiter);
                }

                // Добавляем контрол - неисправность
                _discrepanciesCount++;
                DiscrepancyControlLight d = new DiscrepancyControlLight
                {
                    Index = _discrepanciesCount,
                    EnableExtendedControl = count >= 2
                };
                d.Deleted += ConditionControlDeleted;
                if (Flight != null && i < mels.Count())
                {
                    d.Discrepancy = mels[i];
                    if (mels[i].Description == "")
                    {
                        d.Discrepancy.Description = "No";
                    }
                }
                else if (Flight != null) // Не будем создавать Discrepancy, если объект Flight не задан - черевато дальнейшими ошибками
                {
                    Discrepancy discrepancy = new Discrepancy();
                    d.Discrepancy = discrepancy;
                }
                _discrepanciesCount++;
                panelMEL.Controls.Add(d);
            }

            #endregion

            #region Добавление неисправностей с прошлых полетов, незакрытых на тек. полет

            count = 0;
            if (Flight != null && Flight.UnclosedDiscrepancies != null)
            {
                count = Flight.UnclosedDiscrepancies.Count;
            }

            for (int i = 0; i < count; i++)
            {
                // Добавляем разделитель
                if (i > 0)
                {
                    Delimiter delimiter = new Delimiter
                    {
                        Style       = DelimiterStyle.Solid,
                        Orientation = DelimiterOrientation.Horizontal,
                        Margin      = new Padding(0, 10, 0, 10),
                        Width       = 1000
                    };
                    panelOldMEL.Controls.Add(delimiter);
                }

                // Добавляем контрол - неисправность
                var d = new DiscrepancyControlLight
                {
                    EnableExtendedControl = count >= 2
                };

                d.Deleted += ConditionControlDeleted;
                if (Flight != null && Flight.UnclosedDiscrepancies != null && i < Flight.UnclosedDiscrepancies.Count)
                {
                    d.Discrepancy = Flight.UnclosedDiscrepancies[i];
                    if (Flight.UnclosedDiscrepancies[i].Description == "")
                    {
                        d.Discrepancy.Description = "No";
                    }
                }
                else if (Flight != null) // Не будем создавать Discrepancy, если объект Flight не задан - черевато дальнейшими ошибками
                {
                    Discrepancy discrepancy = new Discrepancy();
                    d.Discrepancy = discrepancy;
                }
                panelOldMEL.Controls.Add(d);
            }

            #endregion
        }