PIbd-21. Kryukov A.I. Lab work 08 base #23
@ -0,0 +1,56 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using ProjectExcavator.Entities;
|
||||
|
||||
namespace ProjectExcavator.Generic
|
||||
{
|
||||
internal class DrawningExcavatorEqutables : IEqualityComparer<DrawningExcavator>
|
||||
{
|
||||
public bool Equals(DrawningExcavator? x, DrawningExcavator? y)
|
||||
{
|
||||
if (x == null || x.EntityExcavator == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(x));
|
||||
}
|
||||
if ( y == null || y.EntityExcavator == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(y));
|
||||
}
|
||||
if(x.GetType().Name != y.GetType().Name)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if(x.EntityExcavator.Speed != y.EntityExcavator.Speed)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if(x.EntityExcavator.Weight != y.EntityExcavator.Weight)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if(x.EntityExcavator.BodyColor != y.EntityExcavator.BodyColor) { return false; }
|
||||
if(x is DrawningExcavatorBodyKits && y is DrawningExcavatorBodyKits)
|
||||
|
||||
{
|
||||
EntityExcavatorBodyKits xExcavator = (EntityExcavatorBodyKits)x.EntityExcavator;
|
||||
EntityExcavatorBodyKits yExcavator = (EntityExcavatorBodyKits)y.EntityExcavator;
|
||||
if(xExcavator.Bucket != yExcavator.Bucket)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if(xExcavator.BodyKit != yExcavator.BodyKit)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
public int GetHashCode([DisallowNull] DrawningExcavator obj)
|
||||
{
|
||||
return obj.GetHashCode();
|
||||
}
|
||||
}
|
||||
}
|
30
ProjectExcavator/ProjectExcavator/ExcavatorCompareByColor.cs
Normal file
30
ProjectExcavator/ProjectExcavator/ExcavatorCompareByColor.cs
Normal file
@ -0,0 +1,30 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ProjectExcavator
|
||||
{
|
||||
internal class ExcavatorCompareByColor : IComparer<DrawningExcavator>
|
||||
{
|
||||
public int Compare(DrawningExcavator? x, DrawningExcavator? y)
|
||||
{
|
||||
if(x == null || x.EntityExcavator == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(x));
|
||||
}
|
||||
if (y == null || y.EntityExcavator == null) { throw new ArgumentNullException(nameof(y));}
|
||||
if(x.EntityExcavator.BodyColor != y.EntityExcavator.BodyColor)
|
||||
{
|
||||
return x.EntityExcavator.BodyColor.Name.CompareTo(y.EntityExcavator.BodyColor.Name);
|
||||
}
|
||||
var speedCompare = x.EntityExcavator.Speed.CompareTo(y.EntityExcavator.Speed);
|
||||
if(speedCompare != 0)
|
||||
{
|
||||
return speedCompare;
|
||||
}
|
||||
return x.EntityExcavator.Weight.CompareTo(y.EntityExcavator.Weight);
|
||||
}
|
||||
}
|
||||
}
|
34
ProjectExcavator/ProjectExcavator/ExcavatorCompareByType.cs
Normal file
34
ProjectExcavator/ProjectExcavator/ExcavatorCompareByType.cs
Normal file
@ -0,0 +1,34 @@
|
||||
using System;
|
||||
using System.CodeDom;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ProjectExcavator
|
||||
{
|
||||
internal class ExcavatorCompareByType : IComparer<DrawningExcavator>
|
||||
{
|
||||
public int Compare(DrawningExcavator? x, DrawningExcavator? y)
|
||||
{
|
||||
if(x == null || x.EntityExcavator == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(x));
|
||||
}
|
||||
if(y == null || y.EntityExcavator == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(y));
|
||||
}
|
||||
if(x.GetType().Name != y.GetType().Name)
|
||||
{
|
||||
return x.GetType().Name.CompareTo(y.GetType().Name);
|
||||
}
|
||||
var speedCompare = x.EntityExcavator.Speed.CompareTo(y.EntityExcavator.Speed);
|
||||
if(speedCompare != 0)
|
||||
{
|
||||
return speedCompare;
|
||||
}
|
||||
return x.EntityExcavator.Weight.CompareTo(y.EntityExcavator.Weight);
|
||||
}
|
||||
}
|
||||
}
|
@ -36,7 +36,7 @@ namespace ProjectExcavator.Generic
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
return collect?._collection.Insert(obj) ?? -1;
|
||||
return collect?._collection.Insert(obj, new DrawningExcavatorEqutables()) ?? -1;
|
||||
}
|
||||
public static T? operator -(ExcavatorGenericCollection<T, U> collect, int pos)
|
||||
{
|
||||
@ -44,7 +44,7 @@ namespace ProjectExcavator.Generic
|
||||
collect._collection.Remove(pos);
|
||||
return obj;
|
||||
}
|
||||
|
||||
public void Sort(IComparer<T?> comparer) => _collection.SortSet(comparer);
|
||||
public U? GetU(int pos) => (U?)_collection[pos]?.GetMoveableObject;
|
||||
/// <summary>
|
||||
/// Вывод всего набора объектов
|
||||
|
@ -0,0 +1,27 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace ProjectExcavator
|
||||
{
|
||||
internal class ExcavatorsCollectionInfo : IEquatable<ExcavatorsCollectionInfo>
|
||||
{
|
||||
public string Name { get;private set; }
|
||||
public string Description { get;private set; }
|
||||
public ExcavatorsCollectionInfo(string name, string description)
|
||||
{
|
||||
Name = name;
|
||||
Description = description;
|
||||
}
|
||||
public bool Equals(ExcavatorsCollectionInfo other)
|
||||
{
|
||||
return Name.Equals(other.Name);
|
||||
eegov
commented
Нет проверки, что other не равен null Нет проверки, что other не равен null
|
||||
}
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return Name?.GetHashCode() ?? 0;
|
||||
}
|
||||
}
|
||||
}
|
@ -15,11 +15,11 @@ namespace ProjectExcavator.Generic
|
||||
/// <summary>
|
||||
/// Словарь (хранилище)
|
||||
/// </summary>
|
||||
readonly Dictionary<string, ExcavatorGenericCollection<DrawningExcavator, DrawningObjectExcavator>> _excavatorStorages;
|
||||
readonly Dictionary<ExcavatorsCollectionInfo, ExcavatorGenericCollection<DrawningExcavator, DrawningObjectExcavator>> _excavatorStorages;
|
||||
/// <summary>
|
||||
/// Возвращение списка названий наборов
|
||||
/// </summary>
|
||||
public List<string> Keys => _excavatorStorages.Keys.ToList();
|
||||
public List<ExcavatorsCollectionInfo> Keys => _excavatorStorages.Keys.ToList();
|
||||
/// <summary>
|
||||
/// Ширина окна отрисовки
|
||||
/// </summary>
|
||||
@ -48,7 +48,7 @@ namespace ProjectExcavator.Generic
|
||||
/// <param name="pictureHeight"></param>
|
||||
public ExcavatorsGenericStorage(int pictureWidth, int pictureHeight)
|
||||
{
|
||||
_excavatorStorages = new Dictionary<string,
|
||||
_excavatorStorages = new Dictionary<ExcavatorsCollectionInfo,
|
||||
ExcavatorGenericCollection<DrawningExcavator, DrawningObjectExcavator>>();
|
||||
_pictureWidth = pictureWidth;
|
||||
_pictureHeight = pictureHeight;
|
||||
@ -127,7 +127,7 @@ namespace ProjectExcavator.Generic
|
||||
}
|
||||
}
|
||||
}
|
||||
_excavatorStorages.Add(record[0], collection);
|
||||
_excavatorStorages.Add(new ExcavatorsCollectionInfo(record [0], string.Empty), collection);
|
||||
currentLine = sr.ReadLine();
|
||||
}
|
||||
}
|
||||
@ -138,11 +138,11 @@ namespace ProjectExcavator.Generic
|
||||
/// <param name="name">Название набора</param>
|
||||
public void AddSet(string name)
|
||||
{
|
||||
if (_excavatorStorages.ContainsKey(name))
|
||||
if (_excavatorStorages.ContainsKey(new ExcavatorsCollectionInfo(name, string.Empty)))
|
||||
{
|
||||
return;
|
||||
}
|
||||
_excavatorStorages[name] = new ExcavatorGenericCollection<DrawningExcavator, DrawningObjectExcavator>(_pictureWidth, _pictureHeight);
|
||||
_excavatorStorages[new ExcavatorsCollectionInfo(name, string.Empty)] = new ExcavatorGenericCollection<DrawningExcavator, DrawningObjectExcavator>(_pictureWidth, _pictureHeight);
|
||||
}
|
||||
/// <summary>
|
||||
/// Удаление набора
|
||||
@ -150,8 +150,9 @@ namespace ProjectExcavator.Generic
|
||||
/// <param name="name">Название набора</param>
|
||||
public void DelSet(string name)
|
||||
{
|
||||
if (!_excavatorStorages.ContainsKey(name)) return;
|
||||
_excavatorStorages.Remove(name);
|
||||
if (!_excavatorStorages.ContainsKey(new ExcavatorsCollectionInfo(name, string.Empty)))
|
||||
return;
|
||||
_excavatorStorages.Remove(new ExcavatorsCollectionInfo(name, string.Empty));
|
||||
}
|
||||
/// <summary>
|
||||
/// Доступ к набору
|
||||
@ -163,9 +164,9 @@ namespace ProjectExcavator.Generic
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_excavatorStorages.ContainsKey(ind))
|
||||
if (_excavatorStorages.ContainsKey(new ExcavatorsCollectionInfo(ind, string.Empty)))
|
||||
{
|
||||
return _excavatorStorages[ind];
|
||||
return _excavatorStorages[new ExcavatorsCollectionInfo(ind, string.Empty)];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -44,6 +44,8 @@
|
||||
загрузитьToolStripMenuItem = new ToolStripMenuItem();
|
||||
openFileDialog = new OpenFileDialog();
|
||||
saveFileDialog = new SaveFileDialog();
|
||||
buttonSortByColor = new Button();
|
||||
buttonSortByType = new Button();
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxCollection).BeginInit();
|
||||
menuStripItem.SuspendLayout();
|
||||
SuspendLayout();
|
||||
@ -51,16 +53,18 @@
|
||||
// pictureBoxCollection
|
||||
//
|
||||
pictureBoxCollection.Location = new Point(0, 0);
|
||||
pictureBoxCollection.Margin = new Padding(3, 4, 3, 4);
|
||||
pictureBoxCollection.Name = "pictureBoxCollection";
|
||||
pictureBoxCollection.Size = new Size(617, 450);
|
||||
pictureBoxCollection.Size = new Size(705, 600);
|
||||
pictureBoxCollection.TabIndex = 0;
|
||||
pictureBoxCollection.TabStop = false;
|
||||
//
|
||||
// buttonAddExcavator
|
||||
//
|
||||
buttonAddExcavator.Location = new Point(623, 275);
|
||||
buttonAddExcavator.Location = new Point(712, 367);
|
||||
buttonAddExcavator.Margin = new Padding(3, 4, 3, 4);
|
||||
buttonAddExcavator.Name = "buttonAddExcavator";
|
||||
buttonAddExcavator.Size = new Size(174, 51);
|
||||
buttonAddExcavator.Size = new Size(199, 68);
|
||||
buttonAddExcavator.TabIndex = 1;
|
||||
buttonAddExcavator.Text = "Добавить экскавотор";
|
||||
buttonAddExcavator.UseVisualStyleBackColor = true;
|
||||
@ -68,16 +72,18 @@
|
||||
//
|
||||
// maskedTextBoxNumber
|
||||
//
|
||||
maskedTextBoxNumber.Location = new Point(623, 332);
|
||||
maskedTextBoxNumber.Location = new Point(712, 443);
|
||||
maskedTextBoxNumber.Margin = new Padding(3, 4, 3, 4);
|
||||
maskedTextBoxNumber.Name = "maskedTextBoxNumber";
|
||||
maskedTextBoxNumber.Size = new Size(174, 23);
|
||||
maskedTextBoxNumber.Size = new Size(198, 27);
|
||||
maskedTextBoxNumber.TabIndex = 2;
|
||||
//
|
||||
// buttonRemoveExcavator
|
||||
//
|
||||
buttonRemoveExcavator.Location = new Point(623, 361);
|
||||
buttonRemoveExcavator.Location = new Point(712, 481);
|
||||
buttonRemoveExcavator.Margin = new Padding(3, 4, 3, 4);
|
||||
buttonRemoveExcavator.Name = "buttonRemoveExcavator";
|
||||
buttonRemoveExcavator.Size = new Size(174, 38);
|
||||
buttonRemoveExcavator.Size = new Size(199, 51);
|
||||
buttonRemoveExcavator.TabIndex = 3;
|
||||
buttonRemoveExcavator.Text = "Удалить объект";
|
||||
buttonRemoveExcavator.UseVisualStyleBackColor = true;
|
||||
@ -85,9 +91,10 @@
|
||||
//
|
||||
// buttonRefreshCollection
|
||||
//
|
||||
buttonRefreshCollection.Location = new Point(623, 405);
|
||||
buttonRefreshCollection.Location = new Point(712, 540);
|
||||
buttonRefreshCollection.Margin = new Padding(3, 4, 3, 4);
|
||||
buttonRefreshCollection.Name = "buttonRefreshCollection";
|
||||
buttonRefreshCollection.Size = new Size(174, 33);
|
||||
buttonRefreshCollection.Size = new Size(199, 44);
|
||||
buttonRefreshCollection.TabIndex = 4;
|
||||
buttonRefreshCollection.Text = "Обновить коллекцию";
|
||||
buttonRefreshCollection.UseVisualStyleBackColor = true;
|
||||
@ -96,18 +103,20 @@
|
||||
// listBoxStorages
|
||||
//
|
||||
listBoxStorages.FormattingEnabled = true;
|
||||
listBoxStorages.ItemHeight = 15;
|
||||
listBoxStorages.Location = new Point(623, 156);
|
||||
listBoxStorages.ItemHeight = 20;
|
||||
listBoxStorages.Location = new Point(712, 208);
|
||||
listBoxStorages.Margin = new Padding(3, 4, 3, 4);
|
||||
listBoxStorages.Name = "listBoxStorages";
|
||||
listBoxStorages.Size = new Size(174, 79);
|
||||
listBoxStorages.Size = new Size(198, 104);
|
||||
listBoxStorages.TabIndex = 5;
|
||||
listBoxStorages.SelectedIndexChanged += ListBoxObjects_SelectedIndexChanged;
|
||||
//
|
||||
// AddCollectButton
|
||||
//
|
||||
AddCollectButton.Location = new Point(623, 119);
|
||||
AddCollectButton.Location = new Point(712, 159);
|
||||
AddCollectButton.Margin = new Padding(3, 4, 3, 4);
|
||||
AddCollectButton.Name = "AddCollectButton";
|
||||
AddCollectButton.Size = new Size(174, 31);
|
||||
AddCollectButton.Size = new Size(199, 41);
|
||||
AddCollectButton.TabIndex = 6;
|
||||
AddCollectButton.Text = "Добавить набор";
|
||||
AddCollectButton.UseVisualStyleBackColor = true;
|
||||
@ -115,9 +124,10 @@
|
||||
//
|
||||
// DeleteCollectButton
|
||||
//
|
||||
DeleteCollectButton.Location = new Point(623, 241);
|
||||
DeleteCollectButton.Location = new Point(712, 321);
|
||||
DeleteCollectButton.Margin = new Padding(3, 4, 3, 4);
|
||||
DeleteCollectButton.Name = "DeleteCollectButton";
|
||||
DeleteCollectButton.Size = new Size(174, 28);
|
||||
DeleteCollectButton.Size = new Size(199, 37);
|
||||
DeleteCollectButton.TabIndex = 7;
|
||||
DeleteCollectButton.Text = "Удалить набор";
|
||||
DeleteCollectButton.UseVisualStyleBackColor = true;
|
||||
@ -125,19 +135,22 @@
|
||||
//
|
||||
// textBoxStorageName
|
||||
//
|
||||
textBoxStorageName.Location = new Point(623, 90);
|
||||
textBoxStorageName.Location = new Point(712, 120);
|
||||
textBoxStorageName.Margin = new Padding(3, 4, 3, 4);
|
||||
textBoxStorageName.Name = "textBoxStorageName";
|
||||
textBoxStorageName.Size = new Size(174, 23);
|
||||
textBoxStorageName.Size = new Size(198, 27);
|
||||
textBoxStorageName.TabIndex = 8;
|
||||
//
|
||||
// menuStripItem
|
||||
//
|
||||
menuStripItem.Anchor = AnchorStyles.Top | AnchorStyles.Right;
|
||||
menuStripItem.Dock = DockStyle.None;
|
||||
menuStripItem.ImageScalingSize = new Size(20, 20);
|
||||
menuStripItem.Items.AddRange(new ToolStripItem[] { StripMenuItem });
|
||||
menuStripItem.Location = new Point(623, 9);
|
||||
menuStripItem.Location = new Point(845, 12);
|
||||
menuStripItem.Name = "menuStripItem";
|
||||
menuStripItem.Size = new Size(170, 24);
|
||||
menuStripItem.Padding = new Padding(7, 3, 0, 3);
|
||||
menuStripItem.Size = new Size(61, 30);
|
||||
menuStripItem.TabIndex = 9;
|
||||
menuStripItem.Text = "File";
|
||||
//
|
||||
@ -145,25 +158,25 @@
|
||||
//
|
||||
StripMenuItem.DropDownItems.AddRange(new ToolStripItem[] { toolStripMenuItem1, сохранитьToolStripMenuItem, загрузитьToolStripMenuItem });
|
||||
StripMenuItem.Name = "StripMenuItem";
|
||||
StripMenuItem.Size = new Size(42, 20);
|
||||
StripMenuItem.Size = new Size(52, 24);
|
||||
StripMenuItem.Text = "Files";
|
||||
//
|
||||
// toolStripMenuItem1
|
||||
//
|
||||
toolStripMenuItem1.Name = "toolStripMenuItem1";
|
||||
toolStripMenuItem1.Size = new Size(133, 22);
|
||||
toolStripMenuItem1.Size = new Size(166, 26);
|
||||
//
|
||||
// сохранитьToolStripMenuItem
|
||||
//
|
||||
сохранитьToolStripMenuItem.Name = "сохранитьToolStripMenuItem";
|
||||
сохранитьToolStripMenuItem.Size = new Size(133, 22);
|
||||
сохранитьToolStripMenuItem.Size = new Size(166, 26);
|
||||
сохранитьToolStripMenuItem.Text = "Сохранить";
|
||||
сохранитьToolStripMenuItem.Click += SaveToolStripMenuItem_Click;
|
||||
//
|
||||
// загрузитьToolStripMenuItem
|
||||
//
|
||||
загрузитьToolStripMenuItem.Name = "загрузитьToolStripMenuItem";
|
||||
загрузитьToolStripMenuItem.Size = new Size(133, 22);
|
||||
загрузитьToolStripMenuItem.Size = new Size(166, 26);
|
||||
загрузитьToolStripMenuItem.Text = "Загрузить";
|
||||
загрузитьToolStripMenuItem.Click += LoadToolStripMenuItem_Click;
|
||||
//
|
||||
@ -171,11 +184,33 @@
|
||||
//
|
||||
openFileDialog.FileName = "openFileDialog1";
|
||||
//
|
||||
// buttonSortByColor
|
||||
//
|
||||
buttonSortByColor.Location = new Point(711, 84);
|
||||
buttonSortByColor.Name = "buttonSortByColor";
|
||||
buttonSortByColor.Size = new Size(195, 29);
|
||||
buttonSortByColor.TabIndex = 10;
|
||||
buttonSortByColor.Text = "Сортировать по цвету";
|
||||
buttonSortByColor.UseVisualStyleBackColor = true;
|
||||
buttonSortByColor.Click += buttonSortByColor_Click;
|
||||
//
|
||||
// buttonSortByType
|
||||
//
|
||||
buttonSortByType.Location = new Point(712, 49);
|
||||
buttonSortByType.Name = "buttonSortByType";
|
||||
buttonSortByType.Size = new Size(190, 29);
|
||||
buttonSortByType.TabIndex = 11;
|
||||
buttonSortByType.Text = "Сортировать по типу";
|
||||
buttonSortByType.UseVisualStyleBackColor = true;
|
||||
buttonSortByType.Click += buttonSortByType_Click;
|
||||
//
|
||||
// FormExcavatorCollection
|
||||
//
|
||||
AutoScaleDimensions = new SizeF(7F, 15F);
|
||||
AutoScaleDimensions = new SizeF(8F, 20F);
|
||||
AutoScaleMode = AutoScaleMode.Font;
|
||||
ClientSize = new Size(800, 450);
|
||||
ClientSize = new Size(914, 600);
|
||||
Controls.Add(buttonSortByType);
|
||||
Controls.Add(buttonSortByColor);
|
||||
Controls.Add(textBoxStorageName);
|
||||
Controls.Add(DeleteCollectButton);
|
||||
Controls.Add(AddCollectButton);
|
||||
@ -187,6 +222,7 @@
|
||||
Controls.Add(pictureBoxCollection);
|
||||
Controls.Add(menuStripItem);
|
||||
MainMenuStrip = menuStripItem;
|
||||
Margin = new Padding(3, 4, 3, 4);
|
||||
Name = "FormExcavatorCollection";
|
||||
Text = "Набор экскаваторов";
|
||||
((System.ComponentModel.ISupportInitialize)pictureBoxCollection).EndInit();
|
||||
@ -214,5 +250,7 @@
|
||||
private ToolStripMenuItem toolStripMenuItem1;
|
||||
private ToolStripMenuItem сохранитьToolStripMenuItem;
|
||||
private ToolStripMenuItem загрузитьToolStripMenuItem;
|
||||
private Button buttonSortByColor;
|
||||
private Button buttonSortByType;
|
||||
}
|
||||
}
|
@ -25,7 +25,7 @@ namespace ProjectExcavator
|
||||
public FormExcavatorCollection(ILogger<FormExcavatorCollection> logger)
|
||||
{
|
||||
InitializeComponent();
|
||||
_storage = new ExcavatorsGenericStorage(pictureBoxCollection.Width,pictureBoxCollection.Height);
|
||||
_storage = new ExcavatorsGenericStorage(pictureBoxCollection.Width, pictureBoxCollection.Height);
|
||||
_logger = logger;
|
||||
}
|
||||
/// <summary>
|
||||
@ -37,7 +37,7 @@ namespace ProjectExcavator
|
||||
listBoxStorages.Items.Clear();
|
||||
for (int i = 0; i < _storage.Keys.Count; i++)
|
||||
{
|
||||
listBoxStorages.Items.Add(_storage.Keys[i]);
|
||||
listBoxStorages.Items.Add(_storage.Keys[i].Name);
|
||||
}
|
||||
if (listBoxStorages.Items.Count > 0 && (index == -1 || index >= listBoxStorages.Items.Count))
|
||||
{
|
||||
@ -48,6 +48,21 @@ namespace ProjectExcavator
|
||||
listBoxStorages.SelectedIndex = index;
|
||||
}
|
||||
}
|
||||
private void CompareExcavators(IComparer<DrawningExcavator?> comparer)
|
||||
{
|
||||
if (listBoxStorages.SelectedIndex == -1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var obj = _storage[listBoxStorages.SelectedItem.ToString() ?? string.Empty];
|
||||
if (obj == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
obj.Sort(comparer);
|
||||
pictureBoxCollection.Image = obj.ShowExcavator();
|
||||
}
|
||||
|
||||
private void ButtonAddObject_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (string.IsNullOrEmpty(textBoxStorageName.Text))
|
||||
@ -113,11 +128,12 @@ namespace ProjectExcavator
|
||||
_logger.LogWarning($"Добавление не удалось (индекс вне границ)");
|
||||
MessageBox.Show("Объект добавить не удалось");
|
||||
}
|
||||
}catch(ApplicationException ex)
|
||||
}
|
||||
catch (ApplicationException ex)
|
||||
{
|
||||
MessageBox.Show(ex.Message);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void buttonAddExcavator_Click(object sender, EventArgs e)
|
||||
@ -173,7 +189,7 @@ namespace ProjectExcavator
|
||||
MessageBox.Show("Не удалось удалить объект");
|
||||
}
|
||||
}
|
||||
catch(ExcavatorNotFoundException ex)
|
||||
catch (ExcavatorNotFoundException ex)
|
||||
{
|
||||
_logger.LogWarning($"Удаление не удалось {ex.Message}");
|
||||
MessageBox.Show(ex.Message);
|
||||
@ -213,7 +229,7 @@ namespace ProjectExcavator
|
||||
_logger.LogInformation($"Cохранение успешно");
|
||||
MessageBox.Show("Сохранение прошло успешно", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
catch(Exception ex)
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show($"Не сохранилось: {ex.Message}", "Результат", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
_logger.LogWarning($"Сохранение не удалось {ex.Message}");
|
||||
@ -245,5 +261,15 @@ namespace ProjectExcavator
|
||||
}
|
||||
ReloadObjects();
|
||||
}
|
||||
|
||||
private void buttonSortByType_Click(object sender, EventArgs e)
|
||||
{
|
||||
CompareExcavators(new ExcavatorCompareByType());
|
||||
}
|
||||
|
||||
private void buttonSortByColor_Click(object sender, EventArgs e)
|
||||
{
|
||||
CompareExcavators(new ExcavatorCompareByColor());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,8 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using ProjectExcavator.Exceptions;
|
||||
|
||||
|
||||
namespace ProjectExcavator.Generic
|
||||
{
|
||||
@ -12,27 +14,35 @@ namespace ProjectExcavator.Generic
|
||||
private readonly List<T> _places;
|
||||
public int Count => _places.Count;
|
||||
private readonly int _maxCount;
|
||||
public void SortSet(IComparer<T> comparer) => _places.Sort(comparer);
|
||||
public SetGeneric(int count)
|
||||
{
|
||||
_maxCount = count;
|
||||
_places = new List<T>(_maxCount);
|
||||
}
|
||||
public int Insert(T excavator)
|
||||
public int Insert(T excavator, IEqualityComparer<T?> equal = null)
|
||||
{
|
||||
if(_places.Count >= _maxCount)
|
||||
{
|
||||
return -1;
|
||||
throw new StorageOverflowException(_places.Count);
|
||||
}
|
||||
if(equal != null && _places.Contains<T>(excavator,equal))
|
||||
{
|
||||
throw new ApplicationException("already exist");
|
||||
}
|
||||
_places.Insert(0, excavator);
|
||||
return 0;
|
||||
}
|
||||
public bool Insert(T excavator, int position)
|
||||
public bool Insert(T excavator, int position, IEqualityComparer<T?> equal = null)
|
||||
{
|
||||
if (position < 0 || position >= _maxCount)
|
||||
return false;
|
||||
throw new ExcavatorNotFoundException(_places.Count);
|
||||
if (Count >= _maxCount)
|
||||
return false;
|
||||
_places.Insert(0,excavator);
|
||||
throw new StorageOverflowException(_places.Count);
|
||||
if(position == _places.Count)
|
||||
_places.Add(excavator);
|
||||
else
|
||||
_places.Insert(position,excavator);
|
||||
return true;
|
||||
}
|
||||
public bool Remove(int position) {
|
||||
|
Loading…
Reference in New Issue
Block a user
Нет сравнения по дополнительному цвету