diff --git a/AccordionBus/AccordionBus/FormBusConfig.cs b/AccordionBus/AccordionBus/FormBusConfig.cs index 90e8f71..2578a4c 100644 --- a/AccordionBus/AccordionBus/FormBusConfig.cs +++ b/AccordionBus/AccordionBus/FormBusConfig.cs @@ -22,7 +22,7 @@ namespace AccordionBus /// /// Событие /// - private event BusDelegate EventAddBus; + private event Action EventAddBus; /// /// Конструктор /// @@ -37,6 +37,7 @@ namespace AccordionBus panelWhite.MouseDown += PanelColor_MouseDown; panelYellow.MouseDown += PanelColor_MouseDown; panelBlue.MouseDown += PanelColor_MouseDown; + buttonCancel.Click += (s, e) => Close(); } /// /// Отрисовать автобус @@ -53,11 +54,11 @@ namespace AccordionBus /// Добавление события /// /// - public void AddEvent(BusDelegate ev) + public void AddEvent(Action ev) { if (EventAddBus == null) { - EventAddBus = new BusDelegate(ev); + EventAddBus = new(ev); } else { @@ -118,13 +119,14 @@ namespace AccordionBus (sender as Control).DoDragDrop((sender as Control).BackColor, DragDropEffects.Move | DragDropEffects.Copy); } /// - /// Проверка получаемой информации (ее типа на соответствие требуемому) + /// Устанавливает статус перемещаемых данных /// - /// /// - private void LabelBaseColor_DragEnter(object sender, DragEventArgs e) + /// Тип которого должны соответствовать перемещаемые данные + /// Условие на возможность копирования данных + private void SetDragEffect(DragEventArgs e, Type needTypeData, bool condition) { - if (e.Data.GetDataPresent(typeof(Color))) + if (e.Data.GetDataPresent(needTypeData) && condition) { e.Effect = DragDropEffects.Copy; } @@ -134,13 +136,30 @@ namespace AccordionBus } } /// + /// Проверка получаемой информации (ее типа на соответствие требуемому) + /// + /// + /// + private void LabelBaseColor_DragEnter(object sender, DragEventArgs e) => SetDragEffect(e, typeof(Color), _bus != null); + private void LabelDopColor_DragEnter(object sender, DragEventArgs e) => SetDragEffect(e, typeof(Color), _bus != null && _bus is DrawningAccordionBus); + /// /// Принимаем основной цвет /// /// /// private void LabelBaseColor_DragDrop(object sender, DragEventArgs e) { - // TODO Call method from object _car and set color + var color = (Color)e.Data.GetData(typeof(Color)); + if (_bus is DrawningAccordionBus) + { + var a = (EntityAccordionBus)_bus.Bus; + _bus = new DrawningAccordionBus(a.Speed, a.Weight, color, a.DopColor, a.Compartment, a.RearviewMirror, a.BusNumber); + } + else if (_bus is DrawningBus) + { + _bus = new DrawningBus(_bus.Bus.Speed, _bus.Bus.Weight, color); + } + DrawBus(); } /// /// Принимаем дополнительный цвет @@ -149,7 +168,13 @@ namespace AccordionBus /// private void LabelDopColor_DragDrop(object sender, DragEventArgs e) { - // TODO Call method from object _car if _car is DrawningSportCar and set dop color + var color = (Color)e.Data.GetData(typeof(Color)); + if (_bus is DrawningAccordionBus) + { + var a = (EntityAccordionBus)_bus.Bus; + _bus = new DrawningAccordionBus(a.Speed, a.Weight, a.BodyColor, color, a.Compartment, a.RearviewMirror, a.BusNumber); + } + DrawBus(); } /// /// Добавление автобуса diff --git a/AccordionBus/AccordionBus/FormMapWithSetBuses.cs b/AccordionBus/AccordionBus/FormMapWithSetBuses.cs index fafe204..6812f8f 100644 --- a/AccordionBus/AccordionBus/FormMapWithSetBuses.cs +++ b/AccordionBus/AccordionBus/FormMapWithSetBuses.cs @@ -106,33 +106,35 @@ namespace AccordionBus } } /// - /// Добавление объекта + /// Вызов формы для создания автобуса /// /// /// private void ButtonAddBus_Click(object sender, EventArgs e) { - var formBusConfig = new FormBusConfig(); - // TODO Call method AddEvent from formCarConfig - formBusConfig.Show(); - //if (listBoxMaps.SelectedIndex == -1) - //{ - // return; - //} - //FormBus form = new(); - //if (form.ShowDialog() == DialogResult.OK) - //{ - // DrawningObjectBus bus = new(form.SelectedBus); - // if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] + bus != -1) - // { - // MessageBox.Show("Объект добавлен"); - // pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); - // } - // else - // { - // MessageBox.Show("Не удалось добавить объект"); - // } - //} + FormBusConfig formBus = new(); + formBus.AddEvent(new(AddBus)); + formBus.Show(); + } + /// + /// Добавление объекта + /// + /// + private void AddBus(DrawningBus bus) + { + if (listBoxMaps.SelectedIndex == -1) + { + MessageBox.Show("Перед добавлением объекта необходимо создать карту"); + } + else if (_mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty] + new DrawningObjectBus(bus) != -1) + { + MessageBox.Show("Объект добавлен"); + pictureBox.Image = _mapsCollection[listBoxMaps.SelectedItem?.ToString() ?? string.Empty].ShowSet(); + } + else + { + MessageBox.Show("Не удалось добавить объект"); + } } /// /// Удаление объекта