/// <summary>
        /// Initializes a new instance of the <see cref="LocatorWindowCommand"/> 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 LocatorWindowCommand(Package package)
        {
            if (package == null)
            {
                throw new ArgumentNullException("package");
            }

            this.package = package;

            OleMenuCommandService commandService = ServiceProvider.GetService(typeof(IMenuCommandService)) as OleMenuCommandService;
            if (commandService != null)
            {
                var menuCommandID = new CommandID(CommandSet, CommandId);
                var menuItem = new MenuCommand(this.ShowToolWindow, menuCommandID);
                commandService.AddCommand(menuItem);
            }

            // Get the instance number 0 of this tool window. This window is single instance so this instance
            // is actually the only one.
            // The last flag is set to true so that if the tool window does not exists it will be created.
            _locatorWindow = package.FindToolWindow(typeof(LocatorWindow), 0, true) as LocatorWindow;
            if ((null == _locatorWindow) || (null == _locatorWindow.Frame))
            {
                throw new NotSupportedException("Cannot create tool window");
            }

            _locator = new Locator();
            _solution = ServiceProvider.GetService(typeof(SVsSolution)) as IVsSolution;
            _solution.AdviseSolutionEvents(_locator, out _cookie);
            _locatorWindow.SetLocator(_locator);
            _locator.StartWorkerThread();
        }
Ejemplo n.º 2
0
        public static void ProvideToolWindowCommand <TToolWindowPane>(VsPackage package, Guid menuGroup, int commandId)
            where TToolWindowPane : WpfToolWindowPane
        {
            EventHandler handler =
                (object sender, EventArgs e) =>
            {
                try
                {
                    ToolWindowPane pane = package.FindToolWindow(typeof(TToolWindowPane), 0, true);
                    if (pane != null)
                    {
                        ErrorHandler.ThrowOnFailure(((IVsWindowFrame)pane.Frame).Show());
                    }
                }
                catch (Exception ex) when(!ErrorHandler.IsCriticalException(ex))
                {
                }
            };

            OleMenuCommandService commandService = (OleMenuCommandService)((IServiceProvider)package).GetService(typeof(IMenuCommandService));

            if (commandService != null)
            {
                CommandID   toolWindowCommandId = new CommandID(menuGroup, commandId);
                MenuCommand command             = new MenuCommand(handler, toolWindowCommandId);
                commandService.AddCommand(command);
            }
        }
Ejemplo n.º 3
0
 public static void Initialize(Package package)
 {
     Instance = new MainWindowCommand(package);
     ToolWindowPane window = package.FindToolWindow(typeof(MainWindow), 0, true);
     if ((null == window) || (null == window.Frame))
     {
         throw new NotSupportedException("Cannot create tool window");
     }
     ((MainWindow)window).Initialize(((MainWindowPackage)package).Options);
 }