diff --git a/LocomotivesAdvanced/LocomotivesAdvanced/FormLocomotiveConfig.Designer.cs b/LocomotivesAdvanced/LocomotivesAdvanced/FormLocomotiveConfig.Designer.cs
index 6a6353f..b6b9d78 100644
--- a/LocomotivesAdvanced/LocomotivesAdvanced/FormLocomotiveConfig.Designer.cs
+++ b/LocomotivesAdvanced/LocomotivesAdvanced/FormLocomotiveConfig.Designer.cs
@@ -29,6 +29,8 @@
private void InitializeComponent()
{
this.groupBoxConfig = new System.Windows.Forms.GroupBox();
+ this.labelWheelsNumber = new System.Windows.Forms.Label();
+ this.numericUpDownWheelsNumber = new System.Windows.Forms.NumericUpDown();
this.buttonCancel = new System.Windows.Forms.Button();
this.buttonOk = new System.Windows.Forms.Button();
this.panelObject = new System.Windows.Forms.Panel();
@@ -36,6 +38,9 @@
this.labelColor = new System.Windows.Forms.Label();
this.pictureBoxObject = new System.Windows.Forms.PictureBox();
this.labelModifiedObject = new System.Windows.Forms.Label();
+ this.labelRectOrnament = new System.Windows.Forms.Label();
+ this.labelEllipseOrnament = new System.Windows.Forms.Label();
+ this.labelNoOrnament = new System.Windows.Forms.Label();
this.labelSimpleObject = new System.Windows.Forms.Label();
this.groupBoxColors = new System.Windows.Forms.GroupBox();
this.panelBlack = new System.Windows.Forms.Panel();
@@ -53,6 +58,7 @@
this.numericUpDownSpeed = new System.Windows.Forms.NumericUpDown();
this.labelSpeed = new System.Windows.Forms.Label();
this.groupBoxConfig.SuspendLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.numericUpDownWheelsNumber)).BeginInit();
this.panelObject.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBoxObject)).BeginInit();
this.groupBoxColors.SuspendLayout();
@@ -62,10 +68,15 @@
//
// groupBoxConfig
//
+ this.groupBoxConfig.Controls.Add(this.labelWheelsNumber);
+ this.groupBoxConfig.Controls.Add(this.numericUpDownWheelsNumber);
this.groupBoxConfig.Controls.Add(this.buttonCancel);
this.groupBoxConfig.Controls.Add(this.buttonOk);
this.groupBoxConfig.Controls.Add(this.panelObject);
this.groupBoxConfig.Controls.Add(this.labelModifiedObject);
+ this.groupBoxConfig.Controls.Add(this.labelRectOrnament);
+ this.groupBoxConfig.Controls.Add(this.labelEllipseOrnament);
+ this.groupBoxConfig.Controls.Add(this.labelNoOrnament);
this.groupBoxConfig.Controls.Add(this.labelSimpleObject);
this.groupBoxConfig.Controls.Add(this.groupBoxColors);
this.groupBoxConfig.Controls.Add(this.checkBoxHasFuelTank);
@@ -76,11 +87,43 @@
this.groupBoxConfig.Controls.Add(this.labelSpeed);
this.groupBoxConfig.Location = new System.Drawing.Point(12, 12);
this.groupBoxConfig.Name = "groupBoxConfig";
- this.groupBoxConfig.Size = new System.Drawing.Size(674, 231);
+ this.groupBoxConfig.Size = new System.Drawing.Size(674, 337);
this.groupBoxConfig.TabIndex = 0;
this.groupBoxConfig.TabStop = false;
this.groupBoxConfig.Text = "Параметры";
//
+ // labelWheelsNumber
+ //
+ this.labelWheelsNumber.AutoSize = true;
+ this.labelWheelsNumber.Location = new System.Drawing.Point(233, 195);
+ this.labelWheelsNumber.Name = "labelWheelsNumber";
+ this.labelWheelsNumber.Size = new System.Drawing.Size(107, 15);
+ this.labelWheelsNumber.TabIndex = 1;
+ this.labelWheelsNumber.Text = "Количество колёс";
+ //
+ // numericUpDownWheelsNumber
+ //
+ this.numericUpDownWheelsNumber.Location = new System.Drawing.Point(200, 193);
+ this.numericUpDownWheelsNumber.Maximum = new decimal(new int[] {
+ 4,
+ 0,
+ 0,
+ 0});
+ this.numericUpDownWheelsNumber.Minimum = new decimal(new int[] {
+ 2,
+ 0,
+ 0,
+ 0});
+ this.numericUpDownWheelsNumber.Name = "numericUpDownWheelsNumber";
+ this.numericUpDownWheelsNumber.Size = new System.Drawing.Size(27, 23);
+ this.numericUpDownWheelsNumber.TabIndex = 1;
+ this.numericUpDownWheelsNumber.Value = new decimal(new int[] {
+ 2,
+ 0,
+ 0,
+ 0});
+ this.numericUpDownWheelsNumber.ValueChanged += new System.EventHandler(this.numericUpDownWheelsNumber_ValueChanged);
+ //
// buttonCancel
//
this.buttonCancel.Location = new System.Drawing.Point(544, 193);
@@ -158,6 +201,39 @@
this.labelModifiedObject.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
this.labelModifiedObject.MouseDown += new System.Windows.Forms.MouseEventHandler(this.LabelObject_MouseDown);
//
+ // labelRectOrnament
+ //
+ this.labelRectOrnament.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.labelRectOrnament.Location = new System.Drawing.Point(6, 168);
+ this.labelRectOrnament.Name = "labelRectOrnament";
+ this.labelRectOrnament.Size = new System.Drawing.Size(188, 27);
+ this.labelRectOrnament.TabIndex = 7;
+ this.labelRectOrnament.Text = "Прямоугольный орнамент";
+ this.labelRectOrnament.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.labelRectOrnament.MouseDown += new System.Windows.Forms.MouseEventHandler(this.LabelOrnament_MouseDown);
+ //
+ // labelEllipseOrnament
+ //
+ this.labelEllipseOrnament.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.labelEllipseOrnament.Location = new System.Drawing.Point(6, 195);
+ this.labelEllipseOrnament.Name = "labelEllipseOrnament";
+ this.labelEllipseOrnament.Size = new System.Drawing.Size(188, 27);
+ this.labelEllipseOrnament.TabIndex = 7;
+ this.labelEllipseOrnament.Text = "Круглый орнамент";
+ this.labelEllipseOrnament.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.labelEllipseOrnament.MouseDown += new System.Windows.Forms.MouseEventHandler(this.LabelOrnament_MouseDown);
+ //
+ // labelNoOrnament
+ //
+ this.labelNoOrnament.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
+ this.labelNoOrnament.Location = new System.Drawing.Point(6, 141);
+ this.labelNoOrnament.Name = "labelNoOrnament";
+ this.labelNoOrnament.Size = new System.Drawing.Size(188, 27);
+ this.labelNoOrnament.TabIndex = 7;
+ this.labelNoOrnament.Text = "Без орнамента";
+ this.labelNoOrnament.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
+ this.labelNoOrnament.MouseDown += new System.Windows.Forms.MouseEventHandler(this.LabelOrnament_MouseDown);
+ //
// labelSimpleObject
//
this.labelSimpleObject.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
@@ -344,12 +420,13 @@
//
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
- this.ClientSize = new System.Drawing.Size(693, 248);
+ this.ClientSize = new System.Drawing.Size(693, 246);
this.Controls.Add(this.groupBoxConfig);
this.Name = "FormLocomotiveConfig";
this.Text = "Создание объекта";
this.groupBoxConfig.ResumeLayout(false);
this.groupBoxConfig.PerformLayout();
+ ((System.ComponentModel.ISupportInitialize)(this.numericUpDownWheelsNumber)).EndInit();
this.panelObject.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBoxObject)).EndInit();
this.groupBoxColors.ResumeLayout(false);
@@ -385,5 +462,10 @@
private Label labelColor;
private Button buttonCancel;
private Button buttonOk;
+ private Label labelRectOrnament;
+ private Label labelEllipseOrnament;
+ private Label labelNoOrnament;
+ private Label labelWheelsNumber;
+ private NumericUpDown numericUpDownWheelsNumber;
}
}
\ No newline at end of file
diff --git a/LocomotivesAdvanced/LocomotivesAdvanced/FormLocomotiveConfig.cs b/LocomotivesAdvanced/LocomotivesAdvanced/FormLocomotiveConfig.cs
index faadbd1..dbd8ce7 100644
--- a/LocomotivesAdvanced/LocomotivesAdvanced/FormLocomotiveConfig.cs
+++ b/LocomotivesAdvanced/LocomotivesAdvanced/FormLocomotiveConfig.cs
@@ -9,6 +9,10 @@
/// Переменная - выбранный локомотив
///
DrawningLocomotive _locomotive = null;
+ ///
+ /// Делегат
+ ///
+ ///
public delegate void Action(DrawningLocomotive locomotive);
///
/// Событие
@@ -73,7 +77,7 @@
///
private void PanelObject_DragEnter(object sender, DragEventArgs e)
{
- if (e.Data.GetDataPresent(DataFormats.Text))
+ if (e.Data.GetDataPresent(DataFormats.Text) || e.Data.GetDataPresent(typeof(IDrawningAdditionalElements)))
{
e.Effect = DragDropEffects.Copy;
}
@@ -89,15 +93,25 @@
///
private void PanelObject_DragDrop(object sender, DragEventArgs e)
{
- switch (e.Data.GetData(DataFormats.Text).ToString())
+ if (e.Data.GetDataPresent(DataFormats.Text))
{
- case "labelSimpleObject":
- _locomotive = new DrawningLocomotive((int)numericUpDownSpeed.Value, (int)numericUpDownWeight.Value, Color.White);
- break;
- case "labelModifiedObject":
- _locomotive = new DrawningWarmlyLocomotive((int)numericUpDownSpeed.Value, (int)numericUpDownWeight.Value, Color.White, 160, 85, Color.Black, checkBoxHasPipe.Checked, checkBoxHasFuelTank.Checked);
- break;
+ _locomotive = new DrawningWarmlyLocomotive((int)numericUpDownSpeed.Value, (int)numericUpDownWeight.Value, Color.White, 160, 85, Color.Black, checkBoxHasPipe.Checked, checkBoxHasFuelTank.Checked);
+ switch (e.Data.GetData(DataFormats.Text).ToString())
+ {
+ case "labelSimpleObject":
+ _locomotive = new DrawningLocomotive((int)numericUpDownSpeed.Value, (int)numericUpDownWeight.Value, Color.White);
+ break;
+ case "labelModifiedObject":
+ _locomotive = new DrawningWarmlyLocomotive((int)numericUpDownSpeed.Value, (int)numericUpDownWeight.Value, Color.White, 160, 85, Color.Black, checkBoxHasPipe.Checked, checkBoxHasFuelTank.Checked);
+ break;
+ }
}
+ else if (_locomotive != null)
+ {
+ var ornament = e.Data.GetData(typeof(IDrawningAdditionalElements));
+ _locomotive.AdditionalElements = (IDrawningAdditionalElements)ornament;
+ }
+ _locomotive.AdditionalElements.WheelsNum = (int)numericUpDownWheelsNumber.Value;
DrawLocomotive();
}
///
@@ -158,5 +172,34 @@
EventAddLocomotive?.Invoke(_locomotive);
Close();
}
+
+ private void LabelOrnament_MouseDown(object sender, MouseEventArgs e)
+ {
+ IDrawningAdditionalElements selectedOrnament = new DrawningWheels();
+ switch ((sender as Label).Name)
+ {
+ case "labelNoOrnament":
+ selectedOrnament = new DrawningWheels();
+ break;
+ case "labelRectOrnament":
+ selectedOrnament = new DrawningRectOrnament();
+ break;
+ case "labelEllipseOrnament":
+ selectedOrnament = new DrawningEllipseOrnament();
+ break;
+ }
+ var dataObj = new DataObject();
+ dataObj.SetData(typeof(IDrawningAdditionalElements), selectedOrnament);
+ (sender as Label).DoDragDrop(dataObj, DragDropEffects.Move | DragDropEffects.Copy);
+ }
+
+ private void numericUpDownWheelsNumber_ValueChanged(object sender, EventArgs e)
+ {
+ if (_locomotive != null)
+ {
+ _locomotive.AdditionalElements.WheelsNum = (int)numericUpDownWheelsNumber.Value;
+ DrawLocomotive();
+ }
+ }
}
}