diff --git a/minisqlquery-master/src/MiniSqlQuery/Commands/OpenRecentFileCommand.cs b/minisqlquery-master/src/MiniSqlQuery/Commands/OpenRecentFileCommand.cs
new file mode 100644
index 0000000..85d5372
--- /dev/null
+++ b/minisqlquery-master/src/MiniSqlQuery/Commands/OpenRecentFileCommand.cs
@@ -0,0 +1,178 @@
+using MiniSqlQuery.Core;
+using MiniSqlQuery.Core.Commands;
+using WeifenLuo.WinFormsUI.Docking;
+
+namespace MiniSqlQuery.Commands
+{
+ /// <summary>
+ /// Opens a recent file in a list by the <see cref = "Index" />.
+ /// Makes use of <see cref = "IMostRecentFilesService" /> to calculate the filename.
+ /// </summary>
+ public class OpenRecentFileCommand
+ : CommandBase
+ {
+ private readonly int _index;
+ private IMostRecentFilesService _mostRecentFilesService;
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref = "OpenRecentFileCommand" /> class.
+ /// </summary>
+ protected OpenRecentFileCommand(int index)
+ : base("MRU")
+ {
+ _index = index;
+ }
+
+ public OpenRecentFileCommand(IMostRecentFilesService mostRecentFilesService, int index)
+ : base("MRU")
+ {
+ _mostRecentFilesService = mostRecentFilesService;
+ _index = index;
+ }
+
+ public override bool Enabled
+ {
+ get
+ {
+ if (MostRecentFilesService.Filenames != null)
+ {
+ return MostRecentFilesService.Filenames.Count >= Index;
+ }
+ return false;
+ }
+ }
+
+ public int Index
+ {
+ get { return _index; }
+ }
+
+ public IMostRecentFilesService MostRecentFilesService
+ {
+ get
+ {
+ if (_mostRecentFilesService == null)
+ {
+ _mostRecentFilesService = Services.Resolve<IMostRecentFilesService>();
+ _mostRecentFilesService.MostRecentFilesChanged += MostRecentFilesServiceFilesChanged;
+ }
+ return _mostRecentFilesService;
+ }
+ }
+
+ void MostRecentFilesServiceFilesChanged(object sender, MostRecentFilesChangedEventArgs e)
+ {
+ UpdateName();
+ }
+
+ public void UpdateName()
+ {
+ if (Enabled)
+ {
+ Name = string.Format("&{0} - {1}", Index, GetFilenameByIndex());
+ }
+ }
+
+ public override void Execute()
+ {
+ if (!Enabled)
+ {
+ return;
+ }
+
+ var fileEditorResolver = Services.Resolve<IFileEditorResolver>();
+ _mostRecentFilesService = Services.Resolve<IMostRecentFilesService>();
+ string fileName = GetFilenameByIndex();
+
+ var editor = fileEditorResolver.ResolveEditorInstance(fileName);
+ editor.FileName = fileName;
+ editor.LoadFile();
+ HostWindow.DisplayDockedForm(editor as DockContent);
+ }
+
+ private string GetFilenameByIndex()
+ {
+ return MostRecentFilesService.Filenames[Index - 1];
+ }
+ }
+
+ public class OpenRecentFile1Command : OpenRecentFileCommand
+ {
+ public OpenRecentFile1Command()
+ : base(1)
+ {
+ }
+ }
+
+ public class OpenRecentFile2Command : OpenRecentFileCommand
+ {
+ public OpenRecentFile2Command()
+ : base(2)
+ {
+ }
+ }
+
+ public class OpenRecentFile3Command : OpenRecentFileCommand
+ {
+ public OpenRecentFile3Command()
+ : base(3)
+ {
+ }
+ }
+
+ public class OpenRecentFile4Command : OpenRecentFileCommand
+ {
+ public OpenRecentFile4Command()
+ : base(4)
+ {
+ }
+ }
+
+ public class OpenRecentFile5Command : OpenRecentFileCommand
+ {
+ public OpenRecentFile5Command()
+ : base(5)
+ {
+ }
+ }
+
+ public class OpenRecentFile6Command : OpenRecentFileCommand
+ {
+ public OpenRecentFile6Command()
+ : base(6)
+ {
+ }
+ }
+
+ public class OpenRecentFile7Command : OpenRecentFileCommand
+ {
+ public OpenRecentFile7Command()
+ : base(7)
+ {
+ }
+ }
+
+ public class OpenRecentFile8Command : OpenRecentFileCommand
+ {
+ public OpenRecentFile8Command()
+ : base(8)
+ {
+ }
+ }
+
+ public class OpenRecentFile9Command : OpenRecentFileCommand
+ {
+ public OpenRecentFile9Command()
+ : base(9)
+ {
+ }
+ }
+
+ public class OpenRecentFile10Command : OpenRecentFileCommand
+ {
+ public OpenRecentFile10Command()
+ : base(10)
+ {
+ }
+ }
+}
\ No newline at end of file