Index: Core/Components/src/Core.Components.Gis.Forms/Views/WmtsLocationControl.Designer.cs =================================================================== diff -u -r99f9004206bfb9de084275d749b7aeccafd6da18 -r5be1ab23e8cdc4eacc23d0ba5b4f921d6be4a9c1 --- Core/Components/src/Core.Components.Gis.Forms/Views/WmtsLocationControl.Designer.cs (.../WmtsLocationControl.Designer.cs) (revision 99f9004206bfb9de084275d749b7aeccafd6da18) +++ Core/Components/src/Core.Components.Gis.Forms/Views/WmtsLocationControl.Designer.cs (.../WmtsLocationControl.Designer.cs) (revision 5be1ab23e8cdc4eacc23d0ba5b4f921d6be4a9c1) @@ -74,8 +74,11 @@ // urlLocationComboBox // resources.ApplyResources(this.urlLocationComboBox, "urlLocationComboBox"); + this.urlLocationComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.urlLocationComboBox.FormattingEnabled = true; this.urlLocationComboBox.Name = "urlLocationComboBox"; + this.urlLocationComboBox.Sorted = true; + this.urlLocationComboBox.SelectedIndexChanged += new System.EventHandler(this.OnUrlLocationSelectedIndexChanged); // // flowLayoutPanel2 // @@ -90,31 +93,35 @@ resources.ApplyResources(this.connectToButton, "connectToButton"); this.connectToButton.Name = "connectToButton"; this.connectToButton.UseVisualStyleBackColor = true; + this.connectToButton.Click += new System.EventHandler(this.OnConnectToButtonClick); // - // addButton + // addLocationButton // resources.ApplyResources(this.addLocationButton, "addLocationButton"); this.addLocationButton.Name = "addLocationButton"; this.addLocationButton.UseVisualStyleBackColor = true; + this.addLocationButton.Click += new System.EventHandler(this.OnAddLocationButtonClick); // - // editButton + // editLocationButton // resources.ApplyResources(this.editLocationButton, "editLocationButton"); this.editLocationButton.Name = "editLocationButton"; this.editLocationButton.UseVisualStyleBackColor = true; + this.editLocationButton.Click += new System.EventHandler(this.OnEditLocationButtonClick); // - // dataGridView + // dataGridViewControl // - this.dataGridViewControl.Dock = System.Windows.Forms.DockStyle.Fill; resources.ApplyResources(this.dataGridViewControl, "dataGridViewControl"); + this.dataGridViewControl.MultiSelect = false; this.dataGridViewControl.Name = "dataGridViewControl"; + this.dataGridViewControl.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; // - // WmtsLayerControl + // WmtsLocationControl // resources.ApplyResources(this, "$this"); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.Controls.Add(this.tableLayoutPanel1); - this.Name = "WmtsLayerControl"; + this.Name = "WmtsLocationControl"; this.tableLayoutPanel1.ResumeLayout(false); this.tableLayoutPanel1.PerformLayout(); this.tableLayoutPanel2.ResumeLayout(false); Index: Core/Components/src/Core.Components.Gis.Forms/Views/WmtsLocationControl.cs =================================================================== diff -u -r99f9004206bfb9de084275d749b7aeccafd6da18 -r5be1ab23e8cdc4eacc23d0ba5b4f921d6be4a9c1 --- Core/Components/src/Core.Components.Gis.Forms/Views/WmtsLocationControl.cs (.../WmtsLocationControl.cs) (revision 99f9004206bfb9de084275d749b7aeccafd6da18) +++ Core/Components/src/Core.Components.Gis.Forms/Views/WmtsLocationControl.cs (.../WmtsLocationControl.cs) (revision 5be1ab23e8cdc4eacc23d0ba5b4f921d6be4a9c1) @@ -44,7 +44,7 @@ private readonly IWmtsCapabilityFactory wmtsCapabilityFactory; private const string wmtsConnectionInfoFileName = "wmtsConnectionInfo.config"; private static readonly ILog log = LogManager.GetLogger(typeof(WmtsLocationControl)); - private readonly List wmtsConnectionInfos; + private readonly HashSet wmtsConnectionInfos; private readonly List capabilities; private string wmtsConnectionInfoFilePath; @@ -64,16 +64,16 @@ this.wmtsCapabilityFactory = wmtsCapabilityFactory; - wmtsConnectionInfos = new List(); + wmtsConnectionInfos = new HashSet(); capabilities = new List(); InitializeComponent(); InitializeWmtsConnectionInfos(); InitializeDataGridView(); - InitializeComboBoxDataSource(); + UpdateComboBoxDataSource(); InitializeEventHandlers(); - SetActiveWmtsMapData(activeWmtsMapData); + PreselectForMapData(activeWmtsMapData); UpdateButtons(); } @@ -123,7 +123,7 @@ base.Dispose(disposing); } - private void SetActiveWmtsMapData(WmtsMapData activeWmtsMapData) + private void PreselectForMapData(WmtsMapData activeWmtsMapData) { WmtsConnectionInfo suggestedInfo = TryCreateWmtsConnectionInfo(activeWmtsMapData?.Name, activeWmtsMapData?.SourceCapabilitiesUrl); @@ -162,10 +162,10 @@ string folderPath = SettingsHelper.Instance.GetApplicationLocalUserSettingsDirectory(SettingsHelper.Instance.ApplicationVersion); wmtsConnectionInfoFilePath = Path.Combine(folderPath, wmtsConnectionInfoFileName); - wmtsConnectionInfos.AddRange(TryGetSavedWmtsConnectionInfos()); + wmtsConnectionInfos.UnionWith(GetSavedWmtsConnectionInfos()); } - private IEnumerable TryGetSavedWmtsConnectionInfos() + private IEnumerable GetSavedWmtsConnectionInfos() { try { @@ -179,7 +179,7 @@ return Enumerable.Empty(); } - private void TrySaveWmtsConnectionInfos() + private void SaveWmtsConnectionInfos() { try { @@ -194,14 +194,12 @@ private static WmtsConnectionInfo TryCreateWmtsConnectionInfo(string wmtsConnectionName, string wmtsConnectionUrl) { - try + if (wmtsConnectionName == null || string.IsNullOrWhiteSpace(wmtsConnectionUrl)) { - return new WmtsConnectionInfo(wmtsConnectionName, wmtsConnectionUrl); - } - catch (ArgumentException) - { return null; } + + return new WmtsConnectionInfo(wmtsConnectionName, wmtsConnectionUrl); } private void UpdateButtons() @@ -214,9 +212,6 @@ private void InitializeDataGridView() { - dataGridViewControl.SelectionMode = DataGridViewSelectionMode.FullRowSelect; - dataGridViewControl.MultiSelect = false; - dataGridViewControl.AddTextBoxColumn(nameof(WmtsCapabilityRow.Id), Resources.WmtsCapability_MapLayer_Id, true); dataGridViewControl.AddTextBoxColumn(nameof(WmtsCapabilityRow.Format), Resources.WmtsCapability_MapLayer_Format, @@ -264,13 +259,6 @@ #region ComboBox - private void InitializeComboBoxDataSource() - { - urlLocationComboBox.DropDownStyle = ComboBoxStyle.DropDownList; - urlLocationComboBox.Sorted = true; - UpdateComboBoxDataSource(); - } - private void UpdateComboBoxDataSource() { UpdateComboBoxDataSource(urlLocationComboBox.SelectedItem); @@ -279,15 +267,14 @@ private void UpdateComboBoxDataSource(object selectedItem) { urlLocationComboBox.DataSource = null; - urlLocationComboBox.DataSource = wmtsConnectionInfos; urlLocationComboBox.DisplayMember = nameof(WmtsConnectionInfo.Name); urlLocationComboBox.ValueMember = nameof(WmtsConnectionInfo.Url); + urlLocationComboBox.DataSource = wmtsConnectionInfos.ToArray(); if (selectedItem != null) { urlLocationComboBox.SelectedItem = selectedItem; } - UpdateButtons(); } @@ -303,12 +290,6 @@ private void InitializeEventHandlers() { dataGridViewControl.AddCurrentCellChangedHandler(DataGridViewCurrentCellChangedHandler); - - urlLocationComboBox.SelectedIndexChanged += OnUrlLocationSelectedIndexChanged; - - connectToButton.Click += OnConnectToButtonClick; - addLocationButton.Click += OnAddLocationButtonClick; - editLocationButton.Click += OnEditLocationButtonClick; } private void OnUrlLocationSelectedIndexChanged(object sender, EventArgs e) @@ -338,31 +319,24 @@ } catch (CannotFindTileSourceException exception) { - Form controlForm = FindForm(); - MessageBox.Show(controlForm, exception.Message, BaseResources.Error, MessageBoxButtons.OK, + Form parentForm = FindForm(); + MessageBox.Show(parentForm, exception.Message, BaseResources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); log.Error(exception.Message, exception); } } private void OnAddLocationButtonClick(object sender, EventArgs eventArgs) { - Form controlForm = FindForm(); - using (var dialog = new WmtsConnectionDialog(controlForm)) + Form parentForm = FindForm(); + using (var dialog = new WmtsConnectionDialog(parentForm)) { if (dialog.ShowDialog() != DialogResult.OK) { return; } - WmtsConnectionInfo createdWmtsConnectionInfos = TryCreateWmtsConnectionInfo(dialog.WmtsConnectionName, - dialog.WmtsConnectionUrl); - if (createdWmtsConnectionInfos != null) - { - wmtsConnectionInfos.Add(createdWmtsConnectionInfos); - TrySaveWmtsConnectionInfos(); - UpdateComboBoxDataSource(createdWmtsConnectionInfos); - } + UpdateWmtsConnectionInfos(dialog); } } @@ -373,26 +347,36 @@ { return; } - Form controlForm = FindForm(); - using (var dialog = new WmtsConnectionDialog(controlForm, selectedWmtsConnectionInfo)) + Form parentForm = FindForm(); + using (var dialog = new WmtsConnectionDialog(parentForm, selectedWmtsConnectionInfo)) { if (dialog.ShowDialog() != DialogResult.OK) { return; } - WmtsConnectionInfo createdWmtsConnectionInfos = TryCreateWmtsConnectionInfo(dialog.WmtsConnectionName, - dialog.WmtsConnectionUrl); - if (createdWmtsConnectionInfos != null) - { - wmtsConnectionInfos.Remove(selectedWmtsConnectionInfo); - wmtsConnectionInfos.Add(createdWmtsConnectionInfos); - TrySaveWmtsConnectionInfos(); - UpdateComboBoxDataSource(createdWmtsConnectionInfos); - } + UpdateWmtsConnectionInfos(dialog, selectedWmtsConnectionInfo); } } + private void UpdateWmtsConnectionInfos(WmtsConnectionDialog dialog, WmtsConnectionInfo selectedWmtsConnectionInfo = null) + { + WmtsConnectionInfo createdWmtsConnectionInfos = TryCreateWmtsConnectionInfo(dialog.WmtsConnectionName, + dialog.WmtsConnectionUrl); + if (createdWmtsConnectionInfos == null) + { + return; + } + + if (selectedWmtsConnectionInfo != null) + { + wmtsConnectionInfos.Remove(selectedWmtsConnectionInfo); + } + wmtsConnectionInfos.Add(createdWmtsConnectionInfos); + SaveWmtsConnectionInfos(); + UpdateComboBoxDataSource(createdWmtsConnectionInfos); + } + public event EventHandler SelectedMapDataChanged; #endregion Index: Core/Components/src/Core.Components.Gis.Forms/Views/WmtsLocationControl.resx =================================================================== diff -u -r99f9004206bfb9de084275d749b7aeccafd6da18 -r5be1ab23e8cdc4eacc23d0ba5b4f921d6be4a9c1 --- Core/Components/src/Core.Components.Gis.Forms/Views/WmtsLocationControl.resx (.../WmtsLocationControl.resx) (revision 99f9004206bfb9de084275d749b7aeccafd6da18) +++ Core/Components/src/Core.Components.Gis.Forms/Views/WmtsLocationControl.resx (.../WmtsLocationControl.resx) (revision 5be1ab23e8cdc4eacc23d0ba5b4f921d6be4a9c1) @@ -334,7 +334,7 @@ dataGridViewControl - System.Windows.Forms.DataGridView, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + Core.Common.Controls.DataGrid.DataGridViewControl, Core.Common.Controls, Version=17.1.1.8459, Culture=neutral, PublicKeyToken=null tableLayoutPanel1 @@ -370,7 +370,7 @@ 0 - <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tableLayoutPanel2" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="flowLayoutPanel2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="dataGridView" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,Percent,100,Absolute,20" /></TableLayoutSettings> + <?xml version="1.0" encoding="utf-16"?><TableLayoutSettings><Controls><Control Name="tableLayoutPanel2" Row="0" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="flowLayoutPanel2" Row="1" RowSpan="1" Column="0" ColumnSpan="1" /><Control Name="dataGridViewControl" Row="2" RowSpan="1" Column="0" ColumnSpan="1" /></Controls><Columns Styles="Percent,100" /><Rows Styles="AutoSize,0,AutoSize,0,Percent,100,Absolute,20" /></TableLayoutSettings> True @@ -382,7 +382,7 @@ 487, 220 - WmtsLayerControl + WmtsLocationControl System.Windows.Forms.UserControl, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Index: Core/Components/test/Core.Components.Gis.Forms.Test/Views/WmtsLocationControlTest.cs =================================================================== diff -u -rc7dcfeb120035a08adfe115275512e1e6c5b4931 -r5be1ab23e8cdc4eacc23d0ba5b4f921d6be4a9c1 --- Core/Components/test/Core.Components.Gis.Forms.Test/Views/WmtsLocationControlTest.cs (.../WmtsLocationControlTest.cs) (revision c7dcfeb120035a08adfe115275512e1e6c5b4931) +++ Core/Components/test/Core.Components.Gis.Forms.Test/Views/WmtsLocationControlTest.cs (.../WmtsLocationControlTest.cs) (revision 5be1ab23e8cdc4eacc23d0ba5b4f921d6be4a9c1) @@ -193,7 +193,7 @@ var urlLocations = (ComboBox) new ComboBoxTester("urlLocationComboBox", form).TheObject; Assert.AreEqual(ComboBoxStyle.DropDownList, urlLocations.DropDownStyle); - var connectionInfos = (List) urlLocations.DataSource; + var connectionInfos = (WmtsConnectionInfo[]) urlLocations.DataSource; Assert.Contains(activeWmtsConnectionInfo, connectionInfos); Assert.AreEqual("Name", urlLocations.DisplayMember); @@ -450,6 +450,8 @@ public void GivenValidWmtsConnectionInfos_WhenConstructed_ThenExpectedProperties() { // Given + const string url = "https://geodata.nationaalgeoregister.nl/tiles/service/wmts/ahn1?request=GetCapabilities"; + wmtsCapabilityFactory.Expect(wcf => wcf.GetWmtsCapabilities(url)).Return(Enumerable.Empty()); mockRepository.ReplayAll(); var settingsHelper = new TestSettingsHelper @@ -469,13 +471,12 @@ // Then var comboBox = (ComboBox) new ComboBoxTester("urlLocationComboBox", form).TheObject; - var dataSource = (List) comboBox.DataSource; - Assert.AreEqual(2, dataSource.Count); + var dataSource = (WmtsConnectionInfo[]) comboBox.DataSource; + Assert.AreEqual(2, dataSource.Length); var firstWmtsConnectionInfo = (WmtsConnectionInfo) comboBox.Items[0]; Assert.AreEqual("Actueel Hoogtebestand Nederland (AHN1)", firstWmtsConnectionInfo.Name); - Assert.AreEqual("https://geodata.nationaalgeoregister.nl/tiles/service/wmts/ahn1?request=GetCapabilities", - firstWmtsConnectionInfo.Url); + Assert.AreEqual(url, firstWmtsConnectionInfo.Url); var secondWmtsConnectionInfo = (WmtsConnectionInfo) comboBox.Items[1]; Assert.AreEqual("Zeegraskartering", secondWmtsConnectionInfo.Name); @@ -511,8 +512,8 @@ // Then var comboBox = (ComboBox) new ComboBoxTester("urlLocationComboBox", form).TheObject; - var dataSource = (List) comboBox.DataSource; - Assert.AreEqual(0, dataSource.Count); + var dataSource = (WmtsConnectionInfo[]) comboBox.DataSource; + Assert.AreEqual(0, dataSource.Length); } }; @@ -556,8 +557,8 @@ // Then var comboBox = (ComboBox) new ComboBoxTester("urlLocationComboBox", form).TheObject; - var dataSource = (List) comboBox.DataSource; - Assert.AreEqual(0, dataSource.Count); + var dataSource = (WmtsConnectionInfo[]) comboBox.DataSource; + Assert.AreEqual(0, dataSource.Length); } } @@ -608,8 +609,8 @@ // Then var comboBox = (ComboBox) new ComboBoxTester("urlLocationComboBox", form).TheObject; - var dataSource = (List) comboBox.DataSource; - Assert.AreEqual(1, dataSource.Count); + var dataSource = (WmtsConnectionInfo[]) comboBox.DataSource; + Assert.AreEqual(1, dataSource.Length); var item = (WmtsConnectionInfo) comboBox.Items[0]; Assert.AreEqual(name, item.Name); Assert.AreEqual(url, item.Url); @@ -657,8 +658,8 @@ // Then var comboBox = (ComboBox) new ComboBoxTester("urlLocationComboBox", form).TheObject; - var dataSource = (List) comboBox.DataSource; - Assert.AreEqual(0, dataSource.Count); + var dataSource = (WmtsConnectionInfo[]) comboBox.DataSource; + Assert.AreEqual(0, dataSource.Length); var connectToButton = (Button) new ButtonTester("connectToButton", form).TheObject; Assert.IsFalse(connectToButton.Enabled); @@ -719,8 +720,8 @@ string exceptionMessage = $"Er is een onverwachte fout opgetreden tijdens het schrijven van het bestand '{configFilePath}'."; TestHelper.AssertLogMessageWithLevelIsGenerated(action, Tuple.Create(exceptionMessage, LogLevelConstant.Error)); var comboBox = (ComboBox) new ComboBoxTester("urlLocationComboBox", form).TheObject; - var dataSource = (List) comboBox.DataSource; - Assert.AreEqual(1, dataSource.Count); + var dataSource = (WmtsConnectionInfo[]) comboBox.DataSource; + Assert.AreEqual(1, dataSource.Length); } } } @@ -752,7 +753,7 @@ form.Show(); var comboBox = (ComboBox) new ComboBoxTester("urlLocationComboBox", form).TheObject; - comboBox.DataSource = new List + comboBox.DataSource = new[] { new WmtsConnectionInfo("oldName", "oldUrl") }; @@ -764,8 +765,8 @@ editLocationButton.Click(); // Then - var dataSource = (List) comboBox.DataSource; - Assert.AreEqual(1, dataSource.Count); + var dataSource = (WmtsConnectionInfo[]) comboBox.DataSource; + Assert.AreEqual(1, dataSource.Length); var item = (WmtsConnectionInfo) comboBox.Items[0]; Assert.AreEqual("oldName", item.Name); Assert.AreEqual("oldUrl", item.Url); @@ -826,8 +827,8 @@ editLocationButton.Click(); // Then - var dataSource = (List) comboBox.DataSource; - Assert.AreEqual(1, dataSource.Count); + var dataSource = (WmtsConnectionInfo[]) comboBox.DataSource; + Assert.AreEqual(1, dataSource.Length); var item = (WmtsConnectionInfo) comboBox.Items[0]; Assert.AreEqual(newName, item.Name); Assert.AreEqual(newUrl, item.Url); Index: Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/BackgroundMapDataSelectionDialogTest.cs =================================================================== diff -u -r99f9004206bfb9de084275d749b7aeccafd6da18 -r5be1ab23e8cdc4eacc23d0ba5b4f921d6be4a9c1 --- Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/BackgroundMapDataSelectionDialogTest.cs (.../BackgroundMapDataSelectionDialogTest.cs) (revision 99f9004206bfb9de084275d749b7aeccafd6da18) +++ Ringtoets/Integration/test/Ringtoets.Integration.Forms.Test/BackgroundMapDataSelectionDialogTest.cs (.../BackgroundMapDataSelectionDialogTest.cs) (revision 5be1ab23e8cdc4eacc23d0ba5b4f921d6be4a9c1) @@ -120,7 +120,7 @@ { // Assert Assert.IsInstanceOf(dialog); - Assert.AreEqual(@"Selecteer achtergrondkaart", dialog.Text); + Assert.AreEqual("Selecteer achtergrondkaart", dialog.Text); Assert.AreSame(mapData, dialog.SelectedMapData); Icon icon = BitmapToIcon(RingtoetsCommonFormsResources.SelectionDialogIcon);