diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CancelTaskCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CancelTaskCommand.cs
new file mode 100644
index 0000000..b6eac44
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CancelTaskCommand.cs
@@ -0,0 +1,56 @@
+#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
+
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The cancel task command.
+ /// </summary>
+ public class CancelTaskCommand
+ : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "CancelTaskCommand" /> class.
+ /// </summary>
+ public CancelTaskCommand()
+ : base("&Cancel")
+ {
+ SmallImage = ImageResource.stop;
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether Enabled.
+ /// </summary>
+ /// <value>The enabled state.</value>
+ public override bool Enabled
+ {
+ get
+ {
+ var editor = HostWindow.ActiveChildForm as IPerformTask;
+ return editor != null && editor.IsBusy;
+ }
+ }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ if (!Enabled)
+ {
+ return;
+ }
+
+ var editor = HostWindow.ActiveChildForm as IPerformTask;
+ if (editor != null)
+ {
+ editor.CancelTask();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseActiveWindowCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseActiveWindowCommand.cs
new file mode 100644
index 0000000..964a25e
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseActiveWindowCommand.cs
@@ -0,0 +1,46 @@
+#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
+
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The close active window command.
+ /// </summary>
+ public class CloseActiveWindowCommand
+ : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "CloseActiveWindowCommand" /> class.
+ /// </summary>
+ public CloseActiveWindowCommand()
+ : base("&Close")
+ {
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether Enabled.
+ /// </summary>
+ /// <value>The enabled state.</value>
+ public override bool Enabled
+ {
+ get { return HostWindow.ActiveChildForm != null; }
+ }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ var frm = HostWindow.ActiveChildForm;
+ if (frm != null)
+ {
+ frm.Close();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseAllWindowsCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseAllWindowsCommand.cs
new file mode 100644
index 0000000..cbfa429
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseAllWindowsCommand.cs
@@ -0,0 +1,48 @@
+#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.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The close all windows command.
+ /// </summary>
+ public class CloseAllWindowsCommand
+ : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "CloseAllWindowsCommand" /> class.
+ /// </summary>
+ public CloseAllWindowsCommand()
+ : base("Close &All Windows")
+ {
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether Enabled.
+ /// </summary>
+ /// <value>The enabled state.</value>
+ public override bool Enabled
+ {
+ get { return HostWindow.ActiveChildForm != null; }
+ }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ var forms = HostWindow.Instance.MdiChildren;
+ foreach (var frm in forms)
+ {
+ Application.DoEvents();
+ frm.Close();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseDatabaseConnectionCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseDatabaseConnectionCommand.cs
new file mode 100644
index 0000000..bd5f90b
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CloseDatabaseConnectionCommand.cs
@@ -0,0 +1,45 @@
+#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.Data;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>The close database connection command.</summary>
+ public class CloseDatabaseConnectionCommand
+ : CommandBase
+ {
+ /// <summary>Initializes a new instance of the <see cref="CloseDatabaseConnectionCommand"/> class.</summary>
+ public CloseDatabaseConnectionCommand()
+ : base("Close Current connection")
+ {
+ }
+
+ /// <summary>Gets a value indicating whether Enabled.</summary>
+ /// <value>The enabled state.</value>
+ public override bool Enabled
+ {
+ get
+ {
+ if (Settings.Connection == null ||
+ (Settings.Connection.State == ConnectionState.Closed &&
+ Settings.Connection.State == ConnectionState.Broken))
+ {
+ return false;
+ }
+
+ return true;
+ }
+ }
+
+ /// <summary>Execute the command.</summary>
+ public override void Execute()
+ {
+ Settings.CloseConnection();
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CommandBase.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CommandBase.cs
new file mode 100644
index 0000000..e56b9b2
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CommandBase.cs
@@ -0,0 +1,147 @@
+#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.Drawing;
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// <para>A basic implementation of the <see cref="ICommand"/> interface.</para>
+ /// <para>Represents a "command", typically a user action such as saving a file or executing a query.</para>
+ /// <para>Inheritors must implement the abstract method <see cref="Execute"/>.</para>
+ /// </summary>
+ public abstract class CommandBase : ICommand
+ {
+ /// <summary>
+ /// The host window.
+ /// </summary>
+ private IHostWindow _hostWindow;
+
+ /// <summary>
+ /// The command name.
+ /// </summary>
+ private string _name;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="CommandBase"/> class.
+ /// The default value for <see cref="Enabled"/> is true, and <see cref="ShortcutKeys"/> is Keys.None.
+ /// </summary>
+ /// <param name="name">
+ /// The name of the command.
+ /// </param>
+ protected CommandBase(string name)
+ {
+ _name = name;
+ ShortcutKeys = Keys.None;
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether this <see cref = "ICommand" /> is enabled.
+ /// </summary>
+ /// <value><c>true</c> if enabled; otherwise, <c>false</c> (the default is true).</value>
+ public virtual bool Enabled
+ {
+ get { return true; }
+ }
+
+ public object Host { get; set; }
+
+ /// <summary>
+ /// The name of the command, used in menus and buttons.
+ /// </summary>
+ /// <value>The name of the command.</value>
+ public virtual string Name
+ {
+ get { return _name; }
+ protected set
+ {
+ if (_name == value)
+ {
+ return;
+ }
+
+ _name = value;
+
+ // if the "host" of this command is a toolstring item, update its Text property.
+ var item = Host as ToolStripItem;
+ if (item != null)
+ {
+ item.Text = _name;
+ }
+ }
+ }
+
+ /// <summary>
+ /// A reference to the application services to allow access to the other components.
+ /// </summary>
+ /// <value>A reference to the <see cref = "IApplicationServices" /> instance.</value>
+ public IApplicationServices Services { get; set; }
+
+ /// <summary>
+ /// Gets a reference to the application settings.
+ /// </summary>
+ /// <value>The application settings.</value>
+ public IApplicationSettings Settings { get; set; }
+
+ /// <summary>
+ /// Gets the menu shortcut keys for this command (e.g. Keys.F5).
+ /// </summary>
+ /// <value>The shortcut keys for this command (the default is Keys.None).</value>
+ public virtual Keys ShortcutKeys { get; protected set; }
+
+ /// <summary>
+ /// Gets the shortcut key text to be displayed as help.
+ /// </summary>
+ /// <value>The shortcut keys text.</value>
+ public string ShortcutKeysText { get; protected set; }
+
+ /// <summary>
+ /// Gets the "small image" associated with this control (for use on buttons or menu items).
+ /// Use null (or Nothing in Visual Basic) if there is no image.
+ /// </summary>
+ /// <value>The small image representing this command (the default is null).</value>
+ public virtual Image SmallImage { get; protected set; }
+
+ /// <summary>
+ /// Attempts to convert the current host windows active form to <see cref = "IEditor" />.
+ /// </summary>
+ /// <value>A reference to the active base editor window, otherwise null.</value>
+ protected IEditor ActiveFormAsEditor
+ {
+ get { return Services.HostWindow.ActiveChildForm as IEditor; }
+ }
+
+ /// <summary>
+ /// Attempts to convert the current host windows active form to <see cref = "IQueryEditor" />.
+ /// </summary>
+ /// <value>A reference to the active query editor window, otherwise null.</value>
+ protected IQueryEditor ActiveFormAsSqlQueryEditor
+ {
+ get { return Services.HostWindow.ActiveChildForm as IQueryEditor; }
+ }
+
+ /// <summary>
+ /// Gets a reference to the host window.
+ /// </summary>
+ /// <value>The host window.</value>
+ protected IHostWindow HostWindow
+ {
+ get { return _hostWindow ?? (_hostWindow = Services.HostWindow); }
+ }
+
+ /// <summary>
+ /// Executes the command based on the current settings (abstract).
+ /// </summary>
+ /// <remarks>
+ /// If a commands <see cref="Enabled"/> value is false, a call to <see cref="Execute"/> should have no effect
+ /// (and not throw an exception).
+ /// </remarks>
+ public abstract void Execute();
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToLowerCaseCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToLowerCaseCommand.cs
new file mode 100644
index 0000000..a83ec9a
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToLowerCaseCommand.cs
@@ -0,0 +1,40 @@
+#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.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>The convert text to lower case command.</summary>
+ public class ConvertTextToLowerCaseCommand
+ : CommandBase
+ {
+ /// <summary>Initializes a new instance of the <see cref="ConvertTextToLowerCaseCommand"/> class.</summary>
+ public ConvertTextToLowerCaseCommand()
+ : base("Convert to 'lower case' text")
+ {
+ ShortcutKeys = Keys.Control | Keys.U;
+ }
+
+ /// <summary>Gets a value indicating whether Enabled.</summary>
+ /// <value>The enabled state.</value>
+ public override bool Enabled
+ {
+ get { return HostWindow.ActiveChildForm as IEditor != null; }
+ }
+
+ /// <summary>Execute the command.</summary>
+ public override void Execute()
+ {
+ var editor = ActiveFormAsEditor;
+ if (Enabled && editor.SelectedText.Length > 0)
+ {
+ editor.InsertText(editor.SelectedText.ToLower());
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToTitleCaseCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToTitleCaseCommand.cs
new file mode 100644
index 0000000..bb4d313
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToTitleCaseCommand.cs
@@ -0,0 +1,49 @@
+#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.Globalization;
+using System.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The convert text to title case command.
+ /// </summary>
+ public class ConvertTextToTitleCaseCommand
+ : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "ConvertTextToTitleCaseCommand" /> class.
+ /// </summary>
+ public ConvertTextToTitleCaseCommand()
+ : base("Convert to 'Title Case' text")
+ {
+ ShortcutKeys = Keys.Control | Keys.Alt | Keys.U;
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether Enabled.
+ /// </summary>
+ /// <value>The enabled state.</value>
+ public override bool Enabled
+ {
+ get { return HostWindow.ActiveChildForm as IEditor != null; }
+ }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ var editor = ActiveFormAsEditor;
+ if (Enabled && editor.SelectedText.Length > 0)
+ {
+ editor.InsertText(CultureInfo.CurrentCulture.TextInfo.ToTitleCase(editor.SelectedText));
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToUpperCaseCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToUpperCaseCommand.cs
new file mode 100644
index 0000000..c87b07d
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ConvertTextToUpperCaseCommand.cs
@@ -0,0 +1,48 @@
+#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.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The convert text to upper case command.
+ /// </summary>
+ public class ConvertTextToUpperCaseCommand
+ : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "ConvertTextToUpperCaseCommand" /> class.
+ /// </summary>
+ public ConvertTextToUpperCaseCommand()
+ : base("Convert to 'UPPER CASE' text")
+ {
+ ShortcutKeys = Keys.Control | Keys.Shift | Keys.U;
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether Enabled.
+ /// </summary>
+ /// <value>The enabled state.</value>
+ public override bool Enabled
+ {
+ get { return HostWindow.ActiveChildForm as IEditor != null; }
+ }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ var editor = ActiveFormAsEditor;
+ if (Enabled && editor.SelectedText.Length > 0)
+ {
+ editor.InsertText(editor.SelectedText.ToUpper());
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CopyQueryEditorFileNameCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CopyQueryEditorFileNameCommand.cs
new file mode 100644
index 0000000..bd0924f
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/CopyQueryEditorFileNameCommand.cs
@@ -0,0 +1,38 @@
+#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.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The copy query editor file name command.
+ /// </summary>
+ public class CopyQueryEditorFileNameCommand
+ : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "CopyQueryEditorFileNameCommand" /> class.
+ /// </summary>
+ public CopyQueryEditorFileNameCommand()
+ : base("Copy Filename")
+ {
+ }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ var editor = HostWindow.Instance.ActiveMdiChild as IEditor;
+ if (editor != null && editor.FileName != null)
+ {
+ Clipboard.SetText(editor.FileName);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/DisplayDbModelDependenciesCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/DisplayDbModelDependenciesCommand.cs
new file mode 100644
index 0000000..10ec35c
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/DisplayDbModelDependenciesCommand.cs
@@ -0,0 +1,66 @@
+#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.Text;
+using MiniSqlQuery.Core.DbModel;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The display db model dependencies command.
+ /// </summary>
+ public class DisplayDbModelDependenciesCommand
+ : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "DisplayDbModelDependenciesCommand" /> class.
+ /// </summary>
+ public DisplayDbModelDependenciesCommand()
+ : base("Order Tables by FK Dependencies")
+ {
+ SmallImage = ImageResource.table_link;
+ }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ var editor = Services.Resolve<IEditor>("txt-editor");
+ editor.FileName = null;
+ HostWindow.DisplayDockedForm(editor as DockContent);
+
+ if (HostWindow.DatabaseInspector.DbSchema == null)
+ {
+ HostWindow.DatabaseInspector.LoadDatabaseDetails();
+ }
+
+ var dependencyWalker = new DbModelDependencyWalker(HostWindow.DatabaseInspector.DbSchema);
+ var tables = dependencyWalker.SortTablesByForeignKeyReferences();
+
+ var sb = new StringBuilder();
+ foreach (DbModelTable table in tables)
+ {
+ sb.AppendLine(table.FullName);
+ }
+
+ editor.AllText = sb.ToString();
+ }
+
+ /// <summary>
+ /// Gets a value indicating that the command can be executed (requires a connection).
+ /// </summary>
+ public override bool Enabled
+ {
+ get
+ {
+ return Services.Settings.ConnectionDefinition != null;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/EmailAuthorCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/EmailAuthorCommand.cs
new file mode 100644
index 0000000..6cb6567
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/EmailAuthorCommand.cs
@@ -0,0 +1,27 @@
+#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
+
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The email author command.
+ /// </summary>
+ public class EmailAuthorCommand
+ : ShowUrlCommand
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "EmailAuthorCommand" /> class.
+ /// </summary>
+ public EmailAuthorCommand()
+ : base("Email the Author", "mailto:mr.paul.kohler" +
+ '@' + /* bla */
+ "gmail.com?subject=Mini SQL Query Feedback", ImageResource.email)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ExecuteTaskCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ExecuteTaskCommand.cs
new file mode 100644
index 0000000..43980da
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ExecuteTaskCommand.cs
@@ -0,0 +1,64 @@
+#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.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The execute task command.
+ /// </summary>
+ public class ExecuteTaskCommand
+ : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "ExecuteTaskCommand" /> class.
+ /// </summary>
+ public ExecuteTaskCommand()
+ : base("&Execute")
+ {
+ ShortcutKeys = Keys.F5;
+ ShortcutKeysText = "F5";
+ SmallImage = ImageResource.lightning;
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether Enabled.
+ /// </summary>
+ /// <value>The enabled state.</value>
+ public override bool Enabled
+ {
+ get
+ {
+ var editor = HostWindow.ActiveChildForm as IPerformTask;
+ if (editor != null)
+ {
+ return !editor.IsBusy;
+ }
+
+ return false;
+ }
+ }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ if (!Enabled)
+ {
+ return;
+ }
+
+ var editor = HostWindow.ActiveChildForm as IPerformTask;
+ if (editor != null)
+ {
+ editor.ExecuteTask();
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ExitApplicationCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ExitApplicationCommand.cs
new file mode 100644
index 0000000..4c557fb
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ExitApplicationCommand.cs
@@ -0,0 +1,33 @@
+#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
+
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The exit application command.
+ /// </summary>
+ public class ExitApplicationCommand
+ : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "ExitApplicationCommand" /> class.
+ /// </summary>
+ public ExitApplicationCommand()
+ : base("E&xit")
+ {
+ }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ HostWindow.Instance.Close();
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/GenerateCommandCodeCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/GenerateCommandCodeCommand.cs
new file mode 100644
index 0000000..3df9662
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/GenerateCommandCodeCommand.cs
@@ -0,0 +1,61 @@
+#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 Ninject;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The generate command code command.
+ /// </summary>
+ public class GenerateCommandCodeCommand
+ : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "GenerateCommandCodeCommand" /> class.
+ /// </summary>
+ public GenerateCommandCodeCommand()
+ : base("Generate Command Code")
+ {
+ SmallImage = ImageResource.cog;
+ }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ string template =
+ @" public class $name$Command
+ : CommandBase
+ {
+ public $name$Command()
+ : base(""$desc$"")
+ {
+ //ShortcutKeys = Keys.Control | Keys.?;
+ //SmallImage = ImageResource.?;
+ }
+
+ public override void Execute()
+ {
+
+ }
+ }";
+
+ string code = template
+ .Replace("$name$", "OI")
+ .Replace("$desc$", "a thing");
+
+ var editor = Services.Container.Get<IQueryEditor>();
+ editor.AllText = code;
+ editor.SetSyntax("C#");
+
+ HostWindow.DisplayDockedForm(editor as DockContent);
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/InsertGuidCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/InsertGuidCommand.cs
new file mode 100644
index 0000000..1d91a82
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/InsertGuidCommand.cs
@@ -0,0 +1,47 @@
+#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;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The insert guid command.
+ /// </summary>
+ public class InsertGuidCommand : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "InsertGuidCommand" /> class.
+ /// </summary>
+ public InsertGuidCommand()
+ : base("Insert GUID")
+ {
+ // todo SmallImage = ImageResource.;
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether Enabled.
+ /// </summary>
+ /// <value>The enabled state.</value>
+ public override bool Enabled
+ {
+ get { return ActiveFormAsEditor != null; }
+ }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ var editor = ActiveFormAsEditor;
+ if (editor != null)
+ {
+ editor.InsertText(Guid.NewGuid().ToString());
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/NewQueryFormCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/NewQueryFormCommand.cs
new file mode 100644
index 0000000..61d72e3
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/NewQueryFormCommand.cs
@@ -0,0 +1,40 @@
+#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.Windows.Forms;
+using Ninject;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The new query form command.
+ /// </summary>
+ public class NewQueryFormCommand
+ : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "NewQueryFormCommand" /> class.
+ /// </summary>
+ public NewQueryFormCommand()
+ : base("New &Query Window")
+ {
+ ShortcutKeys = Keys.Control | Keys.N;
+ SmallImage = ImageResource.page_white;
+ }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ var editor = Services.Container.Get<IQueryEditor>();
+ editor.FileName = null;
+ HostWindow.DisplayDockedForm(editor as DockContent);
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/OpenConnectionFileCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/OpenConnectionFileCommand.cs
new file mode 100644
index 0000000..7c58716
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/OpenConnectionFileCommand.cs
@@ -0,0 +1,38 @@
+#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 WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The open connection file command.
+ /// </summary>
+ public class OpenConnectionFileCommand
+ : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "OpenConnectionFileCommand" /> class.
+ /// </summary>
+ public OpenConnectionFileCommand()
+ : base("Open the connections file")
+ {
+ }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ string xmlFile = Utility.GetConnectionStringFilename();
+ IEditor editor = Services.Resolve<IFileEditorResolver>().ResolveEditorInstance(xmlFile);
+ editor.FileName = xmlFile;
+ editor.LoadFile();
+ HostWindow.DisplayDockedForm(editor as DockContent);
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/PasteAroundSelectionCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/PasteAroundSelectionCommand.cs
new file mode 100644
index 0000000..d132f55
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/PasteAroundSelectionCommand.cs
@@ -0,0 +1,52 @@
+#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.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// Description of PasteAroundSelectionCommand.
+ /// </summary>
+ public class PasteAroundSelectionCommand : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "PasteAroundSelectionCommand" /> class.
+ /// </summary>
+ public PasteAroundSelectionCommand()
+ : base("Paste &Around Selection")
+ {
+ ShortcutKeys = Keys.Alt | Keys.A;
+ SmallImage = ImageResource.around_text;
+ }
+
+ /// <summary>
+ /// Gets or sets the "left text".
+ /// </summary>
+ /// <value>The "left text".</value>
+ public static string LeftText { get; set; }
+
+ /// <summary>
+ /// Gets or sets the "right text".
+ /// </summary>
+ /// <value>The "right text".</value>
+ public static string RightText { get; set; }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ var queryForm = HostWindow.Instance.ActiveMdiChild as IQueryEditor;
+ if (queryForm != null)
+ {
+ string newText = string.Concat(LeftText, queryForm.SelectedText, RightText);
+ queryForm.InsertText(newText);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/PrintCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/PrintCommand.cs
new file mode 100644
index 0000000..c2b2890
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/PrintCommand.cs
@@ -0,0 +1,78 @@
+#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.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The print command.
+ /// </summary>
+ public class PrintCommand
+ : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "PrintCommand" /> class.
+ /// </summary>
+ public PrintCommand()
+ : base("Print...")
+ {
+ SmallImage = ImageResource.printer;
+ }
+
+ /// <summary>
+ /// Gets a value indicating whether Enabled.
+ /// </summary>
+ /// <value>The enabled state.</value>
+ public override bool Enabled
+ {
+ get
+ {
+ var printable = HostWindow.ActiveChildForm as IPrintableContent;
+ if (printable != null)
+ {
+ var doc = printable.PrintDocument;
+
+ if (doc != null)
+ {
+ return true;
+ }
+ }
+
+ return false;
+ }
+ }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ var printable = HostWindow.ActiveChildForm as IPrintableContent;
+ if (printable != null)
+ {
+ var doc = printable.PrintDocument;
+
+ if (doc != null)
+ {
+ using (var ppd = new PrintDialog())
+ {
+ ppd.Document = doc;
+ ppd.AllowSomePages = true;
+ // https://msdn.microsoft.com/query/dev14.query?appId=Dev14IDEF1&l=EN-US&k=k(System.Windows.Forms.PrintDialog.UseEXDialog);k(TargetFrameworkMoniker-.NETFramework,Version%3Dv3.5);k(DevLang-csharp)&rd=true#Anchor_1
+ ppd.UseEXDialog = true;
+
+ if (ppd.ShowDialog(HostWindow.Instance) == DialogResult.OK)
+ {
+ doc.Print();
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/RefreshDatabaseConnectionCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/RefreshDatabaseConnectionCommand.cs
new file mode 100644
index 0000000..73ec1a8
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/RefreshDatabaseConnectionCommand.cs
@@ -0,0 +1,44 @@
+#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.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The refresh database connection command.
+ /// </summary>
+ public class RefreshDatabaseConnectionCommand
+ : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "RefreshDatabaseConnectionCommand" /> class.
+ /// </summary>
+ public RefreshDatabaseConnectionCommand()
+ : base("&Refresh Database Connection")
+ {
+ SmallImage = ImageResource.database_refresh;
+ }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ try
+ {
+ HostWindow.SetPointerState(Cursors.WaitCursor);
+ Settings.ResetConnection();
+ HostWindow.SetStatus(null, "Connection reset");
+ }
+ finally
+ {
+ HostWindow.SetPointerState(Cursors.Default);
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/SetLeftPasteAroundSelectionCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/SetLeftPasteAroundSelectionCommand.cs
new file mode 100644
index 0000000..31d5faf
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/SetLeftPasteAroundSelectionCommand.cs
@@ -0,0 +1,38 @@
+#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.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The set left paste around selection command.
+ /// </summary>
+ public class SetLeftPasteAroundSelectionCommand : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "SetLeftPasteAroundSelectionCommand" /> class.
+ /// </summary>
+ public SetLeftPasteAroundSelectionCommand()
+ : base("Set Left Paste Around Selection text")
+ {
+ ShortcutKeys = Keys.Alt | Keys.F1;
+ }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ var queryForm = HostWindow.Instance.ActiveMdiChild as IQueryEditor;
+ if (queryForm != null)
+ {
+ PasteAroundSelectionCommand.LeftText = queryForm.SelectedText;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/SetRightPasteAroundSelectionCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/SetRightPasteAroundSelectionCommand.cs
new file mode 100644
index 0000000..e7947ff
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/SetRightPasteAroundSelectionCommand.cs
@@ -0,0 +1,38 @@
+#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.Windows.Forms;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The set right paste around selection command.
+ /// </summary>
+ public class SetRightPasteAroundSelectionCommand : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "SetRightPasteAroundSelectionCommand" /> class.
+ /// </summary>
+ public SetRightPasteAroundSelectionCommand()
+ : base("Set Right Paste Around Selection text")
+ {
+ ShortcutKeys = Keys.Alt | Keys.F2;
+ }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ var queryForm = HostWindow.Instance.ActiveMdiChild as IQueryEditor;
+ if (queryForm != null)
+ {
+ PasteAroundSelectionCommand.RightText = queryForm.SelectedText;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowHelpCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowHelpCommand.cs
new file mode 100644
index 0000000..4addead
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowHelpCommand.cs
@@ -0,0 +1,25 @@
+#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
+
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The show help command.
+ /// </summary>
+ public class ShowHelpCommand
+ : ShowUrlCommand
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "ShowHelpCommand" /> class.
+ /// </summary>
+ public ShowHelpCommand()
+ : base("&Index (github.com ... Quickstart.md)", "https://github.com/paulkohler/minisqlquery/blob/master/src/Docs/Quickstart.md", ImageResource.help)
+ {
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowUrlCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowUrlCommand.cs
new file mode 100644
index 0000000..9507141
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowUrlCommand.cs
@@ -0,0 +1,51 @@
+#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.Drawing;
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The show url command.
+ /// </summary>
+ public class ShowUrlCommand
+ : CommandBase
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref="ShowUrlCommand"/> class.
+ /// </summary>
+ /// <param name="name">
+ /// The name of the command.
+ /// </param>
+ /// <param name="url">
+ /// The url of the link to display in a browser.
+ /// </param>
+ /// <param name="image">
+ /// The image to use from the resources.
+ /// </param>
+ public ShowUrlCommand(string name, string url, Image image)
+ : base(name)
+ {
+ Url = url;
+ SmallImage = image;
+ }
+
+ /// <summary>
+ /// Gets or sets Url.
+ /// </summary>
+ /// <value>The url.</value>
+ public string Url { get; protected set; }
+
+ /// <summary>
+ /// Execute the command.
+ /// </summary>
+ public override void Execute()
+ {
+ Utility.ShowUrl(Url);
+ }
+ }
+}
\ No newline at end of file
diff --git a/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowWebPageCommand.cs b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowWebPageCommand.cs
new file mode 100644
index 0000000..9fb5322
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery.Core/Commands/ShowWebPageCommand.cs
@@ -0,0 +1,25 @@
+#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
+
+
+namespace MiniSqlQuery.Core.Commands
+{
+ /// <summary>
+ /// The show web page command.
+ /// </summary>
+ public class ShowWebPageCommand
+ : ShowUrlCommand
+ {
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "ShowWebPageCommand" /> class.
+ /// </summary>
+ public ShowWebPageCommand()
+ : base("Mini SQL Query on GitHub", "https://github.com/paulkohler/minisqlquery", ImageResource.house)
+ {
+ }
+ }
+}
\ No newline at end of file