diff --git a/Lab2/src/Form/CreateLawnmower.xaml b/Lab2/src/Form/CreateLawnmower.xaml
index f79793b..5cbb001 100644
--- a/Lab2/src/Form/CreateLawnmower.xaml
+++ b/Lab2/src/Form/CreateLawnmower.xaml
@@ -22,20 +22,21 @@
-
+
-
+
-
+
-
+
-
+
-
+
+
diff --git a/Lab2/src/Form/CreateLawnmower.xaml.cs b/Lab2/src/Form/CreateLawnmower.xaml.cs
index 05e979b..c511b97 100644
--- a/Lab2/src/Form/CreateLawnmower.xaml.cs
+++ b/Lab2/src/Form/CreateLawnmower.xaml.cs
@@ -22,8 +22,9 @@ namespace Lab2
/// Конструктор
///
/// Газонокосилка для редактирования
+ /// Доступность полей формы
/// Выбрасывается, когда газонокосилка равна null
- public CreateLawnmower(Lawnmower parLawnmower)
+ public CreateLawnmower(Lawnmower parLawnmower, bool parReadOnly = false)
{
if (parLawnmower == null)
throw new ArgumentNullException(nameof(parLawnmower));
@@ -33,21 +34,27 @@ namespace Lab2
_materialComboBox.ItemsSource = Enum.GetValues(typeof(Material));
_lawnmower = parLawnmower;
+ DataContext = _lawnmower;
Title = $"Lawnmower {_lawnmower.Id}";
- SyncFields();
+
+ SetEnabled(!parReadOnly);
+
+ if (parReadOnly)
+ _saveButton.Content = "Ok";
}
///
- /// Синхронизирует поля формы с данными
+ /// Устанавливает доступность полей формы
///
- private void SyncFields()
+ /// Доступность
+ private void SetEnabled(bool parEnabled)
{
- _nameTextBox.Text = _lawnmower.Name;
- _materialComboBox.SelectedItem = _lawnmower.Material;
- _weightTextBox.Text = _lawnmower.Weight.ToString(CultureInfo.CurrentCulture);
- _powerTextBox.Text = _lawnmower.Power.ToString();
- _fuelСapacityTextBox.Text = _lawnmower.FuelCapacity.ToString(CultureInfo.CurrentCulture);
+ _nameTextBox.IsEnabled = parEnabled;
+ _materialComboBox.IsEnabled = parEnabled;
+ _weightTextBox.IsEnabled = parEnabled;
+ _powerTextBox.IsEnabled = parEnabled;
+ _fuelСapacityTextBox.IsEnabled = parEnabled;
}
///
diff --git a/Lab2/src/Form/CreateScissors.xaml b/Lab2/src/Form/CreateScissors.xaml
index e12bb33..44b67c0 100644
--- a/Lab2/src/Form/CreateScissors.xaml
+++ b/Lab2/src/Form/CreateScissors.xaml
@@ -22,20 +22,21 @@
-
+
-
+
-
+
-
+
-
+
-
+
+
diff --git a/Lab2/src/Form/CreateScissors.xaml.cs b/Lab2/src/Form/CreateScissors.xaml.cs
index b997db0..f7da6fc 100644
--- a/Lab2/src/Form/CreateScissors.xaml.cs
+++ b/Lab2/src/Form/CreateScissors.xaml.cs
@@ -22,8 +22,9 @@ namespace Lab2
/// Конструктор
///
/// Ножницы для редактирования
+ /// Доступность полей формы
/// Выбрасывается, когда ножницы равны null
- public CreateScissors(Scissors parScissors)
+ public CreateScissors(Scissors parScissors, bool parReadOnly = false)
{
if (parScissors == null)
throw new ArgumentNullException(nameof(parScissors));
@@ -33,21 +34,27 @@ namespace Lab2
_materialComboBox.ItemsSource = Enum.GetValues(typeof(Material));
_scissors = parScissors;
+ DataContext = _scissors;
Title = $"Scissors {_scissors.Id}";
- SyncFields();
+
+ SetEnabled(!parReadOnly);
+
+ if (parReadOnly)
+ _saveButton.Content = "Ok";
}
///
- /// Синхронизирует поля формы с данными
+ /// Устанавливает доступность полей формы
///
- private void SyncFields()
+ /// Доступность
+ private void SetEnabled(bool parEnabled)
{
- _nameTextBox.Text = _scissors.Name;
- _materialComboBox.SelectedItem = _scissors.Material;
- _weightTextBox.Text = _scissors.Weight.ToString(CultureInfo.CurrentCulture);
- _handleLengthTextBox.Text = _scissors.HandleLength.ToString(CultureInfo.CurrentCulture);
- _bladeSizeTextBox.Text = _scissors.BladeSize.ToString(CultureInfo.CurrentCulture);
+ _nameTextBox.IsEnabled = parEnabled;
+ _materialComboBox.IsEnabled = parEnabled;
+ _weightTextBox.IsEnabled = parEnabled;
+ _handleLengthTextBox.IsEnabled = parEnabled;
+ _bladeSizeTextBox.IsEnabled = parEnabled;
}
///
diff --git a/Lab2/src/Form/CreateScythe.xaml b/Lab2/src/Form/CreateScythe.xaml
index 411b81a..8f745b6 100644
--- a/Lab2/src/Form/CreateScythe.xaml
+++ b/Lab2/src/Form/CreateScythe.xaml
@@ -22,20 +22,21 @@
-
+
-
+
-
+
-
+
-
+
-
+
+
diff --git a/Lab2/src/Form/CreateScythe.xaml.cs b/Lab2/src/Form/CreateScythe.xaml.cs
index 75feac5..32ac30e 100644
--- a/Lab2/src/Form/CreateScythe.xaml.cs
+++ b/Lab2/src/Form/CreateScythe.xaml.cs
@@ -22,8 +22,9 @@ namespace Lab2
/// Конструктор
///
/// Коса для редактирования
+ /// Доступность полей формы
/// Выбрасывается, когда коса равна null
- public CreateScythe(Scythe parScythe)
+ public CreateScythe(Scythe parScythe, bool parReadOnly = false)
{
if (parScythe == null)
throw new ArgumentNullException(nameof(parScythe));
@@ -34,21 +35,27 @@ namespace Lab2
_bladeTypeComboBox.ItemsSource = Enum.GetValues(typeof(BladeType));
_scythe = parScythe;
+ DataContext = _scythe;
Title = $"Scythe {_scythe.Id}";
- SyncFields();
+
+ SetEnabled(!parReadOnly);
+
+ if (parReadOnly)
+ _saveButton.Content = "Ok";
}
///
- /// Синхронизирует поля формы с данными
+ /// Устанавливает доступность полей формы
///
- private void SyncFields()
+ /// Доступность
+ private void SetEnabled(bool parEnabled)
{
- _nameTextBox.Text = _scythe.Name;
- _materialComboBox.SelectedItem = _scythe.Material;
- _weightTextBox.Text = _scythe.Weight.ToString(CultureInfo.CurrentCulture);
- _handleLengthTextBox.Text = _scythe.HandleLength.ToString(CultureInfo.CurrentCulture);
- _bladeTypeComboBox.SelectedItem = _scythe.BladeType;
+ _nameTextBox.IsEnabled = parEnabled;
+ _materialComboBox.IsEnabled = parEnabled;
+ _weightTextBox.IsEnabled = parEnabled;
+ _handleLengthTextBox.IsEnabled = parEnabled;
+ _bladeTypeComboBox.IsEnabled = parEnabled;
}
///
diff --git a/Lab2/src/Form/CreateTrimmer.xaml b/Lab2/src/Form/CreateTrimmer.xaml
index 5ac97bd..bfa1e6c 100644
--- a/Lab2/src/Form/CreateTrimmer.xaml
+++ b/Lab2/src/Form/CreateTrimmer.xaml
@@ -22,20 +22,21 @@
-
+
-
+
-
+
-
+
-
+
-
+
+
diff --git a/Lab2/src/Form/CreateTrimmer.xaml.cs b/Lab2/src/Form/CreateTrimmer.xaml.cs
index a6e5c22..ea52f92 100644
--- a/Lab2/src/Form/CreateTrimmer.xaml.cs
+++ b/Lab2/src/Form/CreateTrimmer.xaml.cs
@@ -22,8 +22,9 @@ namespace Lab2
/// Конструктор
///
/// Триммер для редактирования
+ /// Доступность полей формы
/// Выбрасывается, когда триммер равен null
- public CreateTrimmer(Trimmer parTrimmer)
+ public CreateTrimmer(Trimmer parTrimmer, bool parReadOnly = false)
{
if (parTrimmer == null)
throw new ArgumentNullException(nameof(parTrimmer));
@@ -34,21 +35,27 @@ namespace Lab2
_modeComboBox.ItemsSource = Enum.GetValues(typeof(TrimmerMode));
_trimmer = parTrimmer;
+ DataContext = _trimmer;
Title = $"Trimmer {_trimmer.Id}";
- SyncFields();
+
+ SetEnabled(!parReadOnly);
+
+ if (parReadOnly)
+ _saveButton.Content = "Ok";
}
///
- /// Синхронизирует поля формы с данными
+ /// Устанавливает доступность полей формы
///
- private void SyncFields()
+ /// Доступность
+ private void SetEnabled(bool parEnabled)
{
- _nameTextBox.Text = _trimmer.Name;
- _materialComboBox.SelectedItem = _trimmer.Material;
- _weightTextBox.Text = _trimmer.Weight.ToString(CultureInfo.CurrentCulture);
- _powerTextBox.Text = _trimmer.Power.ToString();
- _modeComboBox.SelectedItem = _trimmer.Mode;
+ _nameTextBox.IsEnabled = parEnabled;
+ _materialComboBox.IsEnabled = parEnabled;
+ _weightTextBox.IsEnabled = parEnabled;
+ _powerTextBox.IsEnabled = parEnabled;
+ _modeComboBox.IsEnabled = parEnabled;
}
///
diff --git a/Lab2/src/Form/MainWindow.xaml.cs b/Lab2/src/Form/MainWindow.xaml.cs
index fc85988..92b625f 100644
--- a/Lab2/src/Form/MainWindow.xaml.cs
+++ b/Lab2/src/Form/MainWindow.xaml.cs
@@ -56,14 +56,14 @@ namespace Lab2
///
/// Инструмент
/// True, если редактирование прошло успешно, иначе - false
- private bool ShowEditForm(Tool parTool)
+ private bool ShowEditForm(Tool parTool, bool parReadOnly = false)
{
Window? form = parTool switch
{
- Scissors scissors => new CreateScissors(scissors),
- Scythe scythe => new CreateScythe(scythe),
- Trimmer trimmer => new CreateTrimmer(trimmer),
- Lawnmower lawnmower => new CreateLawnmower(lawnmower),
+ 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,
};
@@ -175,10 +175,14 @@ namespace Lab2
///
private void DeleteSelectedButton_Click(object sender, RoutedEventArgs e)
{
- if (!IsValidIndex(_dataGrid.SelectedIndex))
+ var selected = GetSelectedItem();
+ if (selected == null)
return;
- _tools.RemoveAt(_dataGrid.SelectedIndex);
+ if (!ShowEditForm(selected, true))
+ return;
+
+ _tools.Remove(selected);
}
///