diff --git a/StructureHelper/App.xaml b/StructureHelper/App.xaml index 9d626e4..df63f54 100644 --- a/StructureHelper/App.xaml +++ b/StructureHelper/App.xaml @@ -15,6 +15,7 @@ + diff --git a/StructureHelper/Infrastructure/Enums/ActionType.cs b/StructureHelper/Infrastructure/Enums/ActionType.cs new file mode 100644 index 0000000..3a81918 --- /dev/null +++ b/StructureHelper/Infrastructure/Enums/ActionType.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace StructureHelper.Infrastructure.Enums +{ + public enum ActionType + { + ForceCombination, + ForceCombinationByFactor + } +} diff --git a/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveBase.cs b/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveBase.cs index c05f549..9017cc8 100644 --- a/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveBase.cs +++ b/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveBase.cs @@ -263,13 +263,13 @@ namespace StructureHelper.Infrastructure.UI.DataContexts public virtual INdmPrimitive GetNdmPrimitive() { - RefreshNdmPrimitive(); + //RefreshNdmPrimitive(); return primitive; } - public virtual void RefreshNdmPrimitive() - { - } + //public virtual void RefreshNdmPrimitive() + //{ + //} public void RefreshColor() { diff --git a/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveOperations.cs b/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveOperations.cs index 719c60c..74f5b55 100644 --- a/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveOperations.cs +++ b/StructureHelper/Infrastructure/UI/DataContexts/PrimitiveOperations.cs @@ -17,26 +17,37 @@ namespace StructureHelper.Infrastructure.UI.DataContexts public static ObservableCollection ConvertNdmPrimitivesToPrimitiveBase(IEnumerable primitives) { ObservableCollection viewItems = new ObservableCollection(); - foreach (var item in primitives) + foreach (var primitive in primitives) { - if (item is IRectanglePrimitive) - { - var rect = item as IRectanglePrimitive; - viewItems.Add(new RectangleViewPrimitive(rect)); - } - else if (item is ICirclePrimitive) - { - var circle = item as ICirclePrimitive; - viewItems.Add(new CircleViewPrimitive(circle)); - } - else if (item is IPointPrimitive) - { - var point = item as IPointPrimitive; - viewItems.Add(new PointViewPrimitive(point)); - } - else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown); + viewItems.Add(ConvertNdmPrimitiveToPrimitiveBase(primitive)); } return viewItems; } + public static PrimitiveBase ConvertNdmPrimitiveToPrimitiveBase(INdmPrimitive primitive) + { + PrimitiveBase viewItem; + if (primitive is IRectanglePrimitive) + { + var rect = primitive as IRectanglePrimitive; + viewItem = new RectangleViewPrimitive(rect); + } + else if (primitive is ICirclePrimitive) + { + var circle = primitive as ICirclePrimitive; + viewItem = new CircleViewPrimitive(circle); + } + else if (primitive is IPointPrimitive & primitive is not ReinforcementPrimitive) + { + var point = primitive as IPointPrimitive; + viewItem = new PointViewPrimitive(point); + } + else if (primitive is ReinforcementPrimitive) + { + var point = primitive as ReinforcementPrimitive; + viewItem = new ReinforcementViewPrimitive(point); + } + else throw new StructureHelperException(ErrorStrings.ObjectTypeIsUnknown + $". Actual type: {primitive.GetType()}"); + return viewItem; + } } } diff --git a/StructureHelper/Infrastructure/UI/DataContexts/ReinforcementViewPrimitive.cs b/StructureHelper/Infrastructure/UI/DataContexts/ReinforcementViewPrimitive.cs index 72c467b..e7b7fb2 100644 --- a/StructureHelper/Infrastructure/UI/DataContexts/ReinforcementViewPrimitive.cs +++ b/StructureHelper/Infrastructure/UI/DataContexts/ReinforcementViewPrimitive.cs @@ -7,10 +7,23 @@ using System.Threading.Tasks; namespace StructureHelper.Infrastructure.UI.DataContexts { - internal class ReinforcementViewPrimitive : PointViewPrimitive + public class ReinforcementViewPrimitive : PointViewPrimitive, IHasSurroundingPrimitive { - public ReinforcementViewPrimitive(IPointPrimitive _primitive) : base(_primitive) + ReinforcementPrimitive primitive; + + public INdmPrimitive SurroundingPrimitive { + get => primitive.SurroundingPrimitive; + set + { + primitive.SurroundingPrimitive = value; + OnPropertyChanged(nameof(SurroundingPrimitive)); + } + } + + public ReinforcementViewPrimitive(ReinforcementPrimitive _primitive) : base(_primitive) + { + primitive = _primitive; } } } diff --git a/StructureHelper/Infrastructure/UI/Resources/ForceTemplates.xaml b/StructureHelper/Infrastructure/UI/Resources/ForceTemplates.xaml new file mode 100644 index 0000000..39c13cf --- /dev/null +++ b/StructureHelper/Infrastructure/UI/Resources/ForceTemplates.xaml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +