miniSql

创建
zgc123@gmail.com authored at 11/19/2023 1:40:15 AM
6136600
Tree
0 Parent(s)
Summary: 1 changed files with 177 additions and 0 deletions.
Added +177 -0
Added +177 -0
diff --git a/minisqlquery-master/src/MiniSqlQuery/OptionsForm.cs b/minisqlquery-master/src/MiniSqlQuery/OptionsForm.cs
new file mode 100644
index 0000000..c9b3e07
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/OptionsForm.cs
@@ -0,0 +1,177 @@
+#region License
+
+// Copyright 2005-2019 Paul Kohler (https://github.com/paulkohler/minisqlquery). All rights reserved.
+// This source code is made available under the terms of the GNU Lesser General Public License v3.0
+// https://github.com/paulkohler/minisqlquery/blob/master/LICENSE
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Windows.Forms;
+using MiniSqlQuery.Core;
+
+namespace MiniSqlQuery
+{
+    /// <summary>The options form.</summary>
+    public partial class OptionsForm : Form
+    {
+        /// <summary>The _configuration objects.</summary>
+        private readonly List<IConfigurationObject> _configurationObjects = new List<IConfigurationObject>();
+
+        /// <summary>The _host.</summary>
+        private readonly IHostWindow _host;
+
+        /// <summary>The _property grid.</summary>
+        private readonly PropertyGrid _propertyGrid;
+
+        /// <summary>The _services.</summary>
+        private readonly IApplicationServices _services;
+
+        /// <summary>Initializes a new instance of the <see cref="OptionsForm"/> class.</summary>
+        /// <param name="applicationServices">The application services.</param>
+        /// <param name="hostWindow">The host window.</param>
+        public OptionsForm(IApplicationServices applicationServices, IHostWindow hostWindow)
+        {
+            InitializeComponent();
+
+            // add a grid to the panel
+            _propertyGrid = new PropertyGrid();
+            _propertyGrid.Dock = DockStyle.Fill;
+            groupBox1.Controls.Add(_propertyGrid);
+
+            _services = applicationServices;
+            _host = hostWindow;
+        }
+
+        /// <summary>Gets ConfigurationObject.</summary>
+        private IConfigurationObject ConfigurationObject
+        {
+            get
+            {
+                if (lstSettingsProviders.SelectedIndex > -1)
+                {
+                    return _configurationObjects[lstSettingsProviders.SelectedIndex];
+                }
+
+                return null;
+            }
+        }
+
+        /// <summary>The ask to save changes.</summary>
+        /// <returns></returns>
+        private DialogResult AskToSaveChanges()
+        {
+            return _host.DisplayMessageBox(null, "Configuration changes made, would you like to save them?", "Save Changes?", MessageBoxButtons.YesNo,
+                                           MessageBoxIcon.Question, MessageBoxDefaultButton.Button1,
+                                           MessageBoxOptions.ServiceNotification, null, null);
+        }
+
+        /// <summary>The config object property changed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void ConfigObjectPropertyChanged(object sender, PropertyChangedEventArgs e)
+        {
+            if (e.PropertyName == "IsDirty")
+            {
+                string title = "Options";
+                if (((IConfigurationObject)sender).IsDirty)
+                {
+                    title += "*";
+                }
+
+                Text = title;
+            }
+        }
+
+        /// <summary>The options form_ form closing.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void OptionsForm_FormClosing(object sender, FormClosingEventArgs e)
+        {
+            if (ConfigurationObject != null)
+            {
+                if (ConfigurationObject.IsDirty)
+                {
+                    DialogResult result = AskToSaveChanges();
+                    if (result == DialogResult.Yes)
+                    {
+                        ConfigurationObject.Save();
+                    }
+                    else if (result == DialogResult.Cancel)
+                    {
+                        e.Cancel = true;
+                    }
+                }
+            }
+        }
+
+        /// <summary>The options form_ load.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void OptionsForm_Load(object sender, EventArgs e)
+        {
+            var cofigTypes = _services.GetConfigurationObjectTypes();
+
+            // build a list of config instances
+            foreach (Type cofigType in cofigTypes)
+            {
+                _configurationObjects.Add(_services.Resolve<IConfigurationObject>(cofigType.FullName));
+            }
+
+            // add the config editors to the list and watch them for changes
+            foreach (var configObject in _configurationObjects)
+            {
+                configObject.PropertyChanged += ConfigObjectPropertyChanged;
+                lstSettingsProviders.Items.Add(configObject.Name);
+            }
+
+            // select first
+            if (lstSettingsProviders.Items.Count > 0)
+            {
+                lstSettingsProviders.SelectedIndex = 0;
+            }
+        }
+
+        /// <summary>The btn o k_ click.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void btnOK_Click(object sender, EventArgs e)
+        {
+            if (ConfigurationObject != null)
+            {
+                ConfigurationObject.Save();
+            }
+
+            Close();
+        }
+
+        /// <summary>The list box 1_ selected value changed.</summary>
+        /// <param name="sender">The sender.</param>
+        /// <param name="e">The e.</param>
+        private void listBox1_SelectedValueChanged(object sender, EventArgs e)
+        {
+            if (ConfigurationObject != null)
+            {
+                bool change = true;
+                if (ConfigurationObject.IsDirty)
+                {
+                    DialogResult result = AskToSaveChanges();
+                    if (result == DialogResult.Yes)
+                    {
+                        ConfigurationObject.Save();
+                    }
+                    else
+                    {
+                        change = false;
+                    }
+                }
+
+                if (change)
+                {
+                    _propertyGrid.SelectedObject = ConfigurationObject.Settings;
+                }
+            }
+        }
+    }
+}
\ No newline at end of file