lab3
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user