1
0
This commit is contained in:
2024-05-04 08:43:34 +03:00
parent 05f6b988ca
commit fe1995b630
9 changed files with 103 additions and 67 deletions

View File

@@ -22,20 +22,21 @@
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Label Content="Name:" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Name:" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" />
<TextBox x:Name="_nameTextBox" Grid.Row="0" Grid.Column="1" Margin="5,5,5,5" /> <TextBox x:Name="_nameTextBox" Grid.Row="0" Grid.Column="1" Margin="5,5,5,5" Text="{Binding Name, UpdateSourceTrigger=Explicit}" />
<Label Content="Material:" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Material:" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" />
<ComboBox x:Name="_materialComboBox" Grid.Row="1" Grid.Column="1" Margin="5,5,5,5" /> <ComboBox x:Name="_materialComboBox" Grid.Row="1" Grid.Column="1" Margin="5,5,5,5" Text="{Binding Material, UpdateSourceTrigger=Explicit}" />
<Label Content="Weight:" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Weight:" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" />
<TextBox x:Name="_weightTextBox" Grid.Row="2" Grid.Column="1" Margin="5,5,5,5" /> <TextBox x:Name="_weightTextBox" Grid.Row="2" Grid.Column="1" Margin="5,5,5,5" Text="{Binding Weight, UpdateSourceTrigger=Explicit}" />
<Label Content="Power:" Grid.Row="3" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Power:" Grid.Row="3" Grid.Column="0" VerticalAlignment="Center" />
<TextBox x:Name="_powerTextBox" Grid.Row="3" Grid.Column="1" Margin="5,5,5,5" /> <TextBox x:Name="_powerTextBox" Grid.Row="3" Grid.Column="1" Margin="5,5,5,5" Text="{Binding Power, UpdateSourceTrigger=Explicit}" />
<Label Content="Fuel capacity:" Grid.Row="4" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Fuel capacity:" Grid.Row="4" Grid.Column="0" VerticalAlignment="Center" />
<TextBox x:Name="_fuelСapacityTextBox" Grid.Row="4" Grid.Column="1" Margin="5,5,5,5" /> <TextBox x:Name="_fuelСapacityTextBox" Grid.Row="4" Grid.Column="1" Margin="5,5,5,5" Text="{Binding FuelCapacity, UpdateSourceTrigger=Explicit}" />
<Button Click="SaveButton_Click" Content="Save" Grid.Row="5" Grid.Column="1" Margin="5,5,5,5" /> <Button Content="Cancel" IsCancel="True" Grid.Row="5" Grid.Column="0" Margin="5,5,5,5" />
<Button Name="_saveButton" Click="SaveButton_Click" Content="Save" Grid.Row="5" Grid.Column="1" Margin="5,5,5,5" />
</Grid> </Grid>
</Window> </Window>

View File

@@ -22,8 +22,9 @@ namespace Lab2
/// Конструктор /// Конструктор
/// </summary> /// </summary>
/// <param name="parLawnmower">Газонокосилка для редактирования</param> /// <param name="parLawnmower">Газонокосилка для редактирования</param>
/// <param name="parReadOnly">Доступность полей формы</param>
/// <exception cref="ArgumentNullException">Выбрасывается, когда газонокосилка равна null</exception> /// <exception cref="ArgumentNullException">Выбрасывается, когда газонокосилка равна null</exception>
public CreateLawnmower(Lawnmower parLawnmower) public CreateLawnmower(Lawnmower parLawnmower, bool parReadOnly = false)
{ {
if (parLawnmower == null) if (parLawnmower == null)
throw new ArgumentNullException(nameof(parLawnmower)); throw new ArgumentNullException(nameof(parLawnmower));
@@ -33,21 +34,27 @@ namespace Lab2
_materialComboBox.ItemsSource = Enum.GetValues(typeof(Material)); _materialComboBox.ItemsSource = Enum.GetValues(typeof(Material));
_lawnmower = parLawnmower; _lawnmower = parLawnmower;
DataContext = _lawnmower;
Title = $"Lawnmower {_lawnmower.Id}"; Title = $"Lawnmower {_lawnmower.Id}";
SyncFields();
SetEnabled(!parReadOnly);
if (parReadOnly)
_saveButton.Content = "Ok";
} }
/// <summary> /// <summary>
/// Синхронизирует поля формы с данными /// Устанавливает доступность полей формы
/// </summary> /// </summary>
private void SyncFields() /// <param name="parEnabled">Доступность</param>
private void SetEnabled(bool parEnabled)
{ {
_nameTextBox.Text = _lawnmower.Name; _nameTextBox.IsEnabled = parEnabled;
_materialComboBox.SelectedItem = _lawnmower.Material; _materialComboBox.IsEnabled = parEnabled;
_weightTextBox.Text = _lawnmower.Weight.ToString(CultureInfo.CurrentCulture); _weightTextBox.IsEnabled = parEnabled;
_powerTextBox.Text = _lawnmower.Power.ToString(); _powerTextBox.IsEnabled = parEnabled;
_fuelСapacityTextBox.Text = _lawnmower.FuelCapacity.ToString(CultureInfo.CurrentCulture); _fuelСapacityTextBox.IsEnabled = parEnabled;
} }
/// <summary> /// <summary>

View File

@@ -22,20 +22,21 @@
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Label Content="Name:" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Name:" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" />
<TextBox x:Name="_nameTextBox" Grid.Row="0" Grid.Column="1" Margin="5,5,5,5" /> <TextBox x:Name="_nameTextBox" Grid.Row="0" Grid.Column="1" Margin="5,5,5,5" Text="{Binding Name, UpdateSourceTrigger=Explicit}" />
<Label Content="Material:" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Material:" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" />
<ComboBox x:Name="_materialComboBox" Grid.Row="1" Grid.Column="1" Margin="5,5,5,5" /> <ComboBox x:Name="_materialComboBox" Grid.Row="1" Grid.Column="1" Margin="5,5,5,5" Text="{Binding Material, UpdateSourceTrigger=Explicit}" />
<Label Content="Weight:" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Weight:" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" />
<TextBox x:Name="_weightTextBox" Grid.Row="2" Grid.Column="1" Margin="5,5,5,5" /> <TextBox x:Name="_weightTextBox" Grid.Row="2" Grid.Column="1" Margin="5,5,5,5" Text="{Binding Weight, UpdateSourceTrigger=Explicit}" />
<Label Content="Handle length:" Grid.Row="3" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Handle length:" Grid.Row="3" Grid.Column="0" VerticalAlignment="Center" />
<TextBox x:Name="_handleLengthTextBox" Grid.Row="3" Grid.Column="1" Margin="5,5,5,5" /> <TextBox x:Name="_handleLengthTextBox" Grid.Row="3" Grid.Column="1" Margin="5,5,5,5" Text="{Binding HandleLength, UpdateSourceTrigger=Explicit}" />
<Label Content="Blade size:" Grid.Row="4" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Blade size:" Grid.Row="4" Grid.Column="0" VerticalAlignment="Center" />
<TextBox x:Name="_bladeSizeTextBox" Grid.Row="4" Grid.Column="1" Margin="5,5,5,5" /> <TextBox x:Name="_bladeSizeTextBox" Grid.Row="4" Grid.Column="1" Margin="5,5,5,5" Text="{Binding BladeSize, UpdateSourceTrigger=Explicit}" />
<Button Click="SaveButton_Click" Content="Save" Grid.Row="5" Grid.Column="1" Margin="5,5,5,5" /> <Button Content="Cancel" IsCancel="True" Grid.Row="5" Grid.Column="0" Margin="5,5,5,5" />
<Button Name="_saveButton" Click="SaveButton_Click" Content="Save" Grid.Row="5" Grid.Column="1" Margin="5,5,5,5" />
</Grid> </Grid>
</Window> </Window>

View File

@@ -22,8 +22,9 @@ namespace Lab2
/// Конструктор /// Конструктор
/// </summary> /// </summary>
/// <param name="parScissors">Ножницы для редактирования</param> /// <param name="parScissors">Ножницы для редактирования</param>
/// <param name="parReadOnly">Доступность полей формы</param>
/// <exception cref="ArgumentNullException">Выбрасывается, когда ножницы равны null</exception> /// <exception cref="ArgumentNullException">Выбрасывается, когда ножницы равны null</exception>
public CreateScissors(Scissors parScissors) public CreateScissors(Scissors parScissors, bool parReadOnly = false)
{ {
if (parScissors == null) if (parScissors == null)
throw new ArgumentNullException(nameof(parScissors)); throw new ArgumentNullException(nameof(parScissors));
@@ -33,21 +34,27 @@ namespace Lab2
_materialComboBox.ItemsSource = Enum.GetValues(typeof(Material)); _materialComboBox.ItemsSource = Enum.GetValues(typeof(Material));
_scissors = parScissors; _scissors = parScissors;
DataContext = _scissors;
Title = $"Scissors {_scissors.Id}"; Title = $"Scissors {_scissors.Id}";
SyncFields();
SetEnabled(!parReadOnly);
if (parReadOnly)
_saveButton.Content = "Ok";
} }
/// <summary> /// <summary>
/// Синхронизирует поля формы с данными /// Устанавливает доступность полей формы
/// </summary> /// </summary>
private void SyncFields() /// <param name="parEnabled">Доступность</param>
private void SetEnabled(bool parEnabled)
{ {
_nameTextBox.Text = _scissors.Name; _nameTextBox.IsEnabled = parEnabled;
_materialComboBox.SelectedItem = _scissors.Material; _materialComboBox.IsEnabled = parEnabled;
_weightTextBox.Text = _scissors.Weight.ToString(CultureInfo.CurrentCulture); _weightTextBox.IsEnabled = parEnabled;
_handleLengthTextBox.Text = _scissors.HandleLength.ToString(CultureInfo.CurrentCulture); _handleLengthTextBox.IsEnabled = parEnabled;
_bladeSizeTextBox.Text = _scissors.BladeSize.ToString(CultureInfo.CurrentCulture); _bladeSizeTextBox.IsEnabled = parEnabled;
} }
/// <summary> /// <summary>

View File

@@ -22,20 +22,21 @@
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Label Content="Name:" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Name:" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" />
<TextBox x:Name="_nameTextBox" Grid.Row="0" Grid.Column="1" Margin="5,5,5,5" /> <TextBox x:Name="_nameTextBox" Grid.Row="0" Grid.Column="1" Margin="5,5,5,5" Text="{Binding Name, UpdateSourceTrigger=Explicit}" />
<Label Content="Material:" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Material:" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" />
<ComboBox x:Name="_materialComboBox" Grid.Row="1" Grid.Column="1" Margin="5,5,5,5" /> <ComboBox x:Name="_materialComboBox" Grid.Row="1" Grid.Column="1" Margin="5,5,5,5" Text="{Binding Material, UpdateSourceTrigger=Explicit}" />
<Label Content="Weight:" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Weight:" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" />
<TextBox x:Name="_weightTextBox" Grid.Row="2" Grid.Column="1" Margin="5,5,5,5" /> <TextBox x:Name="_weightTextBox" Grid.Row="2" Grid.Column="1" Margin="5,5,5,5" Text="{Binding Weight, UpdateSourceTrigger=Explicit}" />
<Label Content="Handle length:" Grid.Row="3" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Handle length:" Grid.Row="3" Grid.Column="0" VerticalAlignment="Center" />
<TextBox x:Name="_handleLengthTextBox" Grid.Row="3" Grid.Column="1" Margin="5,5,5,5" /> <TextBox x:Name="_handleLengthTextBox" Grid.Row="3" Grid.Column="1" Margin="5,5,5,5" Text="{Binding HandleLength, UpdateSourceTrigger=Explicit}" />
<Label Content="Blade type:" Grid.Row="4" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Blade type:" Grid.Row="4" Grid.Column="0" VerticalAlignment="Center" />
<ComboBox x:Name="_bladeTypeComboBox" Grid.Row="4" Grid.Column="1" Margin="5,5,5,5" /> <ComboBox x:Name="_bladeTypeComboBox" Grid.Row="4" Grid.Column="1" Margin="5,5,5,5" Text="{Binding BladeType, UpdateSourceTrigger=Explicit}" />
<Button Click="SaveButton_Click" Content="Save" Grid.Row="5" Grid.Column="1" Margin="5,5,5,5" /> <Button Content="Cancel" IsCancel="True" Grid.Row="5" Grid.Column="0" Margin="5,5,5,5" />
<Button Name="_saveButton" Click="SaveButton_Click" Content="Save" Grid.Row="5" Grid.Column="1" Margin="5,5,5,5" />
</Grid> </Grid>
</Window> </Window>

View File

@@ -22,8 +22,9 @@ namespace Lab2
/// Конструктор /// Конструктор
/// </summary> /// </summary>
/// <param name="parScythe">Коса для редактирования</param> /// <param name="parScythe">Коса для редактирования</param>
/// <param name="parReadOnly">Доступность полей формы</param>
/// <exception cref="ArgumentNullException">Выбрасывается, когда коса равна null</exception> /// <exception cref="ArgumentNullException">Выбрасывается, когда коса равна null</exception>
public CreateScythe(Scythe parScythe) public CreateScythe(Scythe parScythe, bool parReadOnly = false)
{ {
if (parScythe == null) if (parScythe == null)
throw new ArgumentNullException(nameof(parScythe)); throw new ArgumentNullException(nameof(parScythe));
@@ -34,21 +35,27 @@ namespace Lab2
_bladeTypeComboBox.ItemsSource = Enum.GetValues(typeof(BladeType)); _bladeTypeComboBox.ItemsSource = Enum.GetValues(typeof(BladeType));
_scythe = parScythe; _scythe = parScythe;
DataContext = _scythe;
Title = $"Scythe {_scythe.Id}"; Title = $"Scythe {_scythe.Id}";
SyncFields();
SetEnabled(!parReadOnly);
if (parReadOnly)
_saveButton.Content = "Ok";
} }
/// <summary> /// <summary>
/// Синхронизирует поля формы с данными /// Устанавливает доступность полей формы
/// </summary> /// </summary>
private void SyncFields() /// <param name="parEnabled">Доступность</param>
private void SetEnabled(bool parEnabled)
{ {
_nameTextBox.Text = _scythe.Name; _nameTextBox.IsEnabled = parEnabled;
_materialComboBox.SelectedItem = _scythe.Material; _materialComboBox.IsEnabled = parEnabled;
_weightTextBox.Text = _scythe.Weight.ToString(CultureInfo.CurrentCulture); _weightTextBox.IsEnabled = parEnabled;
_handleLengthTextBox.Text = _scythe.HandleLength.ToString(CultureInfo.CurrentCulture); _handleLengthTextBox.IsEnabled = parEnabled;
_bladeTypeComboBox.SelectedItem = _scythe.BladeType; _bladeTypeComboBox.IsEnabled = parEnabled;
} }
/// <summary> /// <summary>

View File

@@ -22,20 +22,21 @@
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Label Content="Name:" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Name:" Grid.Row="0" Grid.Column="0" VerticalAlignment="Center" />
<TextBox x:Name="_nameTextBox" Grid.Row="0" Grid.Column="1" Margin="5,5,5,5" /> <TextBox x:Name="_nameTextBox" Grid.Row="0" Grid.Column="1" Margin="5,5,5,5" Text="{Binding Name, UpdateSourceTrigger=Explicit}" />
<Label Content="Material:" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Material:" Grid.Row="1" Grid.Column="0" VerticalAlignment="Center" />
<ComboBox x:Name="_materialComboBox" Grid.Row="1" Grid.Column="1" Margin="5,5,5,5" /> <ComboBox x:Name="_materialComboBox" Grid.Row="1" Grid.Column="1" Margin="5,5,5,5" Text="{Binding Material, UpdateSourceTrigger=Explicit}" />
<Label Content="Weight:" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Weight:" Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" />
<TextBox x:Name="_weightTextBox" Grid.Row="2" Grid.Column="1" Margin="5,5,5,5" /> <TextBox x:Name="_weightTextBox" Grid.Row="2" Grid.Column="1" Margin="5,5,5,5" Text="{Binding Weight, UpdateSourceTrigger=Explicit}" />
<Label Content="Power:" Grid.Row="3" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Power:" Grid.Row="3" Grid.Column="0" VerticalAlignment="Center" />
<TextBox x:Name="_powerTextBox" Grid.Row="3" Grid.Column="1" Margin="5,5,5,5" /> <TextBox x:Name="_powerTextBox" Grid.Row="3" Grid.Column="1" Margin="5,5,5,5" Text="{Binding Power, UpdateSourceTrigger=Explicit}" />
<Label Content="Mode:" Grid.Row="4" Grid.Column="0" VerticalAlignment="Center" /> <Label Content="Mode:" Grid.Row="4" Grid.Column="0" VerticalAlignment="Center" />
<ComboBox x:Name="_modeComboBox" Grid.Row="4" Grid.Column="1" Margin="5,5,5,5" /> <ComboBox x:Name="_modeComboBox" Grid.Row="4" Grid.Column="1" Margin="5,5,5,5" Text="{Binding Mode, UpdateSourceTrigger=Explicit}" />
<Button Click="SaveButton_Click" Content="Save" Grid.Row="5" Grid.Column="1" Margin="5,5,5,5" /> <Button Content="Cancel" IsCancel="True" Grid.Row="5" Grid.Column="0" Margin="5,5,5,5" />
<Button Name="_saveButton" Click="SaveButton_Click" Content="Save" Grid.Row="5" Grid.Column="1" Margin="5,5,5,5" />
</Grid> </Grid>
</Window> </Window>

View File

@@ -22,8 +22,9 @@ namespace Lab2
/// Конструктор /// Конструктор
/// </summary> /// </summary>
/// <param name="parTrimmer">Триммер для редактирования</param> /// <param name="parTrimmer">Триммер для редактирования</param>
/// <param name="parReadOnly">Доступность полей формы</param>
/// <exception cref="ArgumentNullException">Выбрасывается, когда триммер равен null</exception> /// <exception cref="ArgumentNullException">Выбрасывается, когда триммер равен null</exception>
public CreateTrimmer(Trimmer parTrimmer) public CreateTrimmer(Trimmer parTrimmer, bool parReadOnly = false)
{ {
if (parTrimmer == null) if (parTrimmer == null)
throw new ArgumentNullException(nameof(parTrimmer)); throw new ArgumentNullException(nameof(parTrimmer));
@@ -34,21 +35,27 @@ namespace Lab2
_modeComboBox.ItemsSource = Enum.GetValues(typeof(TrimmerMode)); _modeComboBox.ItemsSource = Enum.GetValues(typeof(TrimmerMode));
_trimmer = parTrimmer; _trimmer = parTrimmer;
DataContext = _trimmer;
Title = $"Trimmer {_trimmer.Id}"; Title = $"Trimmer {_trimmer.Id}";
SyncFields();
SetEnabled(!parReadOnly);
if (parReadOnly)
_saveButton.Content = "Ok";
} }
/// <summary> /// <summary>
/// Синхронизирует поля формы с данными /// Устанавливает доступность полей формы
/// </summary> /// </summary>
private void SyncFields() /// <param name="parEnabled">Доступность</param>
private void SetEnabled(bool parEnabled)
{ {
_nameTextBox.Text = _trimmer.Name; _nameTextBox.IsEnabled = parEnabled;
_materialComboBox.SelectedItem = _trimmer.Material; _materialComboBox.IsEnabled = parEnabled;
_weightTextBox.Text = _trimmer.Weight.ToString(CultureInfo.CurrentCulture); _weightTextBox.IsEnabled = parEnabled;
_powerTextBox.Text = _trimmer.Power.ToString(); _powerTextBox.IsEnabled = parEnabled;
_modeComboBox.SelectedItem = _trimmer.Mode; _modeComboBox.IsEnabled = parEnabled;
} }
/// <summary> /// <summary>

View File

@@ -56,14 +56,14 @@ namespace Lab2
/// </summary> /// </summary>
/// <param name="parTool"> Инструмент </param> /// <param name="parTool"> Инструмент </param>
/// <returns> True, если редактирование прошло успешно, иначе - false </returns> /// <returns> True, если редактирование прошло успешно, иначе - false </returns>
private bool ShowEditForm(Tool parTool) private bool ShowEditForm(Tool parTool, bool parReadOnly = false)
{ {
Window? form = parTool switch Window? form = parTool switch
{ {
Scissors scissors => new CreateScissors(scissors), Scissors scissors => new CreateScissors(scissors, parReadOnly),
Scythe scythe => new CreateScythe(scythe), Scythe scythe => new CreateScythe(scythe, parReadOnly),
Trimmer trimmer => new CreateTrimmer(trimmer), Trimmer trimmer => new CreateTrimmer(trimmer, parReadOnly),
Lawnmower lawnmower => new CreateLawnmower(lawnmower), Lawnmower lawnmower => new CreateLawnmower(lawnmower, parReadOnly),
_ => null, _ => null,
}; };
@@ -175,10 +175,14 @@ namespace Lab2
/// </summary> /// </summary>
private void DeleteSelectedButton_Click(object sender, RoutedEventArgs e) private void DeleteSelectedButton_Click(object sender, RoutedEventArgs e)
{ {
if (!IsValidIndex(_dataGrid.SelectedIndex)) var selected = GetSelectedItem();
if (selected == null)
return; return;
_tools.RemoveAt(_dataGrid.SelectedIndex); if (!ShowEditForm(selected, true))
return;
_tools.Remove(selected);
} }
/// <summary> /// <summary>