diff --git a/.gitignore b/.gitignore index 2129ba7..930bf61 100644 --- a/.gitignore +++ b/.gitignore @@ -167,3 +167,4 @@ pip-log.txt # Nuget packages /packages /paket-files +/ImageCommentsPackage/Output/ImageComments.vsix diff --git a/ImageCommentsPackage/ImageCommentsCommand.cs b/ImageCommentsPackage/ImageCommentsCommand.cs new file mode 100644 index 0000000..a462203 --- /dev/null +++ b/ImageCommentsPackage/ImageCommentsCommand.cs @@ -0,0 +1,32 @@ +namespace LM.ImageComments.Package +{ + using System.ComponentModel.Design; + using LM.ImageComments.EditorComponent; + using Microsoft.VisualStudio.Shell; + using Task = System.Threading.Tasks.Task; + + internal sealed class ImageCommentsCommand + { + public static async Task InitializeAsync(AsyncPackage package) + { + await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); + + var mcs = await package.GetServiceAsync((typeof(IMenuCommandService))) as OleMenuCommandService; + + if (null != mcs) + { + var menuCommandID = new CommandID(GuidList.guidImageCommentsPackageCmdSet, (int)PkgCmdIDList.cmdidToggleImageComments); + + var menuItem = new MenuCommand((s, e) => Execute(package), menuCommandID); + + mcs.AddCommand(menuItem); + } + } + + private static void Execute(AsyncPackage package) + { + ThreadHelper.ThrowIfNotOnUIThread(); + ImageAdornmentManager.ToggleEnabled(); + } + } +} diff --git a/ImageCommentsPackage/ImageCommentsPackage.cs b/ImageCommentsPackage/ImageCommentsPackage.cs index 56d8cf3..dd54b85 100644 --- a/ImageCommentsPackage/ImageCommentsPackage.cs +++ b/ImageCommentsPackage/ImageCommentsPackage.cs @@ -1,46 +1,32 @@ namespace LM.ImageComments.Package { using System; - using System.ComponentModel.Design; using System.Diagnostics; - using System.Diagnostics.CodeAnalysis; - using System.Globalization; + using System.Diagnostics.CodeAnalysis; + using System.Globalization; using System.Runtime.InteropServices; - using LM.ImageComments.EditorComponent; + using System.Threading; using Microsoft.VisualStudio.Shell; + using Task = System.Threading.Tasks.Task; /// /// Package containing image comment command /// - [PackageRegistration(UseManagedResourcesOnly = true)] + [PackageRegistration(UseManagedResourcesOnly = true, AllowsBackgroundLoading = true)] [InstalledProductRegistration("#110", "#112", "1.0", IconResourceID = 400)] [ProvideMenuResource("Menus.ctmenu", 1)] [Guid(GuidList.guidImageCommentsPackagePkgString)] [SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1650:ElementDocumentationMustBeSpelledCorrectly", Justification = "pkgdef, VS and vsixmanifest are valid VS terms")] - public sealed class ImageCommentsPackage : Microsoft.VisualStudio.Shell.Package + public sealed class ImageCommentsPackage : AsyncPackage { - #region Package Members - /// /// Creates and registers image comment enable/disable toggle command /// - protected override void Initialize() + protected override async Task InitializeAsync(CancellationToken cancellationToken, IProgress progress) { - ThreadHelper.ThrowIfNotOnUIThread(); - - Trace.WriteLine (string.Format(CultureInfo.CurrentCulture, "Entering Initialize() of: {0}", this.ToString())); - base.Initialize(); - - OleMenuCommandService mcs = GetService(typeof(IMenuCommandService)) as OleMenuCommandService; - if ( null != mcs ) - { - CommandID menuCommandID = new CommandID(GuidList.guidImageCommentsPackageCmdSet, (int)PkgCmdIDList.cmdidToggleImageComments); - MenuCommand menuItem = new MenuCommand( - (sender, args) => { ImageAdornmentManager.ToggleEnabled(); }, - menuCommandID); - mcs.AddCommand( menuItem ); - } + Trace.WriteLine(string.Format(CultureInfo.CurrentCulture, "Entering Initialize() of: {0}", this.ToString())); + await JoinableTaskFactory.SwitchToMainThreadAsync(cancellationToken); + await ImageCommentsCommand.InitializeAsync(this); } - #endregion } } diff --git a/ImageCommentsPackage/ImageCommentsPackage.csproj b/ImageCommentsPackage/ImageCommentsPackage.csproj index c00b3d0..1d3a177 100644 --- a/ImageCommentsPackage/ImageCommentsPackage.csproj +++ b/ImageCommentsPackage/ImageCommentsPackage.csproj @@ -86,6 +86,7 @@ +