miniSql

6136600 » zgc123@gmail.com
11/19/2023 创建
#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.Windows.Forms;
using MiniSqlQuery.Core;
using MiniSqlQuery.Core.Commands;
using WeifenLuo.WinFormsUI.Docking;

namespace MiniSqlQuery.Commands
{
    /// <summary>The open file command.</summary>
    public class OpenFileCommand
        : CommandBase
    {
        /// <summary>Initializes a new instance of the <see cref="OpenFileCommand"/> class.</summary>
        public OpenFileCommand()
            : base("&Open File")
        {
            ShortcutKeys = Keys.Control | Keys.O;
            SmallImage = ImageResource.folder_page;
        }

        /// <summary>Execute the command.</summary>
        public override void Execute()
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);
            openFileDialog.Filter = Settings.DefaultFileFilter;
            openFileDialog.CheckFileExists = true;
            if (openFileDialog.ShowDialog(HostWindow.Instance) == DialogResult.OK)
            {
                // todo: check for file exist file in open windows;
                IFileEditorResolver resolver = Services.Resolve<IFileEditorResolver>();
                var fileName = openFileDialog.FileName;
                IEditor editor = resolver.ResolveEditorInstance(fileName);
                editor.FileName = fileName;
                editor.LoadFile();
                HostWindow.DisplayDockedForm(editor as DockContent);

                Services.Resolve<IMostRecentFilesService>().Register(fileName);
            }
        }
    }
}