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("Не удалось добавить объект");
+ }
}
///
/// Удаление объекта