diff --git a/VECTO3GUI2020/Helper/DialogHelper.cs b/VECTO3GUI2020/Helper/DialogHelper.cs index 9609208a1d3ef0c2dfbe981952a0478ece06a7d2..848827af70a567dc18b3054ca4a025fcd09f4cab 100644 --- a/VECTO3GUI2020/Helper/DialogHelper.cs +++ b/VECTO3GUI2020/Helper/DialogHelper.cs @@ -19,14 +19,16 @@ namespace VECTO3GUI2020.Helper #region File and Folder Dialogs private string _xmlFilter = "XML Files (*.xml)|*.xml"; + private string _jsonFilter = "JSON Files (*.json)|*.json"; - private Dictionary<string, string> lastUsedDirectories = new Dictionary<string, string>(); + private Dictionary<string, string> lastUsedLoadDirectories = new Dictionary<string, string>(); + private Dictionary<string, string> lastUsedSaveDirectories = new Dictionary<string, string>(); private string lastUsedDirectoryFolderPicker = null; private string[] OpenFilesDialog(string filter, string initialDirectory, bool multiselect) { if (initialDirectory == null) { - initialDirectory = LookUpLastDir(filter); + initialDirectory = LookUpLastDir(lastUsedLoadDirectories, filter); } @@ -39,7 +41,7 @@ namespace VECTO3GUI2020.Helper }) { var result = fd.ShowDialog(); if (result == DialogResult.OK) { - lastUsedDirectories[filter] = Path.GetDirectoryName(fd.FileName); + lastUsedLoadDirectories[filter] = Path.GetDirectoryName(fd.FileName); return fd.FileNames; } } @@ -47,11 +49,33 @@ namespace VECTO3GUI2020.Helper return null; } + public string SaveToDialog(string initialDirectory, string filter) + { + if (initialDirectory == null) { + initialDirectory = LookUpLastDir(lastUsedSaveDirectories, filter); + } + using (var saveFileDialog = new SaveFileDialog + { + Filter = filter, + InitialDirectory = initialDirectory ?? _defaultInitialDirectory, + AddExtension = true + }) { + var result = saveFileDialog.ShowDialog(); + { + if (result == DialogResult.OK) { + lastUsedSaveDirectories[filter] = Path.GetDirectoryName(saveFileDialog.FileName); + return saveFileDialog.FileName; + } + } - private string LookUpLastDir(string filter) + return null; + } + } + + private static string LookUpLastDir(Dictionary<string, string> dict, string filter) { string lastUsedDirectory = null; - if (lastUsedDirectories.TryGetValue(filter, out lastUsedDirectory)) { + if (dict.TryGetValue(filter, out lastUsedDirectory)) { return lastUsedDirectory; } else { return Settings.Default.DefaultFilePath; @@ -85,6 +109,11 @@ namespace VECTO3GUI2020.Helper return OpenFilesDialog(_xmlFilter, initialDirectory, false)?[0]; } + public string OpenJsonFileDialog(string initialDirectory) + { + return OpenFilesDialog(_jsonFilter, initialDirectory, false)?[0]; + } + public string OpenFolderDialog(string initialDirectory = null) { @@ -125,16 +154,7 @@ namespace VECTO3GUI2020.Helper return MessageBox.Show(messageBoxText, caption); } - public string SaveToDialog(string initialDirectory, string filter) - { - using (var saveFileDialog = new SaveFileDialog { - Filter = filter - }) { - saveFileDialog.InitialDirectory = initialDirectory ?? _defaultInitialDirectory; - return saveFileDialog.ShowDialog() == DialogResult.OK ? saveFileDialog.FileName : null; - } - } public string SaveToXMLDialog(string initialDirectory) @@ -142,6 +162,20 @@ namespace VECTO3GUI2020.Helper return SaveToDialog(initialDirectory, _xmlFilter); } + public string SaveToJsonDialog(string initialDirectory) + { + return SaveToDialog(initialDirectory, _jsonFilter); + } + + public MessageBoxResult ShowErrorMessage(string errorMessage, string caption) + { + return ShowMessageBox(errorMessage, caption, MessageBoxButton.OK, MessageBoxImage.Error); + } + + public MessageBoxResult ShowErrorMessage(string errorMessage) + { + return ShowErrorMessage(errorMessage, "Error"); + } #endregion @@ -188,6 +222,11 @@ namespace VECTO3GUI2020.Helper /// <param name="initialDirectory"></param> /// <returns></returns> string OpenFolderDialog(string initialDirectory = null); + string OpenJsonFileDialog(string initialDirectory = null); + string SaveToDialog(string initialDirectory = null, string filter = "All files (*.*|*.*"); + string SaveToXMLDialog(string initialDirectory = null); + string SaveToJsonDialog(string initialDirectory = null); + /// <summary> /// Displays a messagebox @@ -210,9 +249,7 @@ namespace VECTO3GUI2020.Helper /// <returns></returns> MessageBoxResult ShowMessageBox(string messageBoxText, string caption); - - string SaveToDialog(string initialDirectory = null, string filter = "All files (*.*|*.*"); - - string SaveToXMLDialog(string initialDirectory = null); + MessageBoxResult ShowErrorMessage(string errorMessage, string caption); + MessageBoxResult ShowErrorMessage(string errorMessage); } }