diff --git a/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObjects/AbstractCompany.cs b/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObjects/AbstractCompany.cs index ec4a642..bbba0f7 100644 --- a/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObjects/AbstractCompany.cs +++ b/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObjects/AbstractCompany.cs @@ -6,12 +6,12 @@ public abstract class AbstractCompany /// /// Размер места (ширина) /// - protected readonly int _placeSizeWidth = 220; + protected readonly int _placeSizeWidth = 180; /// /// Размер места (высота) /// - protected readonly int _placeSizeHeight = 155; + protected readonly int _placeSizeHeight = 135; /// /// Ширина окна diff --git a/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObjects/CarSharingService.cs b/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObjects/CarSharingService.cs index 7d2f2a9..8793a1c 100644 --- a/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObjects/CarSharingService.cs +++ b/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObjects/CarSharingService.cs @@ -27,7 +27,7 @@ public class CarSharingService : AbstractCompany { for (int j = 0; j < height + 1; ++j) { - g.DrawLine(pen, i * _placeSizeWidth+5, j * _placeSizeHeight, i * _placeSizeWidth+5 + _placeSizeWidth-45, j * _placeSizeHeight); + g.DrawLine(pen, i * _placeSizeWidth+5, j * _placeSizeHeight, i * _placeSizeWidth+5 + _placeSizeWidth-35, j * _placeSizeHeight); g.DrawLine(pen, i * _placeSizeWidth+5, j * _placeSizeHeight, i * _placeSizeWidth+5, j * _placeSizeHeight -_placeSizeHeight); } } diff --git a/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObjects/CollectionType.cs b/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObjects/CollectionType.cs new file mode 100644 index 0000000..13ad77d --- /dev/null +++ b/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObjects/CollectionType.cs @@ -0,0 +1,20 @@ + +namespace ProjectDumpTruck.CollectionGenericObjects; + +public enum CollectionType +{ + /// + /// Неопределено + /// + None = 0, + + /// + /// Массив + /// + Massive = 1, + + /// + /// Список + /// + List = 2 +} diff --git a/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObjects/ListGenericObjects.cs b/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObjects/ListGenericObjects.cs new file mode 100644 index 0000000..a6ad443 --- /dev/null +++ b/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObjects/ListGenericObjects.cs @@ -0,0 +1,68 @@ +namespace ProjectDumpTruck.CollectionGenericObjects; + +/// +/// Параметризованный набор объектов +/// +/// Параметр: ограничение - ссылочный тип +public class ListGenericObjects : ICollectionGenericObjects + where T : class +{ + /// + /// Список объектов, которые храним + /// + private readonly List _collection; + + /// + /// Максимально допустимое число объектов в списке + /// + public int _maxCount; + + public int Count => _collection.Count; + + public int SetMaxCount { set { if (value > 0) { _maxCount = value; } } } + + /// + /// Конструктор + /// + public ListGenericObjects() + { + _collection = new(); + } + + public T Get(int position) + { + // TODO проверка позиции + if (position >= Count || position < 0) return null; + return _collection[position]; + } + + public int Insert(T obj) + { + // TODO проверка, что не превышено максимальное количество элементов + // TODO вставка в конец набора + if (Count == _maxCount) return -1; + _collection.Add(obj); + return Count; + } + + public int Insert(T obj, int position) + { + // TODO проверка, что не превышено максимальное количество элементов + // TODO проверка позиции + // TODO вставка по позиции + if (Count == _maxCount) return -1; + if (position >= Count || position < 0) return -1; + _collection.Insert(position, obj); + return position; + } + + public T Remove(int position) + { + // TODO проверка позиции + // TODO удаление объекта из списка + if (position >= _collection.Count || position < 0) return null; + T obj = _collection[position]; + _collection.RemoveAt(position); + return obj; + } +} diff --git a/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObjects/StorageCollection.cs b/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObjects/StorageCollection.cs new file mode 100644 index 0000000..b923ba3 --- /dev/null +++ b/ProjectDumpTruck/ProjectDumpTruck/CollectionGenericObjects/StorageCollection.cs @@ -0,0 +1,75 @@ + +using System.Collections; +using System.Collections.Generic; + +namespace ProjectDumpTruck.CollectionGenericObjects; + +/// +/// Класс-хранилище коллекций +/// +/// +public class StorageCollection + where T : class +{ + /// + /// Словарь (хранилище) с коллекциями + /// + readonly Dictionary> _storages; + + /// + /// Возвращение списка названий коллекций + /// + public List Keys => _storages.Keys.ToList(); + + /// + /// Конструктор + /// + public StorageCollection() + { + _storages = new Dictionary>(); + } + + /// + /// Добавление коллекции в хранилище + /// + /// Название коллекции + /// тип коллекции + public void AddCollection(string name, CollectionType collectionType) + { + // TODO проверка, что name не пустой и нет в словаре записи с таким ключом + // TODO Прописать логику для добавления + if (_storages.ContainsKey(name)) return; + if (collectionType == CollectionType.None) return; + else if (collectionType == CollectionType.Massive) + _storages[name] = new MassiveGenericObjects(); + else if (collectionType == CollectionType.List) + _storages[name] = new ListGenericObjects(); + } + + /// + /// Удаление коллекции + /// + /// Название коллекции + public void DelCollection(string name) + { + // TODO Прописать логику для удаления коллекции + if (_storages.ContainsKey(name)) + _storages.Remove(name); + } + + /// + /// Доступ к коллекции + /// + /// Название коллекции + /// + public ICollectionGenericObjects? this[string name] + { + get + { + // TODO Продумать логику получения объекта + if (_storages.ContainsKey(name)) + return _storages[name]; + return null; + } + } +} diff --git a/ProjectDumpTruck/ProjectDumpTruck/Drawnings/DrawningDumpTrack.cs b/ProjectDumpTruck/ProjectDumpTruck/Drawnings/DrawningDumpTrack.cs index 801139e..b660703 100644 --- a/ProjectDumpTruck/ProjectDumpTruck/Drawnings/DrawningDumpTrack.cs +++ b/ProjectDumpTruck/ProjectDumpTruck/Drawnings/DrawningDumpTrack.cs @@ -35,7 +35,7 @@ public class DrawningDumpTrack : DrawningTrack } Brush additionalBrush = new SolidBrush(dumpTrack.AdditionalColor); - Brush additional2Brush = new SolidBrush(dumpTrack.Additional2Color); + Brush additional2Brush = new SolidBrush(dumpTrack.AdditionalAwningColor); base.DrawTransport(g); diff --git a/ProjectDumpTruck/ProjectDumpTruck/Drawnings/DrawningTrack.cs b/ProjectDumpTruck/ProjectDumpTruck/Drawnings/DrawningTrack.cs index 037ead7..827c74d 100644 --- a/ProjectDumpTruck/ProjectDumpTruck/Drawnings/DrawningTrack.cs +++ b/ProjectDumpTruck/ProjectDumpTruck/Drawnings/DrawningTrack.cs @@ -34,12 +34,12 @@ public class DrawningTrack /// /// Ширина прорисовки самосвала /// - private readonly int _drawningTrackWidth = 130; + private readonly int _drawningTrackWidth = 150; /// /// Высота прорисовки самосвала /// - private readonly int _drawningTrackHeight = 100; + private readonly int _drawningTrackHeight = 70; /// /// Координата X объекта diff --git a/ProjectDumpTruck/ProjectDumpTruck/Entities/EntityDumpTrack.cs b/ProjectDumpTruck/ProjectDumpTruck/Entities/EntityDumpTrack.cs index 945c61f..f96b602 100644 --- a/ProjectDumpTruck/ProjectDumpTruck/Entities/EntityDumpTrack.cs +++ b/ProjectDumpTruck/ProjectDumpTruck/Entities/EntityDumpTrack.cs @@ -13,7 +13,7 @@ public class EntityDumpTrack : EntityTrack /// /// Дополнительный цвет (для опциональных элементов) /// - public Color Additional2Color { get; private set; } + public Color AdditionalAwningColor { get; private set; } /// /// Признак (опция) наличия кузова @@ -38,10 +38,10 @@ public class EntityDumpTrack : EntityTrack /// Признак наличия кузова /// Признак наличия тента - public EntityDumpTrack(int speed, double weight, Color bodyColor, Color additionalColor, Color additional2Color, bool bodywork, bool awning) : base(5, 45, bodyColor) + public EntityDumpTrack(int speed, double weight, Color bodyColor, Color additionalColor, Color additionalAwningColor, bool bodywork, bool awning) : base(5, 45, bodyColor) { AdditionalColor = additionalColor; - Additional2Color = additional2Color; + AdditionalAwningColor = additionalAwningColor; Bodywork = bodywork; Awning = awning; } diff --git a/ProjectDumpTruck/ProjectDumpTruck/FormTrackCollection.Designer.cs b/ProjectDumpTruck/ProjectDumpTruck/FormTrackCollection.Designer.cs index 4d419fb..28639a6 100644 --- a/ProjectDumpTruck/ProjectDumpTruck/FormTrackCollection.Designer.cs +++ b/ProjectDumpTruck/ProjectDumpTruck/FormTrackCollection.Designer.cs @@ -29,106 +29,214 @@ private void InitializeComponent() { groupBoxTools = new GroupBox(); + panelCompanyTools = new Panel(); + buttonAddTrack = new Button(); + buttonAddDumpTrack = new Button(); buttonRefresh = new Button(); + maskedTextBox = new MaskedTextBox(); buttonGoToCheck = new Button(); buttonDelTrack = new Button(); - maskedTextBox = new MaskedTextBox(); - buttonAddDumpTrack = new Button(); - buttonAddTrack = new Button(); + buttonCreateCompany = new Button(); + panelStorage = new Panel(); + buttonCollectionDel = new Button(); + listBoxCollection = new ListBox(); + buttonCollectionAdd = new Button(); + radioButtonList = new RadioButton(); + radioButtonMassive = new RadioButton(); + textBoxCollectionName = new TextBox(); + labelCollectionName = new Label(); comboBoxSelectorCompany = new ComboBox(); pictureBox = new PictureBox(); groupBoxTools.SuspendLayout(); + panelCompanyTools.SuspendLayout(); + panelStorage.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)pictureBox).BeginInit(); SuspendLayout(); // // groupBoxTools // - groupBoxTools.Controls.Add(buttonRefresh); - groupBoxTools.Controls.Add(buttonGoToCheck); - groupBoxTools.Controls.Add(buttonDelTrack); - groupBoxTools.Controls.Add(maskedTextBox); - groupBoxTools.Controls.Add(buttonAddDumpTrack); - groupBoxTools.Controls.Add(buttonAddTrack); + groupBoxTools.Controls.Add(panelCompanyTools); + groupBoxTools.Controls.Add(buttonCreateCompany); + groupBoxTools.Controls.Add(panelStorage); groupBoxTools.Controls.Add(comboBoxSelectorCompany); groupBoxTools.Dock = DockStyle.Right; - groupBoxTools.Location = new Point(745, 0); + groupBoxTools.Location = new Point(790, 0); groupBoxTools.Name = "groupBoxTools"; - groupBoxTools.Size = new Size(216, 493); + groupBoxTools.Size = new Size(216, 588); groupBoxTools.TabIndex = 0; groupBoxTools.TabStop = false; groupBoxTools.Text = "Инструменты"; // + // panelCompanyTools + // + panelCompanyTools.Controls.Add(buttonAddTrack); + panelCompanyTools.Controls.Add(buttonAddDumpTrack); + panelCompanyTools.Controls.Add(buttonRefresh); + panelCompanyTools.Controls.Add(maskedTextBox); + panelCompanyTools.Controls.Add(buttonGoToCheck); + panelCompanyTools.Controls.Add(buttonDelTrack); + panelCompanyTools.Location = new Point(3, 354); + panelCompanyTools.Name = "panelCompanyTools"; + panelCompanyTools.Size = new Size(210, 231); + panelCompanyTools.TabIndex = 9; + // + // buttonAddTrack + // + buttonAddTrack.Location = new Point(9, 12); + buttonAddTrack.Name = "buttonAddTrack"; + buttonAddTrack.Size = new Size(192, 30); + buttonAddTrack.TabIndex = 1; + buttonAddTrack.Text = "Добавление грузовика"; + buttonAddTrack.UseVisualStyleBackColor = true; + buttonAddTrack.Click += ButtonAddTrack_Click; + // + // buttonAddDumpTrack + // + buttonAddDumpTrack.Location = new Point(9, 48); + buttonAddDumpTrack.Name = "buttonAddDumpTrack"; + buttonAddDumpTrack.Size = new Size(192, 27); + buttonAddDumpTrack.TabIndex = 2; + buttonAddDumpTrack.Text = "Добавление самосвала"; + buttonAddDumpTrack.UseVisualStyleBackColor = true; + buttonAddDumpTrack.Click += ButtonAddDumpTrack_Click; + // // buttonRefresh // - buttonRefresh.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; - buttonRefresh.Location = new Point(6, 423); + buttonRefresh.Location = new Point(9, 197); buttonRefresh.Name = "buttonRefresh"; - buttonRefresh.Size = new Size(192, 39); + buttonRefresh.Size = new Size(192, 25); buttonRefresh.TabIndex = 6; buttonRefresh.Text = "Обновить"; buttonRefresh.UseVisualStyleBackColor = true; - buttonRefresh.Click += buttonRefresh_Click; - // - // buttonGoToCheck - // - buttonGoToCheck.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; - buttonGoToCheck.Location = new Point(6, 306); - buttonGoToCheck.Name = "buttonGoToCheck"; - buttonGoToCheck.Size = new Size(192, 39); - buttonGoToCheck.TabIndex = 5; - buttonGoToCheck.Text = "Передать на тесты"; - buttonGoToCheck.UseVisualStyleBackColor = true; - buttonGoToCheck.Click += buttonGoToCheck_Click; - // - // buttonDelTrack - // - buttonDelTrack.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; - buttonDelTrack.Location = new Point(6, 198); - buttonDelTrack.Name = "buttonDelTrack"; - buttonDelTrack.Size = new Size(192, 39); - buttonDelTrack.TabIndex = 4; - buttonDelTrack.Text = "Удалить грузовик"; - buttonDelTrack.UseVisualStyleBackColor = true; - buttonDelTrack.Click += buttonDelTrack_Click; + buttonRefresh.Click += ButtonRefresh_Click; // // maskedTextBox // - maskedTextBox.Location = new Point(6, 169); + maskedTextBox.Location = new Point(9, 88); maskedTextBox.Mask = "00"; maskedTextBox.Name = "maskedTextBox"; maskedTextBox.Size = new Size(192, 23); maskedTextBox.TabIndex = 3; maskedTextBox.ValidatingType = typeof(int); // - // buttonAddDumpTrack + // buttonGoToCheck // - buttonAddDumpTrack.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; - buttonAddDumpTrack.Location = new Point(6, 106); - buttonAddDumpTrack.Name = "buttonAddDumpTrack"; - buttonAddDumpTrack.Size = new Size(192, 39); - buttonAddDumpTrack.TabIndex = 2; - buttonAddDumpTrack.Text = "Добавление самосвала"; - buttonAddDumpTrack.UseVisualStyleBackColor = true; - buttonAddDumpTrack.Click += buttonAddDumpTrack_Click; + buttonGoToCheck.Location = new Point(9, 162); + buttonGoToCheck.Name = "buttonGoToCheck"; + buttonGoToCheck.Size = new Size(192, 29); + buttonGoToCheck.TabIndex = 5; + buttonGoToCheck.Text = "Передать на тесты"; + buttonGoToCheck.UseVisualStyleBackColor = true; + buttonGoToCheck.Click += ButtonGoToCheck_Click; // - // buttonAddTrack + // buttonDelTrack // - buttonAddTrack.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; - buttonAddTrack.Location = new Point(6, 61); - buttonAddTrack.Name = "buttonAddTrack"; - buttonAddTrack.Size = new Size(192, 39); - buttonAddTrack.TabIndex = 1; - buttonAddTrack.Text = "Добавление грузовика"; - buttonAddTrack.UseVisualStyleBackColor = true; - buttonAddTrack.Click += buttonAddTrack_Click; + buttonDelTrack.Location = new Point(9, 117); + buttonDelTrack.Name = "buttonDelTrack"; + buttonDelTrack.Size = new Size(192, 29); + buttonDelTrack.TabIndex = 4; + buttonDelTrack.Text = "Удалить грузовик"; + buttonDelTrack.UseVisualStyleBackColor = true; + buttonDelTrack.Click += ButtonDelTrack_Click; + // + // buttonCreateCompany + // + buttonCreateCompany.Location = new Point(12, 325); + buttonCreateCompany.Name = "buttonCreateCompany"; + buttonCreateCompany.Size = new Size(192, 23); + buttonCreateCompany.TabIndex = 8; + buttonCreateCompany.Text = "Создать компанию"; + buttonCreateCompany.UseVisualStyleBackColor = true; + buttonCreateCompany.Click += ButtonCreateCompany_Click; + // + // panelStorage + // + panelStorage.Controls.Add(buttonCollectionDel); + panelStorage.Controls.Add(listBoxCollection); + panelStorage.Controls.Add(buttonCollectionAdd); + panelStorage.Controls.Add(radioButtonList); + panelStorage.Controls.Add(radioButtonMassive); + panelStorage.Controls.Add(textBoxCollectionName); + panelStorage.Controls.Add(labelCollectionName); + panelStorage.Dock = DockStyle.Top; + panelStorage.Location = new Point(3, 19); + panelStorage.Name = "panelStorage"; + panelStorage.Size = new Size(210, 271); + panelStorage.TabIndex = 7; + // + // buttonCollectionDel + // + buttonCollectionDel.Location = new Point(9, 233); + buttonCollectionDel.Name = "buttonCollectionDel"; + buttonCollectionDel.Size = new Size(192, 23); + buttonCollectionDel.TabIndex = 6; + buttonCollectionDel.Text = "Удалить коллекцию"; + buttonCollectionDel.UseVisualStyleBackColor = true; + buttonCollectionDel.Click += ButtonCollectionDel_Click; + // + // listBoxCollection + // + listBoxCollection.FormattingEnabled = true; + listBoxCollection.ItemHeight = 15; + listBoxCollection.Location = new Point(9, 112); + listBoxCollection.Name = "listBoxCollection"; + listBoxCollection.Size = new Size(192, 109); + listBoxCollection.TabIndex = 5; + // + // buttonCollectionAdd + // + buttonCollectionAdd.Location = new Point(9, 83); + buttonCollectionAdd.Name = "buttonCollectionAdd"; + buttonCollectionAdd.Size = new Size(192, 23); + buttonCollectionAdd.TabIndex = 4; + buttonCollectionAdd.Text = "Добавить коллекцию"; + buttonCollectionAdd.UseVisualStyleBackColor = true; + buttonCollectionAdd.Click += ButtonCollectionAdd_Click; + // + // radioButtonList + // + radioButtonList.AutoSize = true; + radioButtonList.Location = new Point(126, 57); + radioButtonList.Name = "radioButtonList"; + radioButtonList.Size = new Size(66, 19); + radioButtonList.TabIndex = 3; + radioButtonList.TabStop = true; + radioButtonList.Text = "Список"; + radioButtonList.UseVisualStyleBackColor = true; + // + // radioButtonMassive + // + radioButtonMassive.AutoSize = true; + radioButtonMassive.Location = new Point(29, 57); + radioButtonMassive.Name = "radioButtonMassive"; + radioButtonMassive.Size = new Size(67, 19); + radioButtonMassive.TabIndex = 2; + radioButtonMassive.TabStop = true; + radioButtonMassive.Text = "Массив"; + radioButtonMassive.UseVisualStyleBackColor = true; + // + // textBoxCollectionName + // + textBoxCollectionName.Location = new Point(9, 28); + textBoxCollectionName.Name = "textBoxCollectionName"; + textBoxCollectionName.Size = new Size(192, 23); + textBoxCollectionName.TabIndex = 1; + // + // labelCollectionName + // + labelCollectionName.AutoSize = true; + labelCollectionName.Location = new Point(47, 10); + labelCollectionName.Name = "labelCollectionName"; + labelCollectionName.Size = new Size(128, 15); + labelCollectionName.TabIndex = 0; + labelCollectionName.Text = "Название коллекции :"; // // comboBoxSelectorCompany // - comboBoxSelectorCompany.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; comboBoxSelectorCompany.DropDownStyle = ComboBoxStyle.DropDownList; comboBoxSelectorCompany.FormattingEnabled = true; comboBoxSelectorCompany.Items.AddRange(new object[] { "Хранилище" }); - comboBoxSelectorCompany.Location = new Point(6, 22); + comboBoxSelectorCompany.Location = new Point(12, 296); comboBoxSelectorCompany.Name = "comboBoxSelectorCompany"; comboBoxSelectorCompany.Size = new Size(192, 23); comboBoxSelectorCompany.TabIndex = 0; @@ -137,24 +245,27 @@ // pictureBox // pictureBox.Dock = DockStyle.Fill; + pictureBox.Enabled = false; pictureBox.Location = new Point(0, 0); pictureBox.Name = "pictureBox"; - pictureBox.Size = new Size(745, 493); + pictureBox.Size = new Size(790, 588); pictureBox.TabIndex = 1; pictureBox.TabStop = false; - // // FormTrackCollection // AutoScaleDimensions = new SizeF(7F, 15F); AutoScaleMode = AutoScaleMode.Font; - ClientSize = new Size(961, 100); + ClientSize = new Size(1006, 588); Controls.Add(pictureBox); Controls.Add(groupBoxTools); Name = "FormTrackCollection"; Text = "Коллекция самосвалов"; groupBoxTools.ResumeLayout(false); - groupBoxTools.PerformLayout(); + panelCompanyTools.ResumeLayout(false); + panelCompanyTools.PerformLayout(); + panelStorage.ResumeLayout(false); + panelStorage.PerformLayout(); ((System.ComponentModel.ISupportInitialize)pictureBox).EndInit(); ResumeLayout(false); } @@ -170,5 +281,15 @@ private Button buttonGoToCheck; private Button buttonDelTrack; private MaskedTextBox maskedTextBox; + private Panel panelStorage; + private Label labelCollectionName; + private RadioButton radioButtonList; + private RadioButton radioButtonMassive; + private TextBox textBoxCollectionName; + private Button buttonCreateCompany; + private Button buttonCollectionDel; + private ListBox listBoxCollection; + private Button buttonCollectionAdd; + private Panel panelCompanyTools; } } \ No newline at end of file diff --git a/ProjectDumpTruck/ProjectDumpTruck/FormTrackCollection.cs b/ProjectDumpTruck/ProjectDumpTruck/FormTrackCollection.cs index d4b36cd..f96f41c 100644 --- a/ProjectDumpTruck/ProjectDumpTruck/FormTrackCollection.cs +++ b/ProjectDumpTruck/ProjectDumpTruck/FormTrackCollection.cs @@ -9,6 +9,11 @@ namespace ProjectDumpTruck; /// public partial class FormTrackCollection : Form { + /// + /// Хранилище коллекций + /// + private readonly StorageCollection _storageCollection; + /// /// Компания /// @@ -20,6 +25,7 @@ public partial class FormTrackCollection : Form public FormTrackCollection() { InitializeComponent(); + _storageCollection = new(); } /// @@ -29,12 +35,7 @@ public partial class FormTrackCollection : Form /// private void ComboBoxSelectorCompany_SelectedIndexChanged(object sender, EventArgs e) { - switch (comboBoxSelectorCompany.Text) - { - case "Хранилище": - _company = new CarSharingService(pictureBox.Width, pictureBox.Height, new MassiveGenericObjects< DrawningTrack > ()); - break; - } + panelCompanyTools.Enabled = false; } /// @@ -42,14 +43,14 @@ public partial class FormTrackCollection : Form /// /// /// - private void buttonAddTrack_Click(object sender, EventArgs e) => CreateObject(nameof(DrawningTrack)); + private void ButtonAddTrack_Click(object sender, EventArgs e) => CreateObject(nameof(DrawningTrack)); /// /// Добавление спортивного автомобиля /// /// /// - private void buttonAddDumpTrack_Click(object sender, EventArgs e) => CreateObject(nameof(DrawningDumpTrack)); + private void ButtonAddDumpTrack_Click(object sender, EventArgs e) => CreateObject(nameof(DrawningDumpTrack)); /// /// Создание объекта класса-перемещения @@ -69,7 +70,7 @@ public partial class FormTrackCollection : Form case nameof(DrawningTrack): drawningTrack = new DrawningTrack(random.Next(100, 300), random.Next(1000, 3000), GetColor(random)); break; - case nameof(DrawningDumpTrack): + case nameof(DrawningDumpTrack): drawningTrack = new DrawningDumpTrack(random.Next(100, 300), random.Next(1000, 3000), GetColor(random), GetColor(random), GetColor(random), Convert.ToBoolean(random.Next(2, 2)), Convert.ToBoolean(random.Next(1, 2))); break; @@ -105,14 +106,14 @@ public partial class FormTrackCollection : Form return color; } - + /// /// Удаление объекта /// /// /// - private void buttonDelTrack_Click(object sender, EventArgs e) + private void ButtonDelTrack_Click(object sender, EventArgs e) { if (string.IsNullOrEmpty(maskedTextBox.Text) || _company == null) { @@ -141,7 +142,7 @@ public partial class FormTrackCollection : Form /// /// /// - private void buttonGoToCheck_Click(object sender, EventArgs e) + private void ButtonGoToCheck_Click(object sender, EventArgs e) { if (_company == null) { @@ -177,7 +178,7 @@ public partial class FormTrackCollection : Form /// /// /// - private void buttonRefresh_Click(object sender, EventArgs e) + private void ButtonRefresh_Click(object sender, EventArgs e) { if (_company == null) { @@ -187,5 +188,104 @@ public partial class FormTrackCollection : Form pictureBox.Image = _company.Show(); } - + /// + /// Добавление коллекции + /// + /// + /// + private void ButtonCollectionAdd_Click(object sender, EventArgs e) + { + if (string.IsNullOrEmpty(textBoxCollectionName.Text) || (!radioButtonList.Checked && !radioButtonMassive.Checked)) + { + MessageBox.Show("Не все данные заполнены", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); + return; + } + + CollectionType collectionType = CollectionType.None; + if (radioButtonMassive.Checked) + { + collectionType = CollectionType.Massive; + } + else if (radioButtonList.Checked) + { + collectionType = CollectionType.List; + } + + _storageCollection.AddCollection(textBoxCollectionName.Text, collectionType); + RerfreshListBoxItems(); + } + + /// + /// Обновление списка в listBoxCollection + /// + private void RerfreshListBoxItems() + { + listBoxCollection.Items.Clear(); + for (int i = 0; i < _storageCollection.Keys?.Count; ++i) + { + string? colName = _storageCollection.Keys?[i]; + if (!string.IsNullOrEmpty(colName)) + { + listBoxCollection.Items.Add(colName); + } + } + + } + + /// + /// Удаление коллекции + /// + private void ButtonCollectionDel_Click(object sender, EventArgs e) + { + // TODO прописать логику удаления элемента из коллекции + // нужно убедиться, что есть выбранная коллекция + // спросить у пользователя через MessageBox, что он подтверждает, что хочет удалить запись + // удалить и обновить ListBox + + if (listBoxCollection.SelectedIndex < 0 || listBoxCollection.SelectedItem == null) + { + MessageBox.Show("Коллекция не выбрана"); + return; + } + + if (MessageBox.Show("Удалить коллекцию?", "Удаление", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) + { + return; + } + _storageCollection.DelCollection(listBoxCollection.SelectedItem.ToString()); + RerfreshListBoxItems(); + } + + /// + /// Создание компании + /// + /// + /// + private void ButtonCreateCompany_Click(object sender, EventArgs e) + { + if (listBoxCollection.SelectedIndex < 0 || listBoxCollection.SelectedItem == null) + { + MessageBox.Show("Коллекция не выбрана"); + return; + } + + ICollectionGenericObjects? collection = _storageCollection[listBoxCollection.SelectedItem.ToString() ?? string.Empty]; + if (collection == null) + { + MessageBox.Show("Коллекция не проинициализирована"); + return; + } + + switch (comboBoxSelectorCompany.Text) + { + case "Хранилище": + _company = new CarSharingService(pictureBox.Width, pictureBox.Height, collection); + break; + } + + panelCompanyTools.Enabled = true; + RerfreshListBoxItems(); + } } + + diff --git a/ProjectDumpTruck/ProjectDumpTruck/FormTransport.Designer.cs b/ProjectDumpTruck/ProjectDumpTruck/FormTransport.Designer.cs index 14289a1..5a4ff8f 100644 --- a/ProjectDumpTruck/ProjectDumpTruck/FormTransport.Designer.cs +++ b/ProjectDumpTruck/ProjectDumpTruck/FormTransport.Designer.cs @@ -97,17 +97,19 @@ // // comboBoxStrategy // + comboBoxStrategy.Anchor = AnchorStyles.Top | AnchorStyles.Right; comboBoxStrategy.DropDownStyle = ComboBoxStyle.DropDownList; comboBoxStrategy.FormattingEnabled = true; comboBoxStrategy.Items.AddRange(new object[] { "К центру", "К краю" }); - comboBoxStrategy.Location = new Point(670, 12); + comboBoxStrategy.Location = new Point(676, 12); comboBoxStrategy.Name = "comboBoxStrategy"; comboBoxStrategy.Size = new Size(112, 23); comboBoxStrategy.TabIndex = 7; // // buttonStrategyStep // - buttonStrategyStep.Location = new Point(721, 41); + buttonStrategyStep.Anchor = AnchorStyles.Top | AnchorStyles.Right; + buttonStrategyStep.Location = new Point(727, 45); buttonStrategyStep.Name = "buttonStrategyStep"; buttonStrategyStep.Size = new Size(61, 22); buttonStrategyStep.TabIndex = 8;