diff --git a/StructureHelper/Infrastructure/UI/Resources/Materials.xaml b/StructureHelper/Infrastructure/UI/Resources/Materials.xaml
index 5cd1ae1..72b5407 100644
--- a/StructureHelper/Infrastructure/UI/Resources/Materials.xaml
+++ b/StructureHelper/Infrastructure/UI/Resources/Materials.xaml
@@ -7,16 +7,7 @@
-
-
-
+
@@ -28,8 +19,11 @@
-
-
+
+
@@ -113,12 +107,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/StructureHelper/StructureHelper.csproj.user b/StructureHelper/StructureHelper.csproj.user
index 65eb1d7..38327d8 100644
--- a/StructureHelper/StructureHelper.csproj.user
+++ b/StructureHelper/StructureHelper.csproj.user
@@ -15,6 +15,9 @@
Code
+
+ Code
+
Code
@@ -24,9 +27,15 @@
Code
+
+ Code
+
Code
+
+ Code
+
Code
@@ -114,6 +123,9 @@
Code
+
+ Code
+
Code
@@ -155,6 +167,9 @@
Designer
+
+ Designer
+
Designer
@@ -164,9 +179,15 @@
Designer
+
+ Designer
+
Designer
+
+ Designer
+
Designer
@@ -257,6 +278,9 @@
Designer
+
+ Designer
+
Designer
diff --git a/StructureHelper/Windows/BeamShears/BeamShearActionView.xaml b/StructureHelper/Windows/BeamShears/BeamShearActionView.xaml
index 3a0160f..30a00d7 100644
--- a/StructureHelper/Windows/BeamShears/BeamShearActionView.xaml
+++ b/StructureHelper/Windows/BeamShears/BeamShearActionView.xaml
@@ -32,7 +32,7 @@
-
+
@@ -53,7 +53,7 @@
-
+
diff --git a/StructureHelper/Windows/BeamShears/BeamShearActionsViewModel.cs b/StructureHelper/Windows/BeamShears/BeamShearActionsViewModel.cs
index b9a9c87..5680052 100644
--- a/StructureHelper/Windows/BeamShears/BeamShearActionsViewModel.cs
+++ b/StructureHelper/Windows/BeamShears/BeamShearActionsViewModel.cs
@@ -12,7 +12,7 @@ namespace StructureHelper.Windows.BeamShears
private readonly IBeamShearRepository shearRepository;
private IUpdateStrategy updateStrategy;
- public BeamShearActionsViewModel(IBeamShearRepository shearRepository) : base(shearRepository.BeamShearActions)
+ public BeamShearActionsViewModel(IBeamShearRepository shearRepository) : base(shearRepository.Actions)
{
this.shearRepository = shearRepository;
}
@@ -36,7 +36,7 @@ namespace StructureHelper.Windows.BeamShears
}
public override void DeleteMethod(object parameter)
{
- shearRepository.DeleteAction(SelectedItem);
+ BeamShearRepositoryService.DeleteAction(shearRepository, SelectedItem);
base.DeleteMethod(parameter);
}
}
diff --git a/StructureHelper/Windows/BeamShears/BeamShearCalculatorInputDataViewModel.cs b/StructureHelper/Windows/BeamShears/BeamShearCalculatorInputDataViewModel.cs
new file mode 100644
index 0000000..91b6673
--- /dev/null
+++ b/StructureHelper/Windows/BeamShears/BeamShearCalculatorInputDataViewModel.cs
@@ -0,0 +1,37 @@
+using StructureHelper.Infrastructure;
+using StructureHelper.Windows.ViewModels;
+using StructureHelperCommon.Models.Forces;
+using StructureHelperLogics.Models.BeamShears;
+
+namespace StructureHelper.Windows.BeamShears
+{
+ public class BeamShearCalculatorInputDataViewModel : ViewModelBase
+ {
+ private readonly IBeamShearRepository shearRepository;
+ private readonly IBeamShearCalculatorInputData inputData;
+
+ public SourceTargetVM ActionSourceTarget { get; } = new();
+ public SourceTargetVM StirrupSourceTarget { get; } = new();
+ public SourceTargetVM SectionSourceTarget { get; } = new();
+
+ public BeamShearCalculatorInputDataViewModel(IBeamShearRepository shearRepository, IBeamShearCalculatorInputData inputData)
+ {
+ this.shearRepository = shearRepository;
+ this.inputData = inputData;
+ InitializeViewModels();
+ }
+
+ private void InitializeViewModels()
+ {
+ ActionSourceTarget.SetTargetItems(inputData.Actions);
+ ActionSourceTarget.SetSourceItems(shearRepository.Actions);
+ ActionSourceTarget.ItemDataDemplate = SourceTargetFactory.GetSimpleTemplate();
+ StirrupSourceTarget.SetTargetItems(inputData.Stirrups);
+ StirrupSourceTarget.SetSourceItems(shearRepository.Stirrups);
+ StirrupSourceTarget.ItemDataDemplate = SourceTargetFactory.GetSimpleTemplate();
+ SectionSourceTarget.SetTargetItems(inputData.Sections);
+ SectionSourceTarget.SetSourceItems(shearRepository.Sections);
+ SectionSourceTarget.ItemDataDemplate = SourceTargetFactory.GetSimpleTemplate();
+ }
+ }
+}
diff --git a/StructureHelper/Windows/BeamShears/BeamShearCalculatorView.xaml b/StructureHelper/Windows/BeamShears/BeamShearCalculatorView.xaml
new file mode 100644
index 0000000..782b3ec
--- /dev/null
+++ b/StructureHelper/Windows/BeamShears/BeamShearCalculatorView.xaml
@@ -0,0 +1,40 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/StructureHelper/Windows/BeamShears/BeamShearCalculatorView.xaml.cs b/StructureHelper/Windows/BeamShears/BeamShearCalculatorView.xaml.cs
new file mode 100644
index 0000000..41a3fe2
--- /dev/null
+++ b/StructureHelper/Windows/BeamShears/BeamShearCalculatorView.xaml.cs
@@ -0,0 +1,19 @@
+using System.Windows;
+
+namespace StructureHelper.Windows.BeamShears
+{
+ ///
+ /// Interaction logic for BeamShearCalculatorView.xaml
+ ///
+ public partial class BeamShearCalculatorView : Window
+ {
+ private BeamShearCalculatorViewModel viewModel;
+ public BeamShearCalculatorView(BeamShearCalculatorViewModel viewModel)
+ {
+ InitializeComponent();
+ this.viewModel = viewModel;
+ this.viewModel.ParentWindow = this;
+ this.DataContext = this.viewModel;
+ }
+ }
+}
diff --git a/StructureHelper/Windows/BeamShears/BeamShearCalculatorViewModel.cs b/StructureHelper/Windows/BeamShears/BeamShearCalculatorViewModel.cs
index af8581e..fb4e275 100644
--- a/StructureHelper/Windows/BeamShears/BeamShearCalculatorViewModel.cs
+++ b/StructureHelper/Windows/BeamShears/BeamShearCalculatorViewModel.cs
@@ -1,19 +1,29 @@
using StructureHelper.Windows.ViewModels;
using StructureHelperLogics.Models.BeamShears;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
namespace StructureHelper.Windows.BeamShears
{
public class BeamShearCalculatorViewModel : OkCancelViewModelBase
{
- private IBeamShearCalculator calculator;
- public BeamShearCalculatorViewModel(IBeamShearCalculator calculator)
+ private readonly IBeamShearRepository shearRepository;
+ private readonly IBeamShearCalculator calculator;
+
+
+ public string Name
{
+ get => calculator.Name;
+ set
+ {
+ calculator.Name = value;
+ OnPropertyChanged(nameof(Name));
+ }
+ }
+ public BeamShearCalculatorInputDataViewModel InputDataViewModel { get; }
+ public BeamShearCalculatorViewModel(IBeamShearRepository shearRepository, IBeamShearCalculator calculator)
+ {
+ this.shearRepository = shearRepository;
this.calculator = calculator;
+ InputDataViewModel = new(this.shearRepository, this.calculator.InputData);
}
}
}
diff --git a/StructureHelper/Windows/BeamShears/BeamShearCalculatorsViewModel.cs b/StructureHelper/Windows/BeamShears/BeamShearCalculatorsViewModel.cs
index c449294..677ceef 100644
--- a/StructureHelper/Windows/BeamShears/BeamShearCalculatorsViewModel.cs
+++ b/StructureHelper/Windows/BeamShears/BeamShearCalculatorsViewModel.cs
@@ -12,6 +12,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+using System.Windows;
using System.Windows.Forms;
using System.Windows.Input;
@@ -72,14 +73,17 @@ namespace StructureHelper.Windows.BeamShears
}
private void EditCalculator()
{
+ Window window;
if (SelectedItem is IBeamShearCalculator beamShearCalculator)
{
- //to do
+ var viewModel = new BeamShearCalculatorViewModel(shearRepository, beamShearCalculator);
+ window = new BeamShearCalculatorView(viewModel);
}
else
{
throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(SelectedItem));
}
+ window.ShowDialog();
}
private void RunMethod(object param)
{
diff --git a/StructureHelper/Windows/BeamShears/BeamShearSectionsViewModel.cs b/StructureHelper/Windows/BeamShears/BeamShearSectionsViewModel.cs
index 697d228..447e3b2 100644
--- a/StructureHelper/Windows/BeamShears/BeamShearSectionsViewModel.cs
+++ b/StructureHelper/Windows/BeamShears/BeamShearSectionsViewModel.cs
@@ -1,24 +1,72 @@
-using StructureHelper.Windows.ViewModels;
+using StructureHelper.Infrastructure.Enums;
+using StructureHelper.Windows.ViewModels;
+using StructureHelper.Windows.ViewModels.Errors;
+using StructureHelperCommon.Infrastructures.Exceptions;
+using StructureHelperCommon.Infrastructures.Interfaces;
using StructureHelperLogics.Models.BeamShears;
using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using System.Windows.Forms;
+using System.Windows;
namespace StructureHelper.Windows.BeamShears
{
public class BeamShearSectionsViewModel : SelectItemVM
{
- IBeamShearRepository shearRepository;
- public BeamShearSectionsViewModel(IBeamShearRepository shearRepository) : base(shearRepository.ShearSections)
+ private const string ErrorText = "Error of creating of section";
+ private IUpdateStrategy updateStrategy;
+ private IBeamShearRepository shearRepository;
+ private PrimitiveType sectionType;
+ public BeamShearSectionsViewModel(IBeamShearRepository shearRepository) : base(shearRepository.Sections)
{
this.shearRepository = shearRepository;
}
+ public override void EditMethod(object parameter)
+ {
+ if (SelectedItem is null) { return; }
+ SafetyProcessor.RunSafeProcess(EditSection, "Error of editing of section");
+ base.EditMethod(parameter);
+ }
+
+ public override void AddMethod(object parameter)
+ {
+ if (parameter is PrimitiveType primitiveType)
+ {
+ sectionType = primitiveType;
+ SafetyProcessor.RunSafeProcess(AddSection, ErrorText);
+ }
+ else
+ {
+ throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknownObj(parameter));
+ }
+ base.AddMethod(parameter);
+ }
+
+ private void AddSection()
+ {
+ if (sectionType is PrimitiveType.Rectangle)
+ {
+ NewItem = new BeamShearSection(Guid.NewGuid())
+ {
+ Name = "New rectangle section"
+ };
+ }
+ }
+
+ private void EditSection()
+ {
+ Window window;
+ IBeamShearSection temporarySection = SelectedItem.Clone() as IBeamShearSection;
+ window = new SectionView(SelectedItem);
+ window.ShowDialog();
+ if (window.DialogResult != true)
+ {
+ updateStrategy ??= new BeamShearSectionUpdateStrategy();
+ updateStrategy.Update(SelectedItem, temporarySection);
+ }
+ }
+
public override void DeleteMethod(object parameter)
{
- shearRepository.DeleteSection(SelectedItem);
+ BeamShearRepositoryService.DeleteSection(shearRepository, SelectedItem);
base.DeleteMethod(parameter);
}
}
diff --git a/StructureHelper/Windows/BeamShears/BeamShearView.xaml b/StructureHelper/Windows/BeamShears/BeamShearView.xaml
index dc86b6f..b9959c7 100644
--- a/StructureHelper/Windows/BeamShears/BeamShearView.xaml
+++ b/StructureHelper/Windows/BeamShears/BeamShearView.xaml
@@ -24,9 +24,10 @@
-
+