diff --git a/ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.Designer.cs b/ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.Designer.cs
index 46e6117..171f171 100644
--- a/ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.Designer.cs
+++ b/ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.Designer.cs
@@ -37,6 +37,7 @@
buttonCreatePlane = new Button();
comboBoxStrategy = new ComboBox();
buttonStep = new Button();
+ buttonSelectPlane = new Button();
((System.ComponentModel.ISupportInitialize)pictureBoxStormtrooper).BeginInit();
SuspendLayout();
//
@@ -140,11 +141,22 @@
buttonStep.UseVisualStyleBackColor = true;
buttonStep.Click += buttonStep_Click;
//
+ // buttonSelectPlane
+ //
+ buttonSelectPlane.Location = new Point(537, 412);
+ buttonSelectPlane.Name = "buttonSelectPlane";
+ buttonSelectPlane.Size = new Size(137, 29);
+ buttonSelectPlane.TabIndex = 9;
+ buttonSelectPlane.Text = "Выбрать";
+ buttonSelectPlane.UseVisualStyleBackColor = true;
+ buttonSelectPlane.Click += ButtonSelectPlane_Click;
+ //
// FormStormtrooper
//
AutoScaleDimensions = new SizeF(8F, 20F);
AutoScaleMode = AutoScaleMode.Font;
ClientSize = new Size(882, 453);
+ Controls.Add(buttonSelectPlane);
Controls.Add(buttonStep);
Controls.Add(comboBoxStrategy);
Controls.Add(buttonCreatePlane);
@@ -173,5 +185,6 @@
private Button buttonCreatePlane;
private ComboBox comboBoxStrategy;
private Button buttonStep;
+ private Button buttonSelectPlane;
}
}
\ No newline at end of file
diff --git a/ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.cs b/ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.cs
index 98fdfb0..b1dc399 100644
--- a/ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.cs
+++ b/ProjectStormtrooper/ProjectStormtrooper/FormStormtrooper.cs
@@ -149,7 +149,7 @@ namespace ProjectStormtrooper
{
return;
}
- _strategy.SetData(new DrawingObjectPlane(_drawingPlane), pictureBoxStormtrooper.Width, pictureBoxStormtrooper.Height);
+ _strategy.SetData(new DrawingObjectPlane(_drawingPlane), pictureBoxStormtrooper.Width, pictureBoxStormtrooper.Height);
}
if (_strategy == null)
{
diff --git a/ProjectStormtrooper/ProjectStormtrooper/SetGeneric.cs b/ProjectStormtrooper/ProjectStormtrooper/SetGeneric.cs
index 98568f9..05afe5b 100644
--- a/ProjectStormtrooper/ProjectStormtrooper/SetGeneric.cs
+++ b/ProjectStormtrooper/ProjectStormtrooper/SetGeneric.cs
@@ -33,9 +33,8 @@ namespace ProjectStormtrooper
///
///
public bool Insert(T plane)
- {
- // TODO: вставка в начало набора
- return true;
+ {
+ return Insert(plane, 0);
}
///
/// Добавление объекта в набор на конкретную позицию
@@ -45,11 +44,38 @@ namespace ProjectStormtrooper
///
public bool Insert(T plane, int position)
{
- // TODO проверка позиции
- // TODO проверка, что элемент массива по этой позиции пустой, если нет, то
- // проверка, что после вставляемого элемента в массиве есть пустой элемент
- // сдвиг всех объектов, находящихся справа от позиции до первого пустого элемента
- // TODO вставка по позиции
+ // Проверка позиции
+ if (position < 0 || position > Count - 1)
+ {
+ return false;
+ }
+ // Проверка, что элемент массива по этой позиции пустой
+ if (_places[position] != null)
+ {
+ // Проверка, что после вставляемого элемента в массиве есть пустой элемент
+ int nullIndex = -1;
+ for (int i = position + 1; i < Count; i++)
+ {
+ if (_places[i] == null)
+ {
+ nullIndex = i;
+ break;
+ }
+ }
+ // Если пустого элемента нет, то выходим
+ if (nullIndex < 0)
+ {
+ return false;
+ }
+ // Сдвиг всех объектов, находящихся справа от позиции до первого пустого элемента
+ int i = nullIndex - 1;
+ while (i >= position)
+ {
+ _places[i + 1] = _places[i];
+ i--;
+ }
+ }
+ // Вставка по позиции
_places[position] = plane;
return true;
}
@@ -60,8 +86,18 @@ namespace ProjectStormtrooper
///
public bool Remove(int position)
{
- // TODO проверка позиции
- // TODO удаление объекта из массива, присвоив элементу массива значение null
+ // Проверка позиции
+ if (position < 0 || position > Count - 1)
+ {
+ return false;
+ }
+ // Нельзя удалить пустой элемент
+ if (_places[position] == null)
+ {
+ return false;
+ }
+ // Удаление объекта из массива, присвоив элементу массива значение null
+ _places[position] = null;
return true;
}
///
@@ -71,7 +107,11 @@ namespace ProjectStormtrooper
///
public T? Get(int position)
{
- // TODO проверка позиции
+ // Проверка позиции
+ if (position < 0 || position > Count - 1)
+ {
+ return null;
+ }
return _places[position];
}
}