Index: Core/Components/src/Core.Components.DotSpatial.Forms/Views/WmtsLocationControl.cs =================================================================== diff -u -r86b2665e1dd51dc99d33568d1f4206f3da204254 -r751356bafde2d37d48cfd8876e45091793940093 --- Core/Components/src/Core.Components.DotSpatial.Forms/Views/WmtsLocationControl.cs (.../WmtsLocationControl.cs) (revision 86b2665e1dd51dc99d33568d1f4206f3da204254) +++ Core/Components/src/Core.Components.DotSpatial.Forms/Views/WmtsLocationControl.cs (.../WmtsLocationControl.cs) (revision 751356bafde2d37d48cfd8876e45091793940093) @@ -40,20 +40,22 @@ /// public partial class WmtsLocationControl : UserControl, IHasMapData { + private const string wmtsConnectionInfoFileName = "wmtsConnectionInfo.config"; private static readonly ILog log = LogManager.GetLogger(typeof(WmtsLocationControl)); private readonly List wmtsConnectionInfos; private readonly List capabilities; + private string wmtsConnectionInfoFilePath; /// /// Creates a new instance of . /// public WmtsLocationControl() { wmtsConnectionInfos = new List(); - wmtsConnectionInfos.AddRange(GetSavedWmtsConnectionInfos()); capabilities = new List(); InitializeComponent(); + InitializeWmtsConnectionInfos(); InitializeDataGridView(); InitializeComboBoxDataSource(); InitializeEventHandlers(); @@ -106,23 +108,36 @@ base.Dispose(disposing); } - private static IEnumerable GetSavedWmtsConnectionInfos() + private void InitializeWmtsConnectionInfos() { string applicationVersion = SettingsHelper.Instance.ApplicationVersion; - const string wmtsConnectionInfoFileName = "wmtsConnectionInfo.config"; - string folderPath = SettingsHelper.Instance.GetApplicationLocalUserSettingsDirectory(applicationVersion); - string filePath = Path.Combine(folderPath, wmtsConnectionInfoFileName); + wmtsConnectionInfoFilePath = Path.Combine(folderPath, wmtsConnectionInfoFileName); + wmtsConnectionInfos.AddRange(TryGetSavedWmtsConnectionInfos()); + } + + private IEnumerable TryGetSavedWmtsConnectionInfos() + { try { var reader = new WmtsConnectionInfoReader(); - return reader.ReadWmtsConnectionInfos(filePath); + return reader.ReadWmtsConnectionInfos(wmtsConnectionInfoFilePath); } catch (CriticalFileReadException exception) {} return Enumerable.Empty(); } + private void TrySaveWmtsConnectionInfos() + { + try + { + var writer = new WmtsConnectionInfoWriter(wmtsConnectionInfoFilePath); + writer.WriteWmtsConnectionInfo(wmtsConnectionInfos); + } + catch (CriticalFileWriteException exception) {} + } + private WmtsConnectionInfo TryCreateWmtsConnectionInfo(string wmtsConnectionName, string wmtsConnectionUrl) { try @@ -283,6 +298,7 @@ if (createdWmtsConnectionInfos != null) { wmtsConnectionInfos.Add(createdWmtsConnectionInfos); + TrySaveWmtsConnectionInfos(); UpdateComboBoxDataSource(createdWmtsConnectionInfos); ConnectToUrl(createdWmtsConnectionInfos); } @@ -310,6 +326,7 @@ { wmtsConnectionInfos.Remove(selectedWmtsConnectionInfo); wmtsConnectionInfos.Add(createdWmtsConnectionInfos); + TrySaveWmtsConnectionInfos(); UpdateComboBoxDataSource(createdWmtsConnectionInfos); ConnectToUrl(createdWmtsConnectionInfos); } Index: Core/Components/test/Core.Components.DotSpatial.Forms.Test/Views/WmtsLocationControlTest.cs =================================================================== diff -u -r86b2665e1dd51dc99d33568d1f4206f3da204254 -r751356bafde2d37d48cfd8876e45091793940093 --- Core/Components/test/Core.Components.DotSpatial.Forms.Test/Views/WmtsLocationControlTest.cs (.../WmtsLocationControlTest.cs) (revision 86b2665e1dd51dc99d33568d1f4206f3da204254) +++ Core/Components/test/Core.Components.DotSpatial.Forms.Test/Views/WmtsLocationControlTest.cs (.../WmtsLocationControlTest.cs) (revision 751356bafde2d37d48cfd8876e45091793940093) @@ -21,6 +21,7 @@ using System; using System.Collections.Generic; +using System.IO; using System.Linq; using System.Threading; using System.Windows.Forms; @@ -46,6 +47,7 @@ private const int mapLayerFormatColumnIndex = 1; private const int mapLayerTitleColumnIndex = 2; private const int mapLayerCoordinateSystemColumnIndex = 3; + private const string wmtsconnectioninfoConfigFile = "wmtsConnectionInfo.config"; private static readonly TestDataPath testPath = TestDataPath.Core.Components.DotSpatial.Forms; @@ -381,6 +383,8 @@ } }; + using (new FileDisposeHelper(Path.Combine(SettingsHelper.Instance.GetApplicationLocalUserSettingsDirectory(), + wmtsconnectioninfoConfigFile))) using (new UseCustomTileSourceFactoryConfig(tileFactory)) using (var form = new Form()) using (var control = new WmtsLocationControl()) @@ -528,6 +532,8 @@ } }; + using (new FileDisposeHelper(Path.Combine(SettingsHelper.Instance.GetApplicationLocalUserSettingsDirectory(), + wmtsconnectioninfoConfigFile))) using (new UseCustomTileSourceFactoryConfig(tileFactory)) using (var form = new Form()) using (var control = new WmtsLocationControl())