Пример #1
0
        private static void OnBeforeQueryStatus(object sender, EventArgs args)
        {
            CommandSubList matchedCommand = (CommandSubList)sender;

            bool isRootItem = matchedCommand.MatchedCommandId == 0;
            int  itemIndex  = isRootItem ? 0 : matchedCommand.MatchedCommandId - matchedCommand.BaseCommandID;

            if (itemIndex == 0)
            {
                matchedCommand.CachedCommandDetails = matchedCommand.GetCommandList();
            }

            if ((itemIndex >= 0) && (itemIndex < matchedCommand.CachedCommandDetails.Length))
            {
                matchedCommand.Enabled = true & matchedCommand.CachedCommandDetails[itemIndex].Enabled;
                matchedCommand.Text    = matchedCommand.CachedCommandDetails[itemIndex].Name;
                matchedCommand.Checked = matchedCommand.CachedCommandDetails[itemIndex].Checked;
            }
            else
            {
                matchedCommand.Enabled = false;
                matchedCommand.Text    = "No items";
            }

            matchedCommand.MatchedCommandId = 0;
        }
Пример #2
0
        public static async Task InitializeAsync(AsyncPackage package, Guid commandSet, int commandID, Func <CommandDetails[]> GetCommandList, Func <CommandDetails, Task> ExecuteCommand)
        {
            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(package.DisposalToken);

            OleMenuCommandService commandService = await package.GetServiceAsync((typeof(IMenuCommandService))) as OleMenuCommandService;

            if (commandService == null)
            {
                return;
            }

            var command = new CommandSubList(new CommandID(commandSet, commandID));

            command.GetCommandList = GetCommandList;
            command.ExecuteCommand = ExecuteCommand;
            commandService.AddCommand(command);
        }
Пример #3
0
        private static void OnInvoked(object sender, EventArgs args)
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            CommandSubList matchedCommand = (CommandSubList)sender;

            bool isRootItem = matchedCommand.MatchedCommandId == 0;
            int  itemIndex  = isRootItem ? 0 : matchedCommand.MatchedCommandId - matchedCommand.BaseCommandID;

            if ((itemIndex >= 0) && (itemIndex < matchedCommand.CachedCommandDetails.Length))
            {
                _ = Task.Run(
                    async() =>
                {
                    await matchedCommand.ExecuteCommand(matchedCommand.CachedCommandDetails[itemIndex]);
                }
                    );
            }
        }