//------------------------------------------------------------------------------ // // Copyright (c) Company. All rights reserved. // //------------------------------------------------------------------------------ using System; using System.ComponentModel.Design; using System.Globalization; using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell.Interop; using System.Windows.Forms; namespace SolutionOpen.Command { /// /// Command handler /// internal sealed class SolutionOpen { /// /// Command ID. /// public const int CommandId = 0x0100; /// /// Command menu group (command set GUID). /// public static readonly Guid CommandSet = new Guid("f044c1a5-742b-472d-b45a-fc2b5df582f9"); /// /// VS Package that provides this command, not null. /// private readonly Package package; /// /// Initializes a new instance of the class. /// Adds our command handlers for menu (commands must exist in the command table file) /// /// Owner package, not null. private SolutionOpen(Package package) { if(package == null) { throw new ArgumentNullException("package"); } this.package = package; OleMenuCommandService commandService = this.ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService; if(commandService != null) { var menuCommandID = new CommandID(CommandSet, CommandId); var menuItem = new MenuCommand(this.MenuItemCallback, menuCommandID); commandService.AddCommand(menuItem); } } /// /// Gets the instance of the command. /// public static SolutionOpen Instance { get; private set; } /// /// Gets the service provider from the owner package. /// private IServiceProvider ServiceProvider { get { return this.package; } } /// /// Initializes the singleton instance of the command. /// /// Owner package, not null. public static void Initialize(Package package) { Instance = new SolutionOpen(package); } /// /// This function is the callback used to execute the command when the menu item is clicked. /// See the constructor to see how the menu item is associated with this function using /// OleMenuCommandService service and MenuCommand class. /// /// Event sender. /// Event args. private void MenuItemCallback(object sender, EventArgs e) { // show the dialog box and handle what the user wants to do ToolWindow.ChooseFile chooseFile = new ToolWindow.ChooseFile(); if (chooseFile.ShowDialog() == DialogResult.OK) chooseFile.OpenSelectedFiles(); // clean up chooseFile.Dispose(); } } }