Files
StructureHelper/StructureHelper/Windows/ViewModels/NdmCrossSections/ForceCombinationViewModelLogic.cs
2023-03-25 19:38:40 +05:00

125 lines
4.0 KiB
C#

using StructureHelper.Infrastructure;
using StructureHelper.Windows.Forces;
using StructureHelperCommon.Models.Forces;
using StructureHelperLogics.Models.Calculations.CalculationProperties;
using StructureHelperLogics.Models.CrossSections;
using StructureHelperLogics.NdmCalculations.Analyses;
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Windows.Input;
namespace StructureHelper.Windows.ViewModels.NdmCrossSections
{
public class ForceCombinationViewModelLogic : ViewModelBase, IForceCombinationViewModelLogic
{
private readonly ICrossSectionRepository repository;
public IForceAction SelectedItem { get; set; }
public ObservableCollection<IForceAction> Items { get; private set; }
private ICommand addForceCombinationCommand;
public ICommand Add
{
get
{
return addForceCombinationCommand ??
(
addForceCombinationCommand = new RelayCommand(o =>
{
AddCombination();
OnPropertyChanged(nameof(Items));
}));
}
}
private void AddCombination()
{
var item = new ForceCombinationList() { Name = "New Force Combination" };
Items.Add(item);
repository.ForceActions.Add(item);
}
private ICommand deleteForceCombinationCommand;
public ICommand Delete
{
get
{
return deleteForceCombinationCommand ??
(
deleteForceCombinationCommand = new RelayCommand(o =>
{
DeleteForceCombination();
OnPropertyChanged(nameof(Items));
}, o => SelectedItem != null));
}
}
private void DeleteForceCombination()
{
var dialogResult = MessageBox.Show("Delete action?", "Please, confirm deleting", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
if (dialogResult == DialogResult.Yes)
{
repository.ForceActions.Remove(SelectedItem);
}
}
private ICommand editForceCombinationCommand;
private ICommand copyCommand;
public ICommand Edit
{
get
{
return editForceCombinationCommand ??
(
editForceCombinationCommand = new RelayCommand(o =>
{
EditForceCombination();
Items.Clear();
AddItems(repository.ForceActions);
OnPropertyChanged(nameof(Items));
}, o => SelectedItem != null));
}
}
public ICommand Copy
{
get
{
return copyCommand ??
(
copyCommand = new RelayCommand(o =>
{
var item = SelectedItem.Clone() as IForceCombinationList;
repository.ForceActions.Add(item);
Items.Add(item);
OnPropertyChanged(nameof(Items));
}, o => SelectedItem != null));
}
}
private void EditForceCombination()
{
//var wnd = new ForceCombinationView(SelectedItem);
//wnd.ShowDialog();
}
public void AddItems(IEnumerable<IForceAction> items)
{
foreach (var item in items)
{
Items.Add(item);
}
}
public ForceCombinationViewModelLogic(ICrossSectionRepository repository)
{
this.repository = repository;
Items = new ObservableCollection<IForceAction>();
AddItems(this.repository.ForceActions);
}
}
}