ISE_22.Aparyan.Bulldozer.Base Lab04 #4

Closed
LuizaAparyan wants to merge 5 commits from Laba04 into Laba03
2 changed files with 193 additions and 54 deletions
Showing only changes of commit 9bbe889440 - Show all commits

View File

@ -15,58 +15,55 @@
#region Windows Form Designer generated code #region Windows Form Designer generated code
private void InitializeComponent() private void InitializeComponent()
{ {
Instruments = new Panel(); components = new System.ComponentModel.Container();
maskedTextBoxNumber = new MaskedTextBox(); maskedTextBoxNumber = new MaskedTextBox();
ButtonRefreshCollection = new Button(); ButtonRefreshCollection = new Button();
ButtonRemoveTractor = new Button(); ButtonRemoveTractor = new Button();
ButtonAddTractor = new Button(); ButtonAddTractor = new Button();
pictureBoxCollections = new PictureBox(); pictureBoxCollections = new PictureBox();
Instruments.SuspendLayout(); textBoxStorageName = new TextBox();
bindingSource1 = new BindingSource(components);
bindingSource2 = new BindingSource(components);
groupBox1 = new GroupBox();
listBoxStorage = new ListBox();
ButtonAddObject = new Button();
ButtonRemoveObject = new Button();
Instruments = new GroupBox();
((System.ComponentModel.ISupportInitialize)pictureBoxCollections).BeginInit(); ((System.ComponentModel.ISupportInitialize)pictureBoxCollections).BeginInit();
((System.ComponentModel.ISupportInitialize)bindingSource1).BeginInit();
((System.ComponentModel.ISupportInitialize)bindingSource2).BeginInit();
groupBox1.SuspendLayout();
Instruments.SuspendLayout();
SuspendLayout(); SuspendLayout();
// //
// Instruments
//
Instruments.Anchor = AnchorStyles.Right;
Instruments.AutoSize = true;
Instruments.Controls.Add(maskedTextBoxNumber);
Instruments.Controls.Add(ButtonRefreshCollection);
Instruments.Controls.Add(ButtonAddTractor);
Instruments.Controls.Add(ButtonRemoveTractor);
Instruments.Location = new Point(588, 11);
Instruments.Margin = new Padding(3, 2, 3, 2);
Instruments.Name = "Instruments";
Instruments.Size = new Size(150, 456);
Instruments.TabIndex = 0;
//
// maskedTextBoxNumber // maskedTextBoxNumber
// //
maskedTextBoxNumber.Location = new Point(15, 51); maskedTextBoxNumber.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right;
maskedTextBoxNumber.Location = new Point(33, 399);
maskedTextBoxNumber.Margin = new Padding(3, 2, 3, 2); maskedTextBoxNumber.Margin = new Padding(3, 2, 3, 2);
maskedTextBoxNumber.Mask = "0"; maskedTextBoxNumber.Mask = "0";
maskedTextBoxNumber.Name = "maskedTextBoxNumber"; maskedTextBoxNumber.Name = "maskedTextBoxNumber";
maskedTextBoxNumber.Size = new Size(119, 23); maskedTextBoxNumber.Size = new Size(131, 23);
maskedTextBoxNumber.TabIndex = 4; maskedTextBoxNumber.TabIndex = 4;
// //
// ButtonRefreshCollection // ButtonRefreshCollection
// //
ButtonRefreshCollection.Anchor = AnchorStyles.Right; ButtonRefreshCollection.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
ButtonRefreshCollection.Location = new Point(3, 175); ButtonRefreshCollection.Location = new Point(33, 499);
ButtonRefreshCollection.Margin = new Padding(3, 2, 3, 2); ButtonRefreshCollection.Margin = new Padding(3, 2, 3, 2);
ButtonRefreshCollection.Name = "ButtonRefreshCollection"; ButtonRefreshCollection.Name = "ButtonRefreshCollection";
ButtonRefreshCollection.Size = new Size(131, 27); ButtonRefreshCollection.Size = new Size(131, 31);
ButtonRefreshCollection.TabIndex = 2; ButtonRefreshCollection.TabIndex = 2;
ButtonRefreshCollection.Text = "Обновить "; ButtonRefreshCollection.Text = "Обновить все";
ButtonRefreshCollection.UseVisualStyleBackColor = true; ButtonRefreshCollection.UseVisualStyleBackColor = true;
ButtonRefreshCollection.Click += ButtonRefreshCollection_Click;
// //
// ButtonRemoveTractor // ButtonRemoveTractor
// //
ButtonRemoveTractor.Anchor = AnchorStyles.Right; ButtonRemoveTractor.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
ButtonRemoveTractor.Location = new Point(3, 133); ButtonRemoveTractor.Location = new Point(33, 444);
ButtonRemoveTractor.Margin = new Padding(3, 2, 3, 2); ButtonRemoveTractor.Margin = new Padding(3, 2, 3, 2);
ButtonRemoveTractor.Name = "ButtonRemoveTractor"; ButtonRemoveTractor.Name = "ButtonRemoveTractor";
ButtonRemoveTractor.Size = new Size(131, 27); ButtonRemoveTractor.Size = new Size(131, 33);
ButtonRemoveTractor.TabIndex = 1; ButtonRemoveTractor.TabIndex = 1;
ButtonRemoveTractor.Text = "Удалить объект"; ButtonRemoveTractor.Text = "Удалить объект";
ButtonRemoveTractor.UseVisualStyleBackColor = true; ButtonRemoveTractor.UseVisualStyleBackColor = true;
@ -74,11 +71,11 @@
// //
// ButtonAddTractor // ButtonAddTractor
// //
ButtonAddTractor.Anchor = AnchorStyles.Top | AnchorStyles.Right; ButtonAddTractor.Anchor = AnchorStyles.Top;
ButtonAddTractor.Location = new Point(6, 20); ButtonAddTractor.Location = new Point(33, 346);
ButtonAddTractor.Margin = new Padding(3, 2, 3, 2); ButtonAddTractor.Margin = new Padding(3, 2, 3, 2);
ButtonAddTractor.Name = "ButtonAddTractor"; ButtonAddTractor.Name = "ButtonAddTractor";
ButtonAddTractor.Size = new Size(128, 27); ButtonAddTractor.Size = new Size(131, 29);
ButtonAddTractor.TabIndex = 0; ButtonAddTractor.TabIndex = 0;
ButtonAddTractor.Text = "Добавить объект"; ButtonAddTractor.Text = "Добавить объект";
ButtonAddTractor.UseVisualStyleBackColor = true; ButtonAddTractor.UseVisualStyleBackColor = true;
@ -86,41 +83,116 @@
// //
// pictureBoxCollections // pictureBoxCollections
// //
pictureBoxCollections.Anchor = AnchorStyles.Left; pictureBoxCollections.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
pictureBoxCollections.Location = new Point(12, 11); pictureBoxCollections.Location = new Point(4, 4);
pictureBoxCollections.Margin = new Padding(3, 2, 3, 2); pictureBoxCollections.Margin = new Padding(3, 2, 3, 2);
pictureBoxCollections.Name = "pictureBoxCollections"; pictureBoxCollections.Name = "pictureBoxCollections";
pictureBoxCollections.Size = new Size(570, 456); pictureBoxCollections.Size = new Size(693, 541);
pictureBoxCollections.TabIndex = 1; pictureBoxCollections.TabIndex = 1;
pictureBoxCollections.TabStop = false; pictureBoxCollections.TabStop = false;
pictureBoxCollections.Click += pictureBoxCollections_Click; //
// textBoxStorageName
//
textBoxStorageName.Location = new Point(27, 32);
textBoxStorageName.Name = "textBoxStorageName";
textBoxStorageName.Size = new Size(131, 23);
textBoxStorageName.TabIndex = 5;
textBoxStorageName.TextChanged += textBoxStorageName_TextChanged;
//
// groupBox1
//
groupBox1.Controls.Add(listBoxStorage);
groupBox1.Controls.Add(ButtonAddObject);
groupBox1.Controls.Add(ButtonRemoveObject);
groupBox1.Controls.Add(textBoxStorageName);
groupBox1.Location = new Point(6, 22);
groupBox1.Name = "groupBox1";
groupBox1.Size = new Size(189, 296);
groupBox1.TabIndex = 5;
groupBox1.TabStop = false;
groupBox1.Text = "Наборы";
//
// listBoxStorage
//
listBoxStorage.FormattingEnabled = true;
listBoxStorage.ItemHeight = 15;
listBoxStorage.Location = new Point(27, 122);
listBoxStorage.Name = "listBoxStorage";
listBoxStorage.Size = new Size(131, 94);
listBoxStorage.TabIndex = 9;
listBoxStorage.SelectedIndexChanged += listBoxStorage_SelectedIndexChanged;
//
// ButtonAddObject
//
ButtonAddObject.Anchor = AnchorStyles.Top;
ButtonAddObject.Location = new Point(27, 72);
ButtonAddObject.Margin = new Padding(3, 2, 3, 2);
ButtonAddObject.Name = "ButtonAddObject";
ButtonAddObject.Size = new Size(131, 29);
ButtonAddObject.TabIndex = 7;
ButtonAddObject.Text = "Добавить набор";
ButtonAddObject.UseVisualStyleBackColor = true;
ButtonAddObject.Click += ButtonAddObject_Click;
//
// ButtonRemoveObject
//
ButtonRemoveObject.Anchor = AnchorStyles.Bottom | AnchorStyles.Right;
ButtonRemoveObject.Location = new Point(27, 244);
ButtonRemoveObject.Margin = new Padding(3, 2, 3, 2);
ButtonRemoveObject.Name = "ButtonRemoveObject";
ButtonRemoveObject.Size = new Size(131, 33);
ButtonRemoveObject.TabIndex = 8;
ButtonRemoveObject.Text = "Удалить набор";
ButtonRemoveObject.UseVisualStyleBackColor = true;
ButtonRemoveObject.Click += ButtonRemoveObject_Click;
//
// Instruments
//
Instruments.Controls.Add(ButtonRefreshCollection);
Instruments.Controls.Add(groupBox1);
Instruments.Controls.Add(maskedTextBoxNumber);
Instruments.Controls.Add(ButtonAddTractor);
Instruments.Controls.Add(ButtonRemoveTractor);
Instruments.Location = new Point(697, 4);
Instruments.Name = "Instruments";
Instruments.Size = new Size(200, 541);
Instruments.TabIndex = 6;
Instruments.TabStop = false;
Instruments.Text = "Инструменты";
// //
// FormTractorCollections // FormTractorCollections
// //
AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleDimensions = new SizeF(7F, 15F);
AutoScaleMode = AutoScaleMode.Font; AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(748, 478); ClientSize = new Size(904, 543);
Controls.Add(pictureBoxCollections);
Controls.Add(Instruments); Controls.Add(Instruments);
Controls.Add(pictureBoxCollections);
Margin = new Padding(3, 2, 3, 2); Margin = new Padding(3, 2, 3, 2);
Name = "FormTractorCollections"; Name = "FormTractorCollections";
Text = "Набор трактороов"; Text = "Набор локомотивов";
((System.ComponentModel.ISupportInitialize)pictureBoxCollections).EndInit();
((System.ComponentModel.ISupportInitialize)bindingSource1).EndInit();
((System.ComponentModel.ISupportInitialize)bindingSource2).EndInit();
groupBox1.ResumeLayout(false);
groupBox1.PerformLayout();
Instruments.ResumeLayout(false); Instruments.ResumeLayout(false);
Instruments.PerformLayout(); Instruments.PerformLayout();
((System.ComponentModel.ISupportInitialize)pictureBoxCollections).EndInit();
ResumeLayout(false); ResumeLayout(false);
PerformLayout();
}
private void pictureBoxCollections_Click(object sender, EventArgs e)
{
throw new NotImplementedException();
} }
#endregion #endregion
private Panel Instruments;
private Button ButtonRefreshCollection; private Button ButtonRefreshCollection;
private Button ButtonRemoveTractor; private Button ButtonRemoveTractor;
private Button ButtonAddTractor; private Button ButtonAddTractor;
private PictureBox pictureBoxCollections; private PictureBox pictureBoxCollections;
private MaskedTextBox maskedTextBoxNumber; private MaskedTextBox maskedTextBoxNumber;
private GroupBox groupBox1;
private TextBox textBoxStorageName;
private BindingSource bindingSource1;
private BindingSource bindingSource2;
private ListBox listBoxStorage;
private Button ButtonAddObject;
private Button ButtonRemoveObject;
private GroupBox Instruments;
} }
} }

View File

@ -1,29 +1,79 @@
using Bulldozer; using Bulldozer;
using ProjectBulldozer.Drawning;
using ProjectBulldozer.Generics; using ProjectBulldozer.Generics;
using ProjectBulldozer.MovementStrategy;
namespace ProjectBulldozer namespace ProjectBulldozer
{ {
public partial class FormTractorCollections : Form public partial class FormTractorCollections : Form
{ {
private readonly TractorGenericCollection<DrawingTractor, DrawingObjectTractor> _Tractors; private readonly TractorGenericStorage _storage;
//private readonly TractorGenericCollection<DrawingTractor, DrawingObjectTractor> _Tractors;
public FormTractorCollections() public FormTractorCollections()
{ {
InitializeComponent(); InitializeComponent();
_Tractors = new TractorGenericCollection<DrawingTractor, DrawingObjectTractor>(pictureBoxCollections.Width, _storage = new TractorGenericStorage(pictureBoxCollections.Width, pictureBoxCollections.Height);
pictureBoxCollections.Height); }
private void ReloadObjects()
{
int index = listBoxStorage.SelectedIndex;
listBoxStorage.Items.Clear();
for (int i = 0; i < _storage.Keys.Count; i++)
{
listBoxStorage.Items.Add(_storage.Keys[i]);
}
if (listBoxStorage.Items.Count > 0 && (index == -1 || index >= listBoxStorage.Items.Count))
{
listBoxStorage.SelectedIndex = 0;
}
else if (listBoxStorage.Items.Count > 0 && index > -1 && index < listBoxStorage.Items.Count)
{
listBoxStorage.SelectedIndex = index;
}
}
private void ButtonAddObject_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(textBoxStorageName.Text))
{
MessageBox.Show("Не всё заполнено", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
_storage.AddSet(textBoxStorageName.Text);
ReloadObjects();
}
private void listBoxStorage_SelectedIndexChanged(object sender, EventArgs e)
{
pictureBoxCollections.Image = _storage[listBoxStorage.SelectedItem?.ToString() ?? string.Empty]?.ShowTractors();
}
private void ButtonRemoveObject_Click(object sender, EventArgs e)
{
if (listBoxStorage.SelectedIndex == -1)
{
return;
}
if (MessageBox.Show($"Удалить объект {listBoxStorage.SelectedItem}?", "Удаление", MessageBoxButtons.YesNo,
MessageBoxIcon.Question) == DialogResult.Yes)
{
_storage.DelSet(listBoxStorage.SelectedItem.ToString() ?? string.Empty);
ReloadObjects();
}
} }
private void ButtonAddTractor_Click(object sender, EventArgs e) private void ButtonAddTractor_Click(object sender, EventArgs e)
{ {
if (_Tractors == null) return;
if (listBoxStorage.SelectedIndex == -1) return;
var obj = _storage[listBoxStorage.SelectedItem.ToString() ?? string.Empty];
if (obj == null)
{
return;
}
FormBulldozer form = new(); FormBulldozer form = new();
if (form.ShowDialog() == DialogResult.OK) if (form.ShowDialog() == DialogResult.OK)
{ {
//проверяем, удалось ли нам загрузить объект //проверяем, удалось ли нам загрузить объект
if (_Tractors + form.SelectedTractor != -1) if (obj + form.SelectedTractor > -1)
{ {
MessageBox.Show("Объект добавлен"); MessageBox.Show("Объект добавлен");
pictureBoxCollections.Image = _Tractors.ShowTractors(); pictureBoxCollections.Image = obj.ShowTractors();
} }
else else
{ {
@ -33,15 +83,22 @@ namespace ProjectBulldozer
} }
private void ButtonRemoveTractor_Click(object sender, EventArgs e) private void ButtonRemoveTractor_Click(object sender, EventArgs e)
{ {
if (listBoxStorage.SelectedIndex == -1) return;
var obj = _storage[listBoxStorage.SelectedItem.ToString() ?? string.Empty];
if (obj == null)
{
return;
}
if (MessageBox.Show("Удалить объект?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) if (MessageBox.Show("Удалить объект?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
{ {
return; return;
} }
int pos = Convert.ToInt32(maskedTextBoxNumber.Text); int pos = Convert.ToInt32(maskedTextBoxNumber.Text);
if (_Tractors - pos != null) if (obj - pos != null)
{ {
MessageBox.Show("Объект удален"); MessageBox.Show("Объект удален");
pictureBoxCollections.Image = _Tractors.ShowTractors(); pictureBoxCollections.Image = obj.ShowTractors();
} }
else else
{ {
@ -50,7 +107,17 @@ namespace ProjectBulldozer
} }
private void ButtonRefreshCollection_Click(object sender, EventArgs e) private void ButtonRefreshCollection_Click(object sender, EventArgs e)
{ {
pictureBoxCollections.Image = _Tractors.ShowTractors(); if (listBoxStorage.SelectedIndex == -1) return;
var obj = _storage[listBoxStorage.SelectedItem.ToString() ?? string.Empty];
if (obj == null)
{
return;
}
pictureBoxCollections.Image = obj.ShowTractors();
}
private void textBoxStorageName_TextChanged(object sender, EventArgs e)
{
} }
} }
} }