//------------------------------------------------------------------------------ // <copyright file="InfoCommand.cs" company="LIGHTS IN LINE AB"> // Copyright (c) LIGHTS IN LINE AB. All rights reserved. // </copyright> //------------------------------------------------------------------------------ /************************************************************************************************ * All code in this file is under the MS-RL License (https://opensource.org/licenses/MS-RL) * * By using the code in this file in any way, you agree to the above license terms. * * Copyright (C) LIGHTS IN LINE AB (https://www.lightsinline.se) * * Repository, Wiki, Issue tracker and more at * * https://git.lightsinline.se/lilchger/WebServicePlugins * * * * Contributors * * LIGHTS IN LINE AB * * SWEDBANK AB * * SKATTEVERKET * ************************************************************************************************/ using System; using System.ComponentModel.Design; using System.Globalization; using Microsoft.VisualStudio.Shell; using Microsoft.VisualStudio.Shell.Interop; namespace WebTest.WebServive.Plugin { /// <summary> /// Command handler /// </summary> internal sealed class InfoCommand { /// <summary> /// Command ID. /// </summary> public const int CommandId = 0x0100; /// <summary> /// Command menu group (command set GUID). /// </summary> public static readonly Guid CommandSet = new Guid("dabd9d62-5ee8-4639-a7d5-71485c06eeca"); /// <summary> /// VS Package that provides this command, not null. /// </summary> private readonly Package package; /// <summary> /// Initializes a new instance of the <see cref="InfoCommand"/> class. /// Adds our command handlers for menu (commands must exist in the command table file) /// </summary> /// <param name="package">Owner package, not null.</param> private InfoCommand(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); } } /// <summary> /// Gets the instance of the command. /// </summary> public static InfoCommand Instance { get; private set; } /// <summary> /// Gets the service provider from the owner package. /// </summary> private IServiceProvider ServiceProvider { get { return this.package; } } /// <summary> /// Initializes the singleton instance of the command. /// </summary> /// <param name="package">Owner package, not null.</param> public static void Initialize(Package package) { Instance = new InfoCommand(package); } /// <summary> /// 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. /// </summary> /// <param name="sender">Event sender.</param> /// <param name="e">Event args.</param> private void MenuItemCallback(object sender, EventArgs e) { string message = @"Repository, Wiki, Issues at https://git.lightsinline.se/lilchger/WebServicePlugins"; string title = "WebService Plugin For WebTest version 1.0"; // Show a message box to prove we were here VsShellUtilities.ShowMessageBox( this.ServiceProvider, message, title, OLEMSGICON.OLEMSGICON_INFO, OLEMSGBUTTON.OLEMSGBUTTON_OK, OLEMSGDEFBUTTON.OLEMSGDEFBUTTON_FIRST); } } }