1
0
This commit is contained in:
2024-05-15 01:11:15 +03:00
parent 81b1c8d946
commit a14397932a
21 changed files with 447 additions and 81 deletions

View File

@@ -1,6 +1,9 @@
using System;
using System.Windows;
using System.Collections.ObjectModel;
using Patterns;
using System.Collections.Generic;
using System.Linq;
namespace Lab2
{
@@ -19,6 +22,44 @@ namespace Lab2
/// </summary>
private Random _random = new();
/// <summary>
/// Список фабрик
/// </summary>
private List<IToolFactoryMethod> _factoryMethods = new()
{
new ScissorsAndTrimmerFactoryMethod(),
new ScytheAndLawnmowerFactoryMethod(),
new PrototypeFactoryMethod(),
};
/// <summary>
/// Текущая фабрика
/// </summary>
private IToolFactory _currentFactory;
/// <summary>
/// Выбранный фабричный метод
/// </summary>
private IToolFactoryMethod _selectedMethod;
/// <summary>
/// Список фабрик
/// </summary>
public ICollection<IToolFactoryMethod> FactoryMethods => _factoryMethods;
/// <summary>
/// Выбранный фабричный метод
/// </summary>
public IToolFactoryMethod SelectedMethod
{
get => _selectedMethod;
set
{
_selectedMethod = value;
_currentFactory = value.CreateFactory();
}
}
/// <summary>
/// Конструктор
/// </summary>
@@ -26,6 +67,9 @@ namespace Lab2
{
InitializeComponent();
SelectedMethod = _factoryMethods.First();
DataContext = this;
_dataGrid.ItemsSource = _tools;
}
@@ -51,33 +95,6 @@ namespace Lab2
return _tools[_dataGrid.SelectedIndex];
}
/// <summary>
/// Открывает форму редактирования
/// </summary>
/// <param name="parTool"> Инструмент </param>
/// <returns> True, если редактирование прошло успешно, иначе - false </returns>
private bool ShowEditForm(Tool parTool, bool parReadOnly = false)
{
Window? form = parTool switch
{
Scissors scissors => new CreateScissors(scissors, parReadOnly),
Scythe scythe => new CreateScythe(scythe, parReadOnly),
Trimmer trimmer => new CreateTrimmer(trimmer, parReadOnly),
Lawnmower lawnmower => new CreateLawnmower(lawnmower, parReadOnly),
_ => null,
};
if (form == null)
return false;
var result = form.ShowDialog();
_dataGrid.Items.Refresh();
return result ?? false;
}
/// <summary>
/// Генерирует случайный триммер
/// </summary>
@@ -115,47 +132,23 @@ namespace Lab2
}
/// <summary>
/// Обработчик события нажатия на кнопку "Add Scissors"
/// Обработчик события нажатия на кнопку "Add Manual Tool"
/// </summary>
private void CreateScissorsButton_Click(object sender, RoutedEventArgs e)
private void CreateManualToolButton_Click(object sender, RoutedEventArgs e)
{
var scissors = new Scissors("", Material.Wood, 1, 1, 1);
if (ShowEditForm(scissors))
_tools.Add(scissors);
var tool = _currentFactory.CreateManualTool();
if (Util.ShowEditForm(tool))
_tools.Add(tool);
}
/// <summary>
/// Обработчик события нажатия на кнопку "Add Scythe"
/// Обработчик события нажатия на кнопку "Add Electric Tool"
/// </summary>
private void CreateScytheButton_Click(object sender, RoutedEventArgs e)
private void CreateElectricToolButton_Click(object sender, RoutedEventArgs e)
{
var scythe = new Scythe("", Material.Wood, 1, 1, BladeType.Straight);
if (ShowEditForm(scythe))
_tools.Add(scythe);
}
/// <summary>
/// Обработчик события нажатия на кнопку "Add Trimmer"
/// </summary>
private void CreateTrimmerButton_Click(object sender, RoutedEventArgs e)
{
var trimmer = new Trimmer("", Material.Wood, 1, 1);
if (ShowEditForm(trimmer))
_tools.Add(trimmer);
}
/// <summary>
/// Обработчик события нажатия на кнопку "Add Lawnmower"
/// </summary>
private void CreateLawnmowerButton_Click(object sender, RoutedEventArgs e)
{
var lawnmower = new Lawnmower("", Material.Wood, 1, 1, 1);
if (ShowEditForm(lawnmower))
_tools.Add(lawnmower);
var tool = _currentFactory.CreateElectricTool();
if (Util.ShowEditForm(tool))
_tools.Add(tool);
}
/// <summary>
@@ -167,7 +160,9 @@ namespace Lab2
if (item == null)
return;
ShowEditForm(item);
Util.ShowEditForm(item);
_dataGrid.Items.Refresh();
}
/// <summary>
@@ -179,7 +174,7 @@ namespace Lab2
if (selected == null)
return;
if (!ShowEditForm(selected, true))
if (!Util.ShowEditForm(selected, true))
return;
_tools.Remove(selected);