From 4aaeada3043c926f7a2fa4f20f9d22902aca4faa Mon Sep 17 00:00:00 2001 From: tyxz0 Date: Thu, 9 May 2024 21:43:01 +0400 Subject: [PATCH] =?UTF-8?q?=D0=B7=D0=B0=D0=BA=D0=BE=D0=BD=D1=87=D0=B5?= =?UTF-8?q?=D0=BD=D0=BD=D0=B0=D1=8F=205=D0=B0=D1=8F=20=D0=BB=D0=B0=D0=B1?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DoubleDeckerBus/Entities/EntityBus.cs | 5 + .../Entities/EntityDoubleDeckerBus.cs | 4 + .../FormBusCollection.Designer.cs | 14 -- .../DoubleDeckerBus/FormBusCollection.cs | 46 ++---- .../DoubleDeckerBus/FormBusConfig.Designer.cs | 147 +++++++++++------- .../DoubleDeckerBus/FormBusConfig.cs | 94 ++++++++++- 6 files changed, 205 insertions(+), 105 deletions(-) diff --git a/DoubleDeckerBus/DoubleDeckerBus/Entities/EntityBus.cs b/DoubleDeckerBus/DoubleDeckerBus/Entities/EntityBus.cs index e1ae78c..02fde82 100644 --- a/DoubleDeckerBus/DoubleDeckerBus/Entities/EntityBus.cs +++ b/DoubleDeckerBus/DoubleDeckerBus/Entities/EntityBus.cs @@ -42,5 +42,10 @@ public class EntityBus Weight = weight; BodyColor = bodyColor; } + + public void ChangeBodyColor(Color bodyColor) + { + BodyColor = bodyColor; + } } diff --git a/DoubleDeckerBus/DoubleDeckerBus/Entities/EntityDoubleDeckerBus.cs b/DoubleDeckerBus/DoubleDeckerBus/Entities/EntityDoubleDeckerBus.cs index d955e88..1db1247 100644 --- a/DoubleDeckerBus/DoubleDeckerBus/Entities/EntityDoubleDeckerBus.cs +++ b/DoubleDeckerBus/DoubleDeckerBus/Entities/EntityDoubleDeckerBus.cs @@ -32,4 +32,8 @@ public class EntityDoubleDeckerBus : EntityBus Stripes = stripes; } + public void ChangeAdditionalColor(Color additionalColor) + { + AdditionalColor = additionalColor; + } } \ No newline at end of file diff --git a/DoubleDeckerBus/DoubleDeckerBus/FormBusCollection.Designer.cs b/DoubleDeckerBus/DoubleDeckerBus/FormBusCollection.Designer.cs index 4a635c5..46cab0e 100644 --- a/DoubleDeckerBus/DoubleDeckerBus/FormBusCollection.Designer.cs +++ b/DoubleDeckerBus/DoubleDeckerBus/FormBusCollection.Designer.cs @@ -31,7 +31,6 @@ groupBoxTools = new GroupBox(); panelCompanyTools = new Panel(); buttonAddBus = new Button(); - buttonAddDoublrDeckerBus = new Button(); maskedTextBox = new MaskedTextBox(); buttonRefresh = new Button(); buttonRemoveBus = new Button(); @@ -70,7 +69,6 @@ // panelCompanyTools // panelCompanyTools.Controls.Add(buttonAddBus); - panelCompanyTools.Controls.Add(buttonAddDoublrDeckerBus); panelCompanyTools.Controls.Add(maskedTextBox); panelCompanyTools.Controls.Add(buttonRefresh); panelCompanyTools.Controls.Add(buttonRemoveBus); @@ -93,17 +91,6 @@ buttonAddBus.UseVisualStyleBackColor = true; buttonAddBus.Click += ButtonAddBus_Click; // - // buttonAddDoublrDeckerBus - // - buttonAddDoublrDeckerBus.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; - buttonAddDoublrDeckerBus.Location = new Point(0, 54); - buttonAddDoublrDeckerBus.Name = "buttonAddDoublrDeckerBus"; - buttonAddDoublrDeckerBus.Size = new Size(191, 35); - buttonAddDoublrDeckerBus.TabIndex = 2; - buttonAddDoublrDeckerBus.Text = "Add double-decker bus"; - buttonAddDoublrDeckerBus.UseVisualStyleBackColor = true; - buttonAddDoublrDeckerBus.Click += ButtonAddDoublrDeckerBus_Click; - // // maskedTextBox // maskedTextBox.Location = new Point(0, 95); @@ -280,7 +267,6 @@ private GroupBox groupBoxTools; private ComboBox comboBoxSelectCompany; - private Button buttonAddDoublrDeckerBus; private Button buttonAddBus; private Button buttonRemoveBus; private MaskedTextBox maskedTextBox; diff --git a/DoubleDeckerBus/DoubleDeckerBus/FormBusCollection.cs b/DoubleDeckerBus/DoubleDeckerBus/FormBusCollection.cs index 99c8d5c..ae5edc4 100644 --- a/DoubleDeckerBus/DoubleDeckerBus/FormBusCollection.cs +++ b/DoubleDeckerBus/DoubleDeckerBus/FormBusCollection.cs @@ -32,31 +32,21 @@ public partial class FormBusCollection : Form panelCompanyTools.Enabled = false; } - private void CreateObject(string type) + private void ButtonAddBus_Click(object sender, EventArgs e) { - if (_company == null) + FormBusConfig form = new(); + form.AddEvent(SetBus); + form.Show(); + } + + private void SetBus(DrawingBus bus) + { + if (_company == null || bus == null) { return; } - Random random = new(); - DrawingBus drawingBus; - switch (type) - { - case nameof(DrawingBus): - drawingBus = new DrawingBus(random.Next(100, 300), random.Next(1000, 3000), GetColor(random)); - break; - case nameof(DrawingDoubleDeckerBus): - drawingBus = new DrawingDoubleDeckerBus(random.Next(100, 300), random.Next(1000, 3000), - GetColor(random), - GetColor(random), - Convert.ToBoolean(random.Next(0, 2)), Convert.ToBoolean(random.Next(0, 2))); - break; - default: - return; - } - - if ((_company + drawingBus) != -1) + if ((_company + bus) != -1) { MessageBox.Show("Object added"); pictureBox.Image = _company.Show(); @@ -67,21 +57,7 @@ public partial class FormBusCollection : Form } } - private static Color GetColor(Random random) - { - Color color = Color.FromArgb(random.Next(0, 256), random.Next(0, 256), random.Next(0, 256)); - ColorDialog dialog = new(); - if (dialog.ShowDialog() == DialogResult.OK) - { - color = dialog.Color; - } - - return color; - } - - private void ButtonAddBus_Click(object sender, EventArgs e) => CreateObject(nameof(DrawingBus)); - - private void ButtonAddDoublrDeckerBus_Click(object sender, EventArgs e) => CreateObject(nameof(DrawingDoubleDeckerBus)); + private void ButtonRemoveBus_Click(object sender, EventArgs e) { diff --git a/DoubleDeckerBus/DoubleDeckerBus/FormBusConfig.Designer.cs b/DoubleDeckerBus/DoubleDeckerBus/FormBusConfig.Designer.cs index f9bd58e..12fe286 100644 --- a/DoubleDeckerBus/DoubleDeckerBus/FormBusConfig.Designer.cs +++ b/DoubleDeckerBus/DoubleDeckerBus/FormBusConfig.Designer.cs @@ -49,13 +49,15 @@ pictureBoxObject = new PictureBox(); buttonAdd = new Button(); buttonCancel = new Button(); - panel1 = new Panel(); + panelObject = new Panel(); + labelAdditionalColor = new Label(); + labelBaseColor = new Label(); groupBoxConfig.SuspendLayout(); groupBoxColors.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)numericUpDownWeight).BeginInit(); ((System.ComponentModel.ISupportInitialize)numericUpDownSpeed).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureBoxObject).BeginInit(); - panel1.SuspendLayout(); + panelObject.SuspendLayout(); SuspendLayout(); // // groupBoxConfig @@ -70,10 +72,10 @@ groupBoxConfig.Controls.Add(labelModifiedObject); groupBoxConfig.Controls.Add(labelSimpleObject); groupBoxConfig.Dock = DockStyle.Left; - groupBoxConfig.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); + groupBoxConfig.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); groupBoxConfig.Location = new Point(0, 0); groupBoxConfig.Name = "groupBoxConfig"; - groupBoxConfig.Size = new Size(565, 229); + groupBoxConfig.Size = new Size(456, 186); groupBoxConfig.TabIndex = 0; groupBoxConfig.TabStop = false; groupBoxConfig.Text = "Сharacteristic"; @@ -88,10 +90,10 @@ groupBoxColors.Controls.Add(panelGray); groupBoxColors.Controls.Add(panelRed); groupBoxColors.Controls.Add(panelYellow); - groupBoxColors.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); - groupBoxColors.Location = new Point(297, 12); + groupBoxColors.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); + groupBoxColors.Location = new Point(203, 9); groupBoxColors.Name = "groupBoxColors"; - groupBoxColors.Size = new Size(242, 160); + groupBoxColors.Size = new Size(242, 129); groupBoxColors.TabIndex = 8; groupBoxColors.TabStop = false; groupBoxColors.Text = "Colors"; @@ -99,17 +101,17 @@ // panelPurple // panelPurple.BackColor = Color.Purple; - panelPurple.Location = new Point(186, 97); + panelPurple.Location = new Point(186, 79); panelPurple.Name = "panelPurple"; - panelPurple.Size = new Size(40, 40); + panelPurple.Size = new Size(34, 34); panelPurple.TabIndex = 1; // // panelWhite // panelWhite.BackColor = Color.White; - panelWhite.Location = new Point(14, 97); + panelWhite.Location = new Point(14, 79); panelWhite.Name = "panelWhite"; - panelWhite.Size = new Size(40, 40); + panelWhite.Size = new Size(34, 34); panelWhite.TabIndex = 1; // // panelBlue @@ -117,7 +119,7 @@ panelBlue.BackColor = Color.Blue; panelBlue.Location = new Point(131, 29); panelBlue.Name = "panelBlue"; - panelBlue.Size = new Size(40, 40); + panelBlue.Size = new Size(34, 34); panelBlue.TabIndex = 1; // // panelGreen @@ -125,23 +127,23 @@ panelGreen.BackColor = Color.Green; panelGreen.Location = new Point(70, 29); panelGreen.Name = "panelGreen"; - panelGreen.Size = new Size(40, 40); + panelGreen.Size = new Size(34, 34); panelGreen.TabIndex = 1; // // panelBlack // panelBlack.BackColor = Color.Black; - panelBlack.Location = new Point(131, 97); + panelBlack.Location = new Point(131, 79); panelBlack.Name = "panelBlack"; - panelBlack.Size = new Size(40, 40); + panelBlack.Size = new Size(34, 34); panelBlack.TabIndex = 1; // // panelGray // panelGray.BackColor = Color.Gray; - panelGray.Location = new Point(70, 97); + panelGray.Location = new Point(70, 79); panelGray.Name = "panelGray"; - panelGray.Size = new Size(40, 40); + panelGray.Size = new Size(34, 34); panelGray.TabIndex = 1; // // panelRed @@ -149,7 +151,7 @@ panelRed.BackColor = Color.Red; panelRed.Location = new Point(14, 29); panelRed.Name = "panelRed"; - panelRed.Size = new Size(40, 40); + panelRed.Size = new Size(34, 34); panelRed.TabIndex = 0; // // panelYellow @@ -157,16 +159,16 @@ panelYellow.BackColor = Color.Yellow; panelYellow.Location = new Point(186, 29); panelYellow.Name = "panelYellow"; - panelYellow.Size = new Size(40, 40); + panelYellow.Size = new Size(34, 34); panelYellow.TabIndex = 1; // // checkBoxStripes // checkBoxStripes.AutoSize = true; - checkBoxStripes.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); - checkBoxStripes.Location = new Point(6, 134); + checkBoxStripes.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); + checkBoxStripes.Location = new Point(6, 144); checkBoxStripes.Name = "checkBoxStripes"; - checkBoxStripes.Size = new Size(159, 25); + checkBoxStripes.Size = new Size(124, 19); checkBoxStripes.TabIndex = 7; checkBoxStripes.Text = "Presence of stripes"; checkBoxStripes.UseVisualStyleBackColor = true; @@ -174,10 +176,10 @@ // checkBoxSecondFloor // checkBoxSecondFloor.AutoSize = true; - checkBoxSecondFloor.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); + checkBoxSecondFloor.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); checkBoxSecondFloor.Location = new Point(6, 103); checkBoxSecondFloor.Name = "checkBoxSecondFloor"; - checkBoxSecondFloor.Size = new Size(225, 25); + checkBoxSecondFloor.Size = new Size(176, 19); checkBoxSecondFloor.TabIndex = 6; checkBoxSecondFloor.Text = "Presence of the second floor"; checkBoxSecondFloor.UseVisualStyleBackColor = true; @@ -188,7 +190,7 @@ numericUpDownWeight.Maximum = new decimal(new int[] { 1000, 0, 0, 0 }); numericUpDownWeight.Minimum = new decimal(new int[] { 100, 0, 0, 0 }); numericUpDownWeight.Name = "numericUpDownWeight"; - numericUpDownWeight.Size = new Size(79, 29); + numericUpDownWeight.Size = new Size(79, 23); numericUpDownWeight.TabIndex = 5; numericUpDownWeight.Value = new decimal(new int[] { 100, 0, 0, 0 }); // @@ -198,37 +200,37 @@ numericUpDownSpeed.Maximum = new decimal(new int[] { 1000, 0, 0, 0 }); numericUpDownSpeed.Minimum = new decimal(new int[] { 100, 0, 0, 0 }); numericUpDownSpeed.Name = "numericUpDownSpeed"; - numericUpDownSpeed.Size = new Size(79, 29); + numericUpDownSpeed.Size = new Size(79, 23); numericUpDownSpeed.TabIndex = 4; numericUpDownSpeed.Value = new decimal(new int[] { 100, 0, 0, 0 }); // // labelWeight // labelWeight.AutoSize = true; - labelWeight.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); + labelWeight.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); labelWeight.Location = new Point(6, 60); labelWeight.Name = "labelWeight"; - labelWeight.Size = new Size(59, 21); + labelWeight.Size = new Size(45, 15); labelWeight.TabIndex = 3; labelWeight.Text = "Weight"; // // labelSpeed // labelSpeed.AutoSize = true; - labelSpeed.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); + labelSpeed.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); labelSpeed.Location = new Point(6, 27); labelSpeed.Name = "labelSpeed"; - labelSpeed.Size = new Size(53, 21); + labelSpeed.Size = new Size(39, 15); labelSpeed.TabIndex = 2; labelSpeed.Text = "Speed"; // // labelModifiedObject // labelModifiedObject.BorderStyle = BorderStyle.FixedSingle; - labelModifiedObject.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); - labelModifiedObject.Location = new Point(140, 172); + labelModifiedObject.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); + labelModifiedObject.Location = new Point(333, 145); labelModifiedObject.Name = "labelModifiedObject"; - labelModifiedObject.Size = new Size(112, 38); + labelModifiedObject.Size = new Size(112, 32); labelModifiedObject.TabIndex = 1; labelModifiedObject.Text = "Modified"; labelModifiedObject.TextAlign = ContentAlignment.MiddleCenter; @@ -237,10 +239,10 @@ // labelSimpleObject // labelSimpleObject.BorderStyle = BorderStyle.FixedSingle; - labelSimpleObject.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); - labelSimpleObject.Location = new Point(6, 172); + labelSimpleObject.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); + labelSimpleObject.Location = new Point(203, 145); labelSimpleObject.Name = "labelSimpleObject"; - labelSimpleObject.Size = new Size(112, 38); + labelSimpleObject.Size = new Size(112, 32); labelSimpleObject.TabIndex = 0; labelSimpleObject.Text = "Simple"; labelSimpleObject.TextAlign = ContentAlignment.MiddleCenter; @@ -248,49 +250,82 @@ // // pictureBoxObject // - pictureBoxObject.Location = new Point(25, 15); + pictureBoxObject.Location = new Point(25, 29); pictureBoxObject.Name = "pictureBoxObject"; - pictureBoxObject.Size = new Size(179, 144); + pictureBoxObject.Size = new Size(179, 97); pictureBoxObject.TabIndex = 1; pictureBoxObject.TabStop = false; // // buttonAdd // buttonAdd.AutoSize = true; - buttonAdd.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); - buttonAdd.Location = new Point(596, 179); + buttonAdd.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); + buttonAdd.Location = new Point(462, 145); buttonAdd.Name = "buttonAdd"; - buttonAdd.Size = new Size(75, 38); + buttonAdd.Size = new Size(85, 32); buttonAdd.TabIndex = 2; buttonAdd.Text = "Add"; buttonAdd.UseVisualStyleBackColor = true; + buttonAdd.Click += buttonAdd_Click; // // buttonCancel // buttonCancel.AutoSize = true; - buttonCancel.Font = new Font("Segoe UI", 12F, FontStyle.Regular, GraphicsUnit.Point); - buttonCancel.Location = new Point(700, 178); + buttonCancel.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); + buttonCancel.Location = new Point(606, 145); buttonCancel.Name = "buttonCancel"; - buttonCancel.Size = new Size(75, 39); + buttonCancel.Size = new Size(85, 32); buttonCancel.TabIndex = 3; buttonCancel.Text = "Cancel"; buttonCancel.UseVisualStyleBackColor = true; // - // panel1 + // panelObject // - panel1.AllowDrop = true; - panel1.Controls.Add(pictureBoxObject); - panel1.Location = new Point(571, 0); - panel1.Name = "panel1"; - panel1.Size = new Size(229, 172); - panel1.TabIndex = 4; + panelObject.AllowDrop = true; + panelObject.Controls.Add(labelAdditionalColor); + panelObject.Controls.Add(labelBaseColor); + panelObject.Controls.Add(pictureBoxObject); + panelObject.Location = new Point(462, 9); + panelObject.Name = "panelObject"; + panelObject.Size = new Size(229, 129); + panelObject.TabIndex = 4; + panelObject.DragDrop += PanelObject_DragDrop; + panelObject.DragEnter += PanelObject_DragEnter; + // + // labelAdditionalColor + // + labelAdditionalColor.AllowDrop = true; + labelAdditionalColor.BorderStyle = BorderStyle.FixedSingle; + labelAdditionalColor.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); + labelAdditionalColor.Location = new Point(131, 1); + labelAdditionalColor.Name = "labelAdditionalColor"; + labelAdditionalColor.Size = new Size(95, 25); + labelAdditionalColor.TabIndex = 10; + labelAdditionalColor.Text = "Add. color"; + labelAdditionalColor.TextAlign = ContentAlignment.MiddleCenter; + labelAdditionalColor.DragDrop += labelAdditionalColor_DragDrop; + labelAdditionalColor.DragEnter += LabelColor_DragEnter; + // + // labelBaseColor + // + labelBaseColor.AllowDrop = true; + labelBaseColor.BorderStyle = BorderStyle.FixedSingle; + labelBaseColor.Font = new Font("Segoe UI", 9F, FontStyle.Regular, GraphicsUnit.Point); + labelBaseColor.Location = new Point(0, 0); + labelBaseColor.Name = "labelBaseColor"; + labelBaseColor.Size = new Size(95, 25); + labelBaseColor.TabIndex = 9; + labelBaseColor.Text = "Color"; + labelBaseColor.TextAlign = ContentAlignment.MiddleCenter; + labelBaseColor.DragDrop += labelBaseColor_DragDrop; + labelBaseColor.DragEnter += LabelColor_DragEnter; // // FormBusConfig // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(800, 229); - Controls.Add(panel1); + ClientSize = new Size(697, 186); + Controls.Add(panelObject); Controls.Add(buttonCancel); Controls.Add(buttonAdd); Controls.Add(groupBoxConfig); @@ -302,7 +337,7 @@ ((System.ComponentModel.ISupportInitialize)numericUpDownWeight).EndInit(); ((System.ComponentModel.ISupportInitialize)numericUpDownSpeed).EndInit(); ((System.ComponentModel.ISupportInitialize)pictureBoxObject).EndInit(); - panel1.ResumeLayout(false); + panelObject.ResumeLayout(false); ResumeLayout(false); PerformLayout(); } @@ -330,6 +365,8 @@ private PictureBox pictureBoxObject; private Button buttonAdd; private Button buttonCancel; - private Panel panel1; + private Panel panelObject; + private Label labelAdditionalColor; + private Label labelBaseColor; } } \ No newline at end of file diff --git a/DoubleDeckerBus/DoubleDeckerBus/FormBusConfig.cs b/DoubleDeckerBus/DoubleDeckerBus/FormBusConfig.cs index a617ff7..e429c5f 100644 --- a/DoubleDeckerBus/DoubleDeckerBus/FormBusConfig.cs +++ b/DoubleDeckerBus/DoubleDeckerBus/FormBusConfig.cs @@ -1,4 +1,5 @@ using DoubleDeckerBus.Drawnings; +using DoubleDeckerBus.Entities; using System; using System.Collections.Generic; using System.ComponentModel; @@ -13,14 +14,105 @@ namespace DoubleDeckerBus; public partial class FormBusConfig : Form { - private DrawingBus _bus; + private DrawingBus? _bus; + + private event Action? _busDelegate; public FormBusConfig() { InitializeComponent(); + + panelRed.MouseDown += PanelColors_MouseDown; + panelGreen.MouseDown += PanelColors_MouseDown; + panelBlue.MouseDown += PanelColors_MouseDown; + panelYellow.MouseDown += PanelColors_MouseDown; + panelWhite.MouseDown += PanelColors_MouseDown; + panelGray.MouseDown += PanelColors_MouseDown; + panelBlack.MouseDown += PanelColors_MouseDown; + panelPurple.MouseDown += PanelColors_MouseDown; + + buttonCancel.Click += (sender, e) => Close(); + + } + + public void AddEvent(Action busDelegate) + { + _busDelegate += busDelegate; + } + + private void DrawObject() + { + Bitmap bmp = new(pictureBoxObject.Width, pictureBoxObject.Height); + Graphics gr = Graphics.FromImage(bmp); + _bus?.SetPictureSize(pictureBoxObject.Width, pictureBoxObject.Height); + _bus?.SetPosition(15, 15); + _bus?.DrawTrasnport(gr); + pictureBoxObject.Image = bmp; } private void LabelObject_MouseDown(object sender, MouseEventArgs e) { + (sender as Label)?.DoDragDrop((sender as Label)?.Name ?? string.Empty, DragDropEffects.Move | DragDropEffects.Copy); + } + + private void PanelObject_DragEnter(object sender, DragEventArgs e) + { + e.Effect = e.Data?.GetDataPresent(DataFormats.Text) ?? false ? DragDropEffects.Copy : DragDropEffects.None; + } + + private void PanelObject_DragDrop(object sender, DragEventArgs e) + { + switch (e.Data?.GetData(DataFormats.Text)?.ToString()) + { + case "labelSimpleObject": + _bus = new DrawingBus((int)numericUpDownSpeed.Value, (int)numericUpDownWeight.Value, Color.White); + break; + case "labelModifiedObject": + _bus = new DrawingDoubleDeckerBus((int)numericUpDownSpeed.Value, (double)numericUpDownWeight.Value, Color.White, + Color.Black, checkBoxSecondFloor.Checked, checkBoxStripes.Checked); + break; + } + DrawObject(); + } + + private void PanelColors_MouseDown(object? sender, MouseEventArgs? e) + { + (sender as Panel)?.DoDragDrop((sender as Panel)?.BackColor ?? Color.White, DragDropEffects.Move | DragDropEffects.Copy); + } + + private void LabelColor_DragEnter(object sender, DragEventArgs e) + { + e.Effect = e.Effect = e.Data?.GetDataPresent(typeof(Color)) ?? false ? DragDropEffects.Copy : DragDropEffects.None; + } + + private void labelBaseColor_DragDrop(object sender, DragEventArgs e) + { + if (_bus != null) + { + _bus.EntityBus?.ChangeBodyColor((Color)(e.Data?.GetData(typeof(Color)) ?? Color.White)); + DrawObject(); + } + } + + private void labelAdditionalColor_DragDrop(object sender, DragEventArgs e) + { + if (_bus != null && _bus.EntityBus is EntityDoubleDeckerBus _doubleDeckBus) + { + _doubleDeckBus.ChangeAdditionalColor((Color)(e.Data?.GetData(typeof(Color)) ?? Color.Black)); + DrawObject(); + } + else + { + MessageBox.Show("Unable to add this to simple object"); + } } + + private void buttonAdd_Click(object sender, EventArgs e) + { + if (_bus != null) + { + _busDelegate?.Invoke(_bus); + Close(); + } + } }