Залил лаб 8
This commit is contained in:
parent
411f72dd2a
commit
cf861f3471
51
Trolleybus/Trolleybus/BusCompareByColor.cs
Normal file
51
Trolleybus/Trolleybus/BusCompareByColor.cs
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Drawing.Drawing2D;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using Trolleybus.DrawingObjects;
|
||||||
|
using Trolleybus.Entities;
|
||||||
|
|
||||||
|
namespace Trolleybus.Generics
|
||||||
|
{
|
||||||
|
internal class BusCompareByColor : IComparer<DrawingBus?>
|
||||||
|
{
|
||||||
|
public int Compare(DrawingBus? x, DrawingBus? y)
|
||||||
|
{
|
||||||
|
if (x == null || x.EntityBus == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(x));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (y == null || y.EntityBus == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(y));
|
||||||
|
}
|
||||||
|
|
||||||
|
var bodyColorCompare = x.EntityBus.BodyColor.Name.CompareTo(y.EntityBus.BodyColor.Name);
|
||||||
|
|
||||||
|
// Если оба объекта простые или разных типов (т.е. хотя бы 1 непродвинутый), то сравнение по основному цвету
|
||||||
|
if (!(x.GetType().Name == "DrawingTrolleybus" && y.GetType().Name == "DrawingTrolleybus"))
|
||||||
|
{
|
||||||
|
return bodyColorCompare;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Если оба объекта продвинутые
|
||||||
|
else
|
||||||
|
{
|
||||||
|
EntityTrolleybus entityX = (EntityTrolleybus)x.EntityBus;
|
||||||
|
EntityTrolleybus entityY = (EntityTrolleybus)y.EntityBus;
|
||||||
|
|
||||||
|
// Если основные цвета одинаковые, сравнение по доп. цвету
|
||||||
|
if (bodyColorCompare == 0)
|
||||||
|
{
|
||||||
|
return entityX.AdditionalColor.Name.CompareTo(entityY.AdditionalColor.Name);
|
||||||
|
}
|
||||||
|
// иначе сравнение по основному цвету
|
||||||
|
return bodyColorCompare;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
39
Trolleybus/Trolleybus/BusCompareByType.cs
Normal file
39
Trolleybus/Trolleybus/BusCompareByType.cs
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using Trolleybus.DrawingObjects;
|
||||||
|
|
||||||
|
namespace Trolleybus.Generics
|
||||||
|
{
|
||||||
|
internal class BusCompareByType : IComparer<DrawingBus?>
|
||||||
|
{
|
||||||
|
public int Compare(DrawingBus? x, DrawingBus? y)
|
||||||
|
{
|
||||||
|
if (x == null || x.EntityBus == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(x));
|
||||||
|
}
|
||||||
|
if (y == null || y.EntityBus == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(y));
|
||||||
|
}
|
||||||
|
// Сравнение по типу (простой / продвинутый)
|
||||||
|
if (x.GetType().Name != y.GetType().Name)
|
||||||
|
{
|
||||||
|
return x.GetType().Name.CompareTo(y.GetType().Name);
|
||||||
|
}
|
||||||
|
// Сравнение по скорости
|
||||||
|
var speedCompare = x.EntityBus.Speed.CompareTo(y.EntityBus.Speed);
|
||||||
|
if (speedCompare != 0)
|
||||||
|
{
|
||||||
|
return speedCompare;
|
||||||
|
}
|
||||||
|
// Сравнение по весу
|
||||||
|
return x.EntityBus.Weight.CompareTo(y.EntityBus.Weight);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
27
Trolleybus/Trolleybus/BusesCollectionInfo.cs
Normal file
27
Trolleybus/Trolleybus/BusesCollectionInfo.cs
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Trolleybus.Generics
|
||||||
|
{
|
||||||
|
internal class BusesCollectionInfo : IEquatable<BusesCollectionInfo>
|
||||||
|
{
|
||||||
|
public string Name { get; private set; }
|
||||||
|
public string Description { get; private set; }
|
||||||
|
public BusesCollectionInfo(string name, string description)
|
||||||
|
{
|
||||||
|
Name = name;
|
||||||
|
Description = description;
|
||||||
|
}
|
||||||
|
public bool Equals(BusesCollectionInfo? other)
|
||||||
|
{
|
||||||
|
return Name == other.Name;
|
||||||
|
}
|
||||||
|
public override int GetHashCode()
|
||||||
|
{
|
||||||
|
return this.Name.GetHashCode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -50,6 +50,13 @@ namespace Trolleybus.Generics
|
|||||||
_pictureHeight = picHeight;
|
_pictureHeight = picHeight;
|
||||||
_collection = new SetGeneric<T>(width * height); //width*height - кол-во мест на PictureBox для автобусов; размер массива
|
_collection = new SetGeneric<T>(width * height); //width*height - кол-во мест на PictureBox для автобусов; размер массива
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Сортировка
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="comparer"></param>
|
||||||
|
public void Sort(IComparer<T?> comparer) => _collection.SortSet(comparer);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Перегрузка оператора сложения
|
/// Перегрузка оператора сложения
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -63,7 +70,7 @@ namespace Trolleybus.Generics
|
|||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
return collect._collection.Insert(obj);
|
return collect._collection.Insert(obj, new DrawingBusEquality());
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Перегрузка оператора вычитания
|
/// Перегрузка оператора вычитания
|
||||||
|
@ -15,12 +15,12 @@ namespace Trolleybus.Generics
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Словарь (хранилище)
|
/// Словарь (хранилище)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
readonly Dictionary<string, BusesGenericCollection<DrawingBus, DrawingObjectBus>> _busStorages;
|
readonly Dictionary<BusesCollectionInfo, BusesGenericCollection<DrawingBus, DrawingObjectBus>> _busStorages;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Возвращение списка названий наборов
|
/// Возвращение списка названий наборов
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public List<string> Keys => _busStorages.Keys.ToList();
|
public List<BusesCollectionInfo> Keys => _busStorages.Keys.ToList();
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ширина окна отрисовки
|
/// Ширина окна отрисовки
|
||||||
@ -52,7 +52,7 @@ namespace Trolleybus.Generics
|
|||||||
/// <param name="pictureHeight"></param>
|
/// <param name="pictureHeight"></param>
|
||||||
public BusesGenericStorage(int pictureWidth, int pictureHeight)
|
public BusesGenericStorage(int pictureWidth, int pictureHeight)
|
||||||
{
|
{
|
||||||
_busStorages = new Dictionary<string, BusesGenericCollection<DrawingBus, DrawingObjectBus>>();
|
_busStorages = new Dictionary<BusesCollectionInfo, BusesGenericCollection<DrawingBus, DrawingObjectBus>>();
|
||||||
_pictureWidth = pictureWidth;
|
_pictureWidth = pictureWidth;
|
||||||
_pictureHeight = pictureHeight;
|
_pictureHeight = pictureHeight;
|
||||||
}
|
}
|
||||||
@ -63,13 +63,14 @@ namespace Trolleybus.Generics
|
|||||||
/// <param name="name">Название набора</param>
|
/// <param name="name">Название набора</param>
|
||||||
public void AddSet(string name)
|
public void AddSet(string name)
|
||||||
{
|
{
|
||||||
|
BusesCollectionInfo currentCollectionInfo = new BusesCollectionInfo(name, string.Empty);
|
||||||
// проверка, существует ли набор с таким ключём
|
// проверка, существует ли набор с таким ключём
|
||||||
if (_busStorages.ContainsKey(name))
|
if (_busStorages.ContainsKey(currentCollectionInfo))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var busCollection = new BusesGenericCollection<DrawingBus, DrawingObjectBus>(_pictureWidth, _pictureHeight);
|
var busCollection = new BusesGenericCollection<DrawingBus, DrawingObjectBus>(_pictureWidth, _pictureHeight);
|
||||||
_busStorages.Add(name, busCollection);
|
_busStorages.Add(currentCollectionInfo, busCollection);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -78,9 +79,10 @@ namespace Trolleybus.Generics
|
|||||||
/// <param name="name">Название набора</param>
|
/// <param name="name">Название набора</param>
|
||||||
public void DelSet(string name)
|
public void DelSet(string name)
|
||||||
{
|
{
|
||||||
if (_busStorages.ContainsKey(name))
|
BusesCollectionInfo currentCollectionInfo = new BusesCollectionInfo(name, string.Empty);
|
||||||
|
if (_busStorages.ContainsKey(currentCollectionInfo))
|
||||||
{
|
{
|
||||||
_busStorages.Remove(name);
|
_busStorages.Remove(currentCollectionInfo);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -92,11 +94,12 @@ namespace Trolleybus.Generics
|
|||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
if (!_busStorages.ContainsKey(ind))
|
BusesCollectionInfo currentCollectionInfo = new BusesCollectionInfo(ind, string.Empty);
|
||||||
|
if (!_busStorages.ContainsKey(currentCollectionInfo))
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
return _busStorages[ind];
|
return _busStorages[currentCollectionInfo];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -112,14 +115,14 @@ namespace Trolleybus.Generics
|
|||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder data = new();
|
StringBuilder data = new();
|
||||||
foreach (KeyValuePair<string, BusesGenericCollection<DrawingBus, DrawingObjectBus>> record in _busStorages)
|
foreach (KeyValuePair<BusesCollectionInfo, BusesGenericCollection<DrawingBus, DrawingObjectBus>> record in _busStorages)
|
||||||
{
|
{
|
||||||
StringBuilder records = new();
|
StringBuilder records = new();
|
||||||
foreach (DrawingBus? elem in record.Value.GetBuses)
|
foreach (DrawingBus? elem in record.Value.GetBuses)
|
||||||
{
|
{
|
||||||
records.Append($"{elem?.GetDataForSave(_separatorForObject)}{_separatorRecords}");
|
records.Append($"{elem?.GetDataForSave(_separatorForObject)}{_separatorRecords}");
|
||||||
}
|
}
|
||||||
data.AppendLine($"{record.Key}{_separatorForKeyValue}{records}");
|
data.AppendLine($"{record.Key.Name}{_separatorForKeyValue}{records}");
|
||||||
}
|
}
|
||||||
if (data.Length == 0)
|
if (data.Length == 0)
|
||||||
{
|
{
|
||||||
@ -172,7 +175,7 @@ namespace Trolleybus.Generics
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_busStorages.Add(record[0], collection);
|
_busStorages.Add(new BusesCollectionInfo(record[0], string.Empty), collection);
|
||||||
currentLine = sr.ReadLine();
|
currentLine = sr.ReadLine();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
75
Trolleybus/Trolleybus/DrawingBusEquality.cs
Normal file
75
Trolleybus/Trolleybus/DrawingBusEquality.cs
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
using Trolleybus.DrawingObjects;
|
||||||
|
using Trolleybus.Entities;
|
||||||
|
using System.Diagnostics.CodeAnalysis;
|
||||||
|
|
||||||
|
namespace Trolleybus.Generics
|
||||||
|
{
|
||||||
|
internal class DrawingBusEquality : IEqualityComparer<DrawingBus?>
|
||||||
|
{
|
||||||
|
public bool Equals(DrawingBus? x, DrawingBus? y)
|
||||||
|
{
|
||||||
|
if (x == null || x.EntityBus == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(x));
|
||||||
|
}
|
||||||
|
if (y == null || y.EntityBus == null)
|
||||||
|
{
|
||||||
|
throw new ArgumentNullException(nameof(y));
|
||||||
|
}
|
||||||
|
if (x.GetType().Name != y.GetType().Name)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (x.EntityBus.Speed != y.EntityBus.Speed)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (x.EntityBus.Weight != y.EntityBus.Weight)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (x.EntityBus.BodyColor != y.EntityBus.BodyColor)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Если оба сравниваемых объекта продвинутые
|
||||||
|
if (x is DrawingTrolleybus && y is DrawingTrolleybus)
|
||||||
|
{
|
||||||
|
// Cравнение дополнительных параметров
|
||||||
|
EntityTrolleybus entityX = (EntityTrolleybus)x.EntityBus;
|
||||||
|
EntityTrolleybus entityY = (EntityTrolleybus)y.EntityBus;
|
||||||
|
|
||||||
|
// сравнение доп. цвета
|
||||||
|
if (entityX.AdditionalColor != entityY.AdditionalColor)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// сравнение наличия "рогов"
|
||||||
|
if (entityX.Horns != entityY.Horns)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// сравнение наличия отсека для батарей
|
||||||
|
if (entityX.Batteries != entityY.Batteries)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
public int GetHashCode([DisallowNull] DrawingBus obj)
|
||||||
|
{
|
||||||
|
return obj.GetHashCode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -46,7 +46,7 @@ namespace Trolleybus
|
|||||||
listBoxSets.Items.Clear();
|
listBoxSets.Items.Clear();
|
||||||
for (int i = 0; i < _storage.Keys.Count; i++)
|
for (int i = 0; i < _storage.Keys.Count; i++)
|
||||||
{
|
{
|
||||||
listBoxSets.Items.Add(_storage.Keys[i]);
|
listBoxSets.Items.Add(_storage.Keys[i].Name);
|
||||||
}
|
}
|
||||||
if (listBoxSets.Items.Count > 0 && (index == -1 || index >= listBoxSets.Items.Count))
|
if (listBoxSets.Items.Count > 0 && (index == -1 || index >= listBoxSets.Items.Count))
|
||||||
{
|
{
|
||||||
@ -135,7 +135,7 @@ namespace Trolleybus
|
|||||||
String nameOfSet = listBoxSets.SelectedItem.ToString() ?? string.Empty;
|
String nameOfSet = listBoxSets.SelectedItem.ToString() ?? string.Empty;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if(obj + selectedBus != -1)
|
if (obj + selectedBus != -1)
|
||||||
{
|
{
|
||||||
MessageBox.Show("Объект добавлен");
|
MessageBox.Show("Объект добавлен");
|
||||||
_logger.LogInformation($"Объект добавлен в набор {nameOfSet}");
|
_logger.LogInformation($"Объект добавлен в набор {nameOfSet}");
|
||||||
@ -154,6 +154,12 @@ namespace Trolleybus
|
|||||||
MessageBox.Show("Не удалось добавить объект");
|
MessageBox.Show("Не удалось добавить объект");
|
||||||
_logger.LogWarning($"Не удалось добавить объект в набор {nameOfSet} : {ex.Message}");
|
_logger.LogWarning($"Не удалось добавить объект в набор {nameOfSet} : {ex.Message}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
catch (ArgumentException ex)
|
||||||
|
{
|
||||||
|
MessageBox.Show("Добавляемый объект уже есть в наборе");
|
||||||
|
_logger.LogWarning($"Ошибка добавления в набор {listBoxSets.SelectedItem.ToString() ?? string.Empty} : {ex.Message}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Удаление объекта из набора
|
/// Удаление объекта из набора
|
||||||
@ -267,10 +273,45 @@ namespace Trolleybus
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Сортировка по типу
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void ButtonSortByType_Click(object sender, EventArgs e) => CompareBuses(new BusCompareByType());
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Сортировка по цвету
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="sender"></param>
|
||||||
|
/// <param name="e"></param>
|
||||||
|
private void ButtonSortByColor_Click(object sender, EventArgs e) => CompareBuses(new BusCompareByColor());
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Сортировка по сравнителю
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="comparer"></param>
|
||||||
|
private void CompareBuses(IComparer<DrawingBus?> comparer)
|
||||||
|
{
|
||||||
|
if (listBoxSets.SelectedIndex == -1)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var obj = _storage[listBoxSets.SelectedItem.ToString() ?? string.Empty];
|
||||||
|
if (obj == null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
obj.Sort(comparer);
|
||||||
|
pictureBoxCollection.Image = obj.ShowBuses();
|
||||||
|
}
|
||||||
|
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
pictureBoxCollection = new PictureBox();
|
pictureBoxCollection = new PictureBox();
|
||||||
panelTools = new Panel();
|
panelTools = new Panel();
|
||||||
|
buttonSortByColor = new Button();
|
||||||
|
buttonSortByType = new Button();
|
||||||
panelSets = new Panel();
|
panelSets = new Panel();
|
||||||
buttonDeleteSetOfObjects = new Button();
|
buttonDeleteSetOfObjects = new Button();
|
||||||
textBoxNameOfSet = new TextBox();
|
textBoxNameOfSet = new TextBox();
|
||||||
@ -297,7 +338,7 @@ namespace Trolleybus
|
|||||||
pictureBoxCollection.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
|
pictureBoxCollection.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Left | AnchorStyles.Right;
|
||||||
pictureBoxCollection.Location = new Point(0, 36);
|
pictureBoxCollection.Location = new Point(0, 36);
|
||||||
pictureBoxCollection.Name = "pictureBoxCollection";
|
pictureBoxCollection.Name = "pictureBoxCollection";
|
||||||
pictureBoxCollection.Size = new Size(270, 517);
|
pictureBoxCollection.Size = new Size(670, 617);
|
||||||
pictureBoxCollection.TabIndex = 0;
|
pictureBoxCollection.TabIndex = 0;
|
||||||
pictureBoxCollection.TabStop = false;
|
pictureBoxCollection.TabStop = false;
|
||||||
//
|
//
|
||||||
@ -305,16 +346,38 @@ namespace Trolleybus
|
|||||||
//
|
//
|
||||||
panelTools.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right;
|
panelTools.Anchor = AnchorStyles.Top | AnchorStyles.Bottom | AnchorStyles.Right;
|
||||||
panelTools.BorderStyle = BorderStyle.FixedSingle;
|
panelTools.BorderStyle = BorderStyle.FixedSingle;
|
||||||
|
panelTools.Controls.Add(buttonSortByColor);
|
||||||
|
panelTools.Controls.Add(buttonSortByType);
|
||||||
panelTools.Controls.Add(panelSets);
|
panelTools.Controls.Add(panelSets);
|
||||||
panelTools.Controls.Add(buttonRefreshCollection);
|
panelTools.Controls.Add(buttonRefreshCollection);
|
||||||
panelTools.Controls.Add(maskedTextBoxNumber);
|
panelTools.Controls.Add(maskedTextBoxNumber);
|
||||||
panelTools.Controls.Add(buttonRemoveBus);
|
panelTools.Controls.Add(buttonRemoveBus);
|
||||||
panelTools.Controls.Add(buttonAddBus);
|
panelTools.Controls.Add(buttonAddBus);
|
||||||
panelTools.Location = new Point(276, 36);
|
panelTools.Location = new Point(676, 36);
|
||||||
panelTools.Name = "panelTools";
|
panelTools.Name = "panelTools";
|
||||||
panelTools.Size = new Size(200, 517);
|
panelTools.Size = new Size(200, 617);
|
||||||
panelTools.TabIndex = 1;
|
panelTools.TabIndex = 1;
|
||||||
//
|
//
|
||||||
|
// buttonSortByColor
|
||||||
|
//
|
||||||
|
buttonSortByColor.Location = new Point(13, 345);
|
||||||
|
buttonSortByColor.Name = "buttonSortByColor";
|
||||||
|
buttonSortByColor.Size = new Size(180, 30);
|
||||||
|
buttonSortByColor.TabIndex = 6;
|
||||||
|
buttonSortByColor.Text = "Сортировать по цвету";
|
||||||
|
buttonSortByColor.UseVisualStyleBackColor = true;
|
||||||
|
buttonSortByColor.Click += ButtonSortByColor_Click;
|
||||||
|
//
|
||||||
|
// buttonSortByType
|
||||||
|
//
|
||||||
|
buttonSortByType.Location = new Point(13, 309);
|
||||||
|
buttonSortByType.Name = "buttonSortByType";
|
||||||
|
buttonSortByType.Size = new Size(180, 30);
|
||||||
|
buttonSortByType.TabIndex = 5;
|
||||||
|
buttonSortByType.Text = "Сортировать по типу";
|
||||||
|
buttonSortByType.UseVisualStyleBackColor = true;
|
||||||
|
buttonSortByType.Click += ButtonSortByType_Click;
|
||||||
|
//
|
||||||
// panelSets
|
// panelSets
|
||||||
//
|
//
|
||||||
panelSets.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
panelSets.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||||
@ -367,7 +430,7 @@ namespace Trolleybus
|
|||||||
//
|
//
|
||||||
// buttonRefreshCollection
|
// buttonRefreshCollection
|
||||||
//
|
//
|
||||||
buttonRefreshCollection.Location = new Point(17, 465);
|
buttonRefreshCollection.Location = new Point(17, 549);
|
||||||
buttonRefreshCollection.Name = "buttonRefreshCollection";
|
buttonRefreshCollection.Name = "buttonRefreshCollection";
|
||||||
buttonRefreshCollection.Size = new Size(170, 40);
|
buttonRefreshCollection.Size = new Size(170, 40);
|
||||||
buttonRefreshCollection.TabIndex = 3;
|
buttonRefreshCollection.TabIndex = 3;
|
||||||
@ -377,7 +440,7 @@ namespace Trolleybus
|
|||||||
//
|
//
|
||||||
// maskedTextBoxNumber
|
// maskedTextBoxNumber
|
||||||
//
|
//
|
||||||
maskedTextBoxNumber.Location = new Point(39, 366);
|
maskedTextBoxNumber.Location = new Point(39, 450);
|
||||||
maskedTextBoxNumber.Mask = "00";
|
maskedTextBoxNumber.Mask = "00";
|
||||||
maskedTextBoxNumber.Name = "maskedTextBoxNumber";
|
maskedTextBoxNumber.Name = "maskedTextBoxNumber";
|
||||||
maskedTextBoxNumber.Size = new Size(125, 27);
|
maskedTextBoxNumber.Size = new Size(125, 27);
|
||||||
@ -386,7 +449,7 @@ namespace Trolleybus
|
|||||||
//
|
//
|
||||||
// buttonRemoveBus
|
// buttonRemoveBus
|
||||||
//
|
//
|
||||||
buttonRemoveBus.Location = new Point(17, 409);
|
buttonRemoveBus.Location = new Point(17, 493);
|
||||||
buttonRemoveBus.Name = "buttonRemoveBus";
|
buttonRemoveBus.Name = "buttonRemoveBus";
|
||||||
buttonRemoveBus.Size = new Size(170, 40);
|
buttonRemoveBus.Size = new Size(170, 40);
|
||||||
buttonRemoveBus.TabIndex = 1;
|
buttonRemoveBus.TabIndex = 1;
|
||||||
@ -396,7 +459,7 @@ namespace Trolleybus
|
|||||||
//
|
//
|
||||||
// buttonAddBus
|
// buttonAddBus
|
||||||
//
|
//
|
||||||
buttonAddBus.Location = new Point(17, 311);
|
buttonAddBus.Location = new Point(17, 395);
|
||||||
buttonAddBus.Name = "buttonAddBus";
|
buttonAddBus.Name = "buttonAddBus";
|
||||||
buttonAddBus.Size = new Size(170, 40);
|
buttonAddBus.Size = new Size(170, 40);
|
||||||
buttonAddBus.TabIndex = 0;
|
buttonAddBus.TabIndex = 0;
|
||||||
@ -410,7 +473,7 @@ namespace Trolleybus
|
|||||||
menuStrip.Items.AddRange(new ToolStripItem[] { fileToolStripMenuItem });
|
menuStrip.Items.AddRange(new ToolStripItem[] { fileToolStripMenuItem });
|
||||||
menuStrip.Location = new Point(0, 0);
|
menuStrip.Location = new Point(0, 0);
|
||||||
menuStrip.Name = "menuStrip";
|
menuStrip.Name = "menuStrip";
|
||||||
menuStrip.Size = new Size(482, 28);
|
menuStrip.Size = new Size(882, 28);
|
||||||
menuStrip.TabIndex = 2;
|
menuStrip.TabIndex = 2;
|
||||||
menuStrip.Text = "menuStrip1";
|
menuStrip.Text = "menuStrip1";
|
||||||
//
|
//
|
||||||
@ -446,7 +509,7 @@ namespace Trolleybus
|
|||||||
//
|
//
|
||||||
// FormBusesCollection
|
// FormBusesCollection
|
||||||
//
|
//
|
||||||
ClientSize = new Size(482, 553);
|
ClientSize = new Size(882, 653);
|
||||||
Controls.Add(panelTools);
|
Controls.Add(panelTools);
|
||||||
Controls.Add(pictureBoxCollection);
|
Controls.Add(pictureBoxCollection);
|
||||||
Controls.Add(menuStrip);
|
Controls.Add(menuStrip);
|
||||||
@ -463,7 +526,8 @@ namespace Trolleybus
|
|||||||
ResumeLayout(false);
|
ResumeLayout(false);
|
||||||
PerformLayout();
|
PerformLayout();
|
||||||
}
|
}
|
||||||
|
private Button buttonSortByColor;
|
||||||
|
private Button buttonSortByType;
|
||||||
private PictureBox pictureBoxCollection;
|
private PictureBox pictureBoxCollection;
|
||||||
private Panel panelTools;
|
private Panel panelTools;
|
||||||
private Button buttonRefreshCollection;
|
private Button buttonRefreshCollection;
|
||||||
|
@ -35,18 +35,23 @@ namespace Trolleybus.Generics
|
|||||||
_maxCount = count;
|
_maxCount = count;
|
||||||
_places = new List<T?>(count);
|
_places = new List<T?>(count);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Сортировка набора объектов
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="comparer"></param>
|
||||||
|
public void SortSet(IComparer<T?> comparer) => _places.Sort(comparer);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Добавление объекта в начало набора
|
/// Добавление объекта в начало набора
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="bus">Добавляемый автобус</param>
|
/// <param name="bus">Добавляемый автобус</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public int Insert(T bus)
|
public int Insert(T bus, IEqualityComparer<T?>? equal = null)
|
||||||
{
|
{
|
||||||
if (Count + 1 <= _maxCount)
|
if (Count + 1 <= _maxCount)
|
||||||
{
|
{
|
||||||
_places.Insert(0, bus);
|
return Insert(bus, 0, equal);
|
||||||
//0 в данном случае место, на котоорое добавился элемннт, вставка прошла успешно
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
//если при добавлении в списке станет больше макс. кол-ва элементов, то как бы вставлять будет некуда
|
//если при добавлении в списке станет больше макс. кол-ва элементов, то как бы вставлять будет некуда
|
||||||
throw new StorageOverflowException(_maxCount);
|
throw new StorageOverflowException(_maxCount);
|
||||||
@ -57,7 +62,7 @@ namespace Trolleybus.Generics
|
|||||||
/// <param name="bus">Добавляемый автобус</param>
|
/// <param name="bus">Добавляемый автобус</param>
|
||||||
/// <param name="position">Позиция</param>
|
/// <param name="position">Позиция</param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public int Insert(T bus, int position)
|
public int Insert(T bus, int position, IEqualityComparer<T>? equal = null)
|
||||||
{
|
{
|
||||||
if (position >= _maxCount || position < 0)
|
if (position >= _maxCount || position < 0)
|
||||||
{
|
{
|
||||||
@ -66,6 +71,10 @@ namespace Trolleybus.Generics
|
|||||||
}
|
}
|
||||||
if (Count + 1 <= _maxCount)
|
if (Count + 1 <= _maxCount)
|
||||||
{
|
{
|
||||||
|
if (equal != null && _places.Contains(bus, equal))
|
||||||
|
{
|
||||||
|
throw new ArgumentException("Объект уже существует");
|
||||||
|
}
|
||||||
_places.Insert(position, bus);
|
_places.Insert(position, bus);
|
||||||
//место в списке, по которому вставили, вставка прошла успешно
|
//место в списке, по которому вставили, вставка прошла успешно
|
||||||
return position;
|
return position;
|
||||||
|
Loading…
Reference in New Issue
Block a user