Index: Demo/Riskeer/src/Demo.Riskeer/Demo.Riskeer.csproj =================================================================== diff -u -rc9cd43d7f5600222d0fdbca94ca353a4cc2505df -rc88e2c8e83fd7855943a4f182378ac7e5ce4eb6d --- Demo/Riskeer/src/Demo.Riskeer/Demo.Riskeer.csproj (.../Demo.Riskeer.csproj) (revision c9cd43d7f5600222d0fdbca94ca353a4cc2505df) +++ Demo/Riskeer/src/Demo.Riskeer/Demo.Riskeer.csproj (.../Demo.Riskeer.csproj) (revision c88e2c8e83fd7855943a4f182378ac7e5ce4eb6d) @@ -152,6 +152,11 @@ Core.Plugins.Chart False + + {b9838495-b090-4b84-a387-a8974f4f9cc4} + Riskeer.AssemblyTool.IO + False + {C6309704-D67B-434C-BC98-9F8910BC1D10} Riskeer.ClosingStructures.Data Index: Demo/Riskeer/src/Demo.Riskeer/GUIs/DemoProjectPlugin.cs =================================================================== diff -u -rc9cd43d7f5600222d0fdbca94ca353a4cc2505df -rc88e2c8e83fd7855943a4f182378ac7e5ce4eb6d --- Demo/Riskeer/src/Demo.Riskeer/GUIs/DemoProjectPlugin.cs (.../DemoProjectPlugin.cs) (revision c9cd43d7f5600222d0fdbca94ca353a4cc2505df) +++ Demo/Riskeer/src/Demo.Riskeer/GUIs/DemoProjectPlugin.cs (.../DemoProjectPlugin.cs) (revision c88e2c8e83fd7855943a4f182378ac7e5ce4eb6d) @@ -20,6 +20,7 @@ // All rights reserved. using System.Collections.Generic; +using Core.Common.Gui; using Core.Common.Gui.Forms; using Core.Common.Gui.Plugin; using Core.Components.Chart.Data; @@ -78,7 +79,7 @@ { Image = Resources.AssemblyResultTotal, GetViewName = (v, o) => Resources.General_Assembly, - CreateInstance = data => new AssemblyView(data) + CreateInstance = data => new AssemblyView(data, new DialogBasedInquiryHelper(Gui.MainWindow)) }; } } Index: Demo/Riskeer/src/Demo.Riskeer/Views/AssemblyView.Designer.cs =================================================================== diff -u -r17d46ab746cc5cfec5030e8c42827e6d381461a7 -rc88e2c8e83fd7855943a4f182378ac7e5ce4eb6d --- Demo/Riskeer/src/Demo.Riskeer/Views/AssemblyView.Designer.cs (.../AssemblyView.Designer.cs) (revision 17d46ab746cc5cfec5030e8c42827e6d381461a7) +++ Demo/Riskeer/src/Demo.Riskeer/Views/AssemblyView.Designer.cs (.../AssemblyView.Designer.cs) (revision c88e2c8e83fd7855943a4f182378ac7e5ce4eb6d) @@ -54,12 +54,13 @@ this.riskeerMapControl = new RiskeerMapControl(); this.dataGridViewControl = new Core.Common.Controls.DataGrid.DataGridViewControl(); this.readAssemblyButton = new System.Windows.Forms.Button(); + this.buttonGroupBox = new System.Windows.Forms.GroupBox(); this.SuspendLayout(); // // readAssemblyButton // this.readAssemblyButton.AutoSize = true; - this.readAssemblyButton.Enabled = false; + this.readAssemblyButton.Enabled = true; this.readAssemblyButton.Location = new System.Drawing.Point(3, 14); this.readAssemblyButton.Name = "readAssemblyButton"; this.readAssemblyButton.Size = new System.Drawing.Size(164, 23); @@ -68,12 +69,23 @@ this.readAssemblyButton.UseVisualStyleBackColor = true; this.readAssemblyButton.Click += new System.EventHandler(this.ReadAssembly_Click); // + // buttonGroupBox + // + this.buttonGroupBox.Controls.Add(this.readAssemblyButton); + this.buttonGroupBox.Dock = System.Windows.Forms.DockStyle.Bottom; + this.buttonGroupBox.Location = new System.Drawing.Point(0, 0); + this.buttonGroupBox.MinimumSize = new System.Drawing.Size(180, 43); + this.buttonGroupBox.Name = "buttonGroupBox"; + this.buttonGroupBox.Size = new System.Drawing.Size(789, 43); + this.buttonGroupBox.TabIndex = 2; + this.buttonGroupBox.TabStop = false; + // // riskeerMapControl // - this.riskeerMapControl.Dock = System.Windows.Forms.DockStyle.Bottom; - this.riskeerMapControl.Location = new System.Drawing.Point(0, 0); + this.riskeerMapControl.Dock = System.Windows.Forms.DockStyle.Fill; + this.riskeerMapControl.Location = new System.Drawing.Point(0, 43); this.riskeerMapControl.Name = "riskeerMapControl"; - this.riskeerMapControl.Size = new System.Drawing.Size(150, 150); + this.riskeerMapControl.Size = new System.Drawing.Size(150, 50); this.riskeerMapControl.TabIndex = 0; // // dataGridViewControl @@ -91,7 +103,7 @@ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Name = "AssemblyView"; - this.Controls.Add(this.readAssemblyButton); + this.Controls.Add(this.buttonGroupBox); this.Controls.Add(this.riskeerMapControl); this.Controls.Add(this.dataGridViewControl); this.ResumeLayout(false); @@ -103,5 +115,6 @@ private RiskeerMapControl riskeerMapControl; private Core.Common.Controls.DataGrid.DataGridViewControl dataGridViewControl; private System.Windows.Forms.Button readAssemblyButton; + private System.Windows.Forms.GroupBox buttonGroupBox; } } Index: Demo/Riskeer/src/Demo.Riskeer/Views/AssemblyView.cs =================================================================== diff -u -r17d46ab746cc5cfec5030e8c42827e6d381461a7 -rc88e2c8e83fd7855943a4f182378ac7e5ce4eb6d --- Demo/Riskeer/src/Demo.Riskeer/Views/AssemblyView.cs (.../AssemblyView.cs) (revision 17d46ab746cc5cfec5030e8c42827e6d381461a7) +++ Demo/Riskeer/src/Demo.Riskeer/Views/AssemblyView.cs (.../AssemblyView.cs) (revision c88e2c8e83fd7855943a4f182378ac7e5ce4eb6d) @@ -20,27 +20,191 @@ // All rights reserved. using System; +using System.Collections.Generic; +using System.Drawing; +using System.Globalization; +using System.Linq; using System.Windows.Forms; -using Core.Common.Controls.Views; +using Core.Common.Base.Geometry; +using Core.Common.Gui; +using Core.Common.Util; using Core.Components.Gis.Data; +using Core.Components.Gis.Features; +using Core.Components.Gis.Forms; +using Core.Components.Gis.Geometries; +using Core.Components.Gis.Style; +using Core.Components.Gis.Theme; +using Riskeer.AssemblyTool.IO; +using Riskeer.AssemblyTool.IO.Model; +using Riskeer.AssemblyTool.IO.Model.DataTypes; +using Riskeer.AssemblyTool.IO.Model.Enums; using Riskeer.Common.Data.AssessmentSection; +using RiskeerCommonFormsResources = Riskeer.Common.Forms.Properties.Resources; +using RiskeerIntegrationPluginResources = Riskeer.Integration.Plugin.Properties.Resources; namespace Demo.Riskeer.Views { - public partial class AssemblyView : UserControl, IView + public partial class AssemblyView : UserControl, IMapView { - public AssemblyView(BackgroundData backgroundData) + private readonly IInquiryHelper inquiryHelper; + private readonly MapDataCollection mapDataCollection; + + public AssemblyView(BackgroundData backgroundData, IInquiryHelper inquiryHelper) { + if (backgroundData == null) + { + throw new ArgumentNullException(nameof(backgroundData)); + } + + if (inquiryHelper == null) + { + throw new ArgumentNullException(nameof(inquiryHelper)); + } + + this.inquiryHelper = inquiryHelper; + InitializeComponent(); - riskeerMapControl.SetAllData(new MapDataCollection("test"), backgroundData); + mapDataCollection = new MapDataCollection("test"); + riskeerMapControl.SetAllData(mapDataCollection, backgroundData); } public object Data { get; set; } + public IMapControl Map + { + get + { + return riskeerMapControl.MapControl; + } + } + private void ReadAssembly_Click(object sender, EventArgs e) { - Console.WriteLine("click!"); + var fileFilterGenerator = new FileFilterGenerator(RiskeerIntegrationPluginResources.AssemblyResult_file_filter_Extension, + RiskeerCommonFormsResources.AssemblyResult_DisplayName); + + string filePath = inquiryHelper.GetSourceFileLocation(fileFilterGenerator.Filter); + + if (filePath == null) + { + return; + } + + using (var reader = new SerializableAssemblyReader(filePath)) + { + SerializableAssembly data = reader.Read(); + + DisplayDataOnMap(data); + } } + + private void DisplayDataOnMap(SerializableAssembly data) + { + mapDataCollection.Clear(); + + SerializableFailureMechanismSection[] failureMechanismSections = data.FeatureMembers.OfType().ToArray(); + + var failureMechanismSectionFeatures = new List(); + + foreach (SerializableFeatureMember serializableFeatureMember in data.FeatureMembers) + { + var serializableAssessmentSection = serializableFeatureMember as SerializableAssessmentSection; + if (serializableAssessmentSection != null) + { + Point2D[] geometry = GetGeometry(serializableAssessmentSection.ReferenceLineGeometry); + + mapDataCollection.Add(new MapLineData("Referentie lijn", new LineStyle + { + Color = Color.Blue, + DashStyle = LineDashStyle.DashDot, + Width = 5 + }) + { + Features = new[] + { + new MapFeature(new[] + { + new MapGeometry(new[] + { + geometry + }) + }) + } + }); + } + + var failureMechanismSectionAssembly = serializableFeatureMember as SerializableCombinedFailureMechanismSectionAssembly; + if (failureMechanismSectionAssembly != null) + { + SerializableFailureMechanismSection section = failureMechanismSections.Single(s => s.Id == failureMechanismSectionAssembly.FailureMechanismSectionId); + + var feature = new MapFeature(new[] + { + new MapGeometry(new[] + { + GetGeometry(section.Geometry) + }) + }); + feature.MetaData.Add("Assembly", failureMechanismSectionAssembly.CombinedSectionResult.CategoryGroup); + failureMechanismSectionFeatures.Add(feature); + } + } + + mapDataCollection.Add(new MapLineData("Assemblage resultaat", new LineStyle(), CreateDisplayFailureMechanismAssemblyCategoryGroupMapTheme()) + { + Features = failureMechanismSectionFeatures + }); + + mapDataCollection.NotifyObservers(); + } + + private static MapTheme CreateDisplayFailureMechanismAssemblyCategoryGroupMapTheme() + { + return new MapTheme("Assembly", new[] + { + CreateCategoryTheme(Color.FromArgb(255, 0, 255, 0), SerializableFailureMechanismSectionCategoryGroup.Iv), + CreateCategoryTheme(Color.FromArgb(255, 118, 147, 60), SerializableFailureMechanismSectionCategoryGroup.IIv), + CreateCategoryTheme(Color.FromArgb(255, 255, 255, 0), SerializableFailureMechanismSectionCategoryGroup.IIIv), + CreateCategoryTheme(Color.FromArgb(255, 204, 192, 218), SerializableFailureMechanismSectionCategoryGroup.IVv), + CreateCategoryTheme(Color.FromArgb(255, 255, 153, 0), SerializableFailureMechanismSectionCategoryGroup.Vv), + CreateCategoryTheme(Color.FromArgb(255, 255, 0, 0), SerializableFailureMechanismSectionCategoryGroup.VIv), + CreateCategoryTheme(Color.FromArgb(255, 255, 255, 255), SerializableFailureMechanismSectionCategoryGroup.VIIv), + CreateCategoryTheme(Color.FromArgb(0, 0, 0, 0), SerializableFailureMechanismSectionCategoryGroup.NotApplicable) + }); + } + + private static LineCategoryTheme CreateCategoryTheme(Color color, SerializableFailureMechanismSectionCategoryGroup categoryGroup) + { + var lineStyle = new LineStyle + { + Color = color, + DashStyle = LineDashStyle.Solid, + Width = 6 + }; + + return new LineCategoryTheme(CreateCriterion(categoryGroup), lineStyle); + } + + private static ValueCriterion CreateCriterion(SerializableFailureMechanismSectionCategoryGroup category) + { + return new ValueCriterion(ValueCriterionOperator.EqualValue, + new EnumDisplayWrapper(category).DisplayName); + } + + private static Point2D[] GetGeometry(SerializableLine line) + { + string[] coordinates = line.LineString.Geometry.Split(' '); + + var geometry = new List(); + for (var i = 0; i < coordinates.Length - 1; i += 2) + { + var xCoordinate = Convert.ToDouble(coordinates[i], CultureInfo.InvariantCulture); + var yCoordinate = Convert.ToDouble(coordinates[i + 1], CultureInfo.InvariantCulture); + geometry.Add(new Point2D(xCoordinate, yCoordinate)); + } + + return geometry.ToArray(); + } } } \ No newline at end of file