From 22443ad3b9299c7a2f7ff2eb198532737f175b7d Mon Sep 17 00:00:00 2001 From: Abraham Hosch Date: Wed, 29 Jun 2016 10:28:25 -0500 Subject: [PATCH 1/7] Throw SourceControlException in one place rather than NullReferenceException to prevent crash. Disable commands for Source Control when they can't work. --- .../SourceControlViewViewModel.cs | 9 +- .../SourceControlProviderBase.cs | 6 + .../SourceControlText.Designer.cs | 73 +++++---- .../SourceControlText.resx | 150 ++++++++++-------- 4 files changed, 138 insertions(+), 100 deletions(-) diff --git a/RetailCoder.VBE/UI/SourceControl/SourceControlViewViewModel.cs b/RetailCoder.VBE/UI/SourceControl/SourceControlViewViewModel.cs index 610fe2620d..f80fd34304 100644 --- a/RetailCoder.VBE/UI/SourceControl/SourceControlViewViewModel.cs +++ b/RetailCoder.VBE/UI/SourceControl/SourceControlViewViewModel.cs @@ -7,7 +7,6 @@ using System.IO; using System.Linq; using System.Windows.Forms; -using System.Windows.Input; using System.Windows.Media.Imaging; using Microsoft.Vbe.Interop; using Ninject; @@ -68,10 +67,10 @@ public SourceControlViewViewModel( _wrapperFactory = wrapperFactory; _messageBox = messageBox; - _initRepoCommand = new DelegateCommand(_ => InitRepo()); - _openRepoCommand = new DelegateCommand(_ => OpenRepo()); - _cloneRepoCommand = new DelegateCommand(_ => ShowCloneRepoGrid()); - _publishRepoCommand = new DelegateCommand(_ => ShowPublishRepoGrid()); + _initRepoCommand = new DelegateCommand(_ => InitRepo(), _ => _vbe.VBProjects.Count != 0); + _openRepoCommand = new DelegateCommand(_ => OpenRepo(), _ => _vbe.VBProjects.Count != 0); + _cloneRepoCommand = new DelegateCommand(_ => ShowCloneRepoGrid(), _ => _vbe.VBProjects.Count != 0); + _publishRepoCommand = new DelegateCommand(_ => ShowPublishRepoGrid(), _ => _vbe.VBProjects.Count != 0 && Provider != null); _refreshCommand = new DelegateCommand(_ => Refresh()); _dismissErrorMessageCommand = new DelegateCommand(_ => DismissErrorMessage()); _showFilePickerCommand = new DelegateCommand(_ => ShowFilePicker()); diff --git a/Rubberduck.SourceControl/SourceControlProviderBase.cs b/Rubberduck.SourceControl/SourceControlProviderBase.cs index 0b15f08c54..8a6b39f808 100644 --- a/Rubberduck.SourceControl/SourceControlProviderBase.cs +++ b/Rubberduck.SourceControl/SourceControlProviderBase.cs @@ -56,6 +56,12 @@ public virtual void CreateBranch(string sourceBranch, string branch) public virtual IRepository InitVBAProject(string directory) { + if (Project == null) + { + throw new SourceControlException(SourceControlText.GitNotInit, + new Exception(SourceControlText.NoProjectOpen)); + } + var projectName = GetProjectNameFromDirectory(directory); if (projectName != string.Empty && projectName != Project.Name) { diff --git a/Rubberduck.SourceControl/SourceControlText.Designer.cs b/Rubberduck.SourceControl/SourceControlText.Designer.cs index 8db6374a7e..ec4748d420 100644 --- a/Rubberduck.SourceControl/SourceControlText.Designer.cs +++ b/Rubberduck.SourceControl/SourceControlText.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// Dieser Code wurde von einem Tool generiert. -// Laufzeitversion:4.0.30319.18444 +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 // -// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn -// der Code erneut generiert wird. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ @@ -13,12 +13,12 @@ namespace Rubberduck.SourceControl { /// - /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// A strongly-typed resource class, for looking up localized strings, etc. /// - // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert - // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. - // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen - // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] @@ -33,7 +33,7 @@ internal SourceControlText() { } /// - /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { @@ -47,8 +47,8 @@ internal SourceControlText() { } /// - /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle - /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { @@ -61,7 +61,7 @@ internal SourceControlText() { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Branch deletion failed. ähnelt. + /// Looks up a localized string similar to Branch deletion failed.. /// internal static string GitBranchDeleteFailed { get { @@ -70,7 +70,7 @@ internal static string GitBranchDeleteFailed { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Checkout failed. ähnelt. + /// Looks up a localized string similar to Checkout failed.. /// internal static string GitCheckoutFailed { get { @@ -79,7 +79,7 @@ internal static string GitCheckoutFailed { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Commit failed. ähnelt. + /// Looks up a localized string similar to Commit failed.. /// internal static string GitCommitFailed { get { @@ -88,7 +88,7 @@ internal static string GitCommitFailed { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Fetch failed. ähnelt. + /// Looks up a localized string similar to Fetch failed.. /// internal static string GitFetchFailed { get { @@ -97,7 +97,7 @@ internal static string GitFetchFailed { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed to stage file. ähnelt. + /// Looks up a localized string similar to Failed to stage file.. /// internal static string GitFileStageFailed { get { @@ -106,7 +106,7 @@ internal static string GitFileStageFailed { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed to stage file '{0}' ähnelt. + /// Looks up a localized string similar to Failed to stage file '{0}'. /// internal static string GitFileStageFailedMsg { get { @@ -115,7 +115,7 @@ internal static string GitFileStageFailedMsg { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Branch creation failed. ähnelt. + /// Looks up a localized string similar to Branch creation failed.. /// internal static string GitNewBranchFailed { get { @@ -124,7 +124,7 @@ internal static string GitNewBranchFailed { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unable to perform initial commit. ähnelt. + /// Looks up a localized string similar to Unable to perform initial commit.. /// internal static string GitNoInitialCommit { get { @@ -133,7 +133,7 @@ internal static string GitNoInitialCommit { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unable to initialize repository. ähnelt. + /// Looks up a localized string similar to Unable to initialize repository.. /// internal static string GitNotInit { get { @@ -142,7 +142,7 @@ internal static string GitNotInit { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Publish failed. ähnelt. + /// Looks up a localized string similar to Publish failed.. /// internal static string GitPublishFailed { get { @@ -151,7 +151,7 @@ internal static string GitPublishFailed { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Pull failed. ähnelt. + /// Looks up a localized string similar to Pull failed.. /// internal static string GitPullFailed { get { @@ -160,7 +160,7 @@ internal static string GitPullFailed { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Push failed. ähnelt. + /// Looks up a localized string similar to Push failed.. /// internal static string GitPushFailed { get { @@ -169,7 +169,7 @@ internal static string GitPushFailed { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed to remove file '{0}' from staging area. ähnelt. + /// Looks up a localized string similar to Failed to remove file '{0}' from staging area.. /// internal static string GitRemoveFileStaging { get { @@ -178,7 +178,7 @@ internal static string GitRemoveFileStaging { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed to clone remote repository. ähnelt. + /// Looks up a localized string similar to Failed to clone remote repository.. /// internal static string GitRepoNotCloned { get { @@ -187,7 +187,7 @@ internal static string GitRepoNotCloned { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Repository not found. ähnelt. + /// Looks up a localized string similar to Repository not found.. /// internal static string GitRepoNotFound { get { @@ -196,7 +196,7 @@ internal static string GitRepoNotFound { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Failed to retrieve repository status. ähnelt. + /// Looks up a localized string similar to Failed to retrieve repository status.. /// internal static string GitRepoStatusFailed { get { @@ -205,7 +205,7 @@ internal static string GitRepoStatusFailed { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Revert resulted in conflicts. Revert failed. ähnelt. + /// Looks up a localized string similar to Revert resulted in conflicts. Revert failed.. /// internal static string GitRevertConflict { get { @@ -214,7 +214,7 @@ internal static string GitRevertConflict { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Revert failed. ähnelt. + /// Looks up a localized string similar to Revert failed.. /// internal static string GitRevertFailed { get { @@ -223,7 +223,7 @@ internal static string GitRevertFailed { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Undo failed. ähnelt. + /// Looks up a localized string similar to Undo failed.. /// internal static string GitUndoFailed { get { @@ -232,12 +232,21 @@ internal static string GitUndoFailed { } /// - /// Sucht eine lokalisierte Zeichenfolge, die Unpublish failed. ähnelt. + /// Looks up a localized string similar to Unpublish failed.. /// internal static string GitUnpublishFailed { get { return ResourceManager.GetString("GitUnpublishFailed", resourceCulture); } } + + /// + /// Looks up a localized string similar to There must be a project open for Rubberduck to successfully initialize a repository.. + /// + internal static string NoProjectOpen { + get { + return ResourceManager.GetString("NoProjectOpen", resourceCulture); + } + } } } diff --git a/Rubberduck.SourceControl/SourceControlText.resx b/Rubberduck.SourceControl/SourceControlText.resx index 82780f12bf..71ec8a9002 100644 --- a/Rubberduck.SourceControl/SourceControlText.resx +++ b/Rubberduck.SourceControl/SourceControlText.resx @@ -1,76 +1,96 @@ - + - + mimetype: application/x-microsoft.net.object.bytearray.base64 + value : The object must be serialized into a byte array + : using a System.ComponentModel.TypeConverter + : and then encoded with base64 encoding. + --> + + + + + + + + + + + + + + + + + + + - + + @@ -89,13 +109,13 @@ text/microsoft-resx - 1.3 + 2.0 - System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 Checkout failed. @@ -157,4 +177,8 @@ Unpublish failed. - + + There must be a project open for Rubberduck to successfully initialize a repository. + This isn't a git error, so no Git prefix + + \ No newline at end of file From 938c8bfb647b6c5a66be2935c5921dbd175a0a5a Mon Sep 17 00:00:00 2001 From: Abraham Hosch Date: Wed, 29 Jun 2016 14:13:32 -0500 Subject: [PATCH 2/7] Give Source Control a menu. --- RetailCoder.VBE/Rubberduck.csproj | 1 + .../UI/SourceControl/SourceControlView.xaml | 407 +++++++++++++++--- 2 files changed, 347 insertions(+), 61 deletions(-) diff --git a/RetailCoder.VBE/Rubberduck.csproj b/RetailCoder.VBE/Rubberduck.csproj index 5debb9a728..61b1f360f9 100644 --- a/RetailCoder.VBE/Rubberduck.csproj +++ b/RetailCoder.VBE/Rubberduck.csproj @@ -256,6 +256,7 @@ + False diff --git a/RetailCoder.VBE/UI/SourceControl/SourceControlView.xaml b/RetailCoder.VBE/UI/SourceControl/SourceControlView.xaml index 6766baee45..dee5b942a1 100644 --- a/RetailCoder.VBE/UI/SourceControl/SourceControlView.xaml +++ b/RetailCoder.VBE/UI/SourceControl/SourceControlView.xaml @@ -1,4 +1,4 @@ - @@ -154,7 +155,7 @@ - + @@ -216,6 +217,234 @@ + + + + + M 0,0 L 4,3.5 L 0,7 Z + + + + + + + + + + + + + + + + + + + + + + @@ -223,40 +452,102 @@ - - - - - - - - + Command="{Binding LoginGridCancelCommand}"/> @@ -369,7 +658,7 @@ DockPanel.Dock="Top"> - - - @@ -394,7 +683,7 @@ Margin="0,0,0,10" Height="18" VerticalContentAlignment="Center" /> - - + Command="{Binding CloneRepoCancelButtonCommand}"/> @@ -426,7 +713,7 @@ DockPanel.Dock="Top"> - - - + Command="{Binding PublishRepoCancelButtonCommand}"/> From 6cb49415344f3d3ef097e919e8300e9c6534b2df Mon Sep 17 00:00:00 2001 From: Abraham Hosch Date: Wed, 29 Jun 2016 14:28:12 -0500 Subject: [PATCH 3/7] Localize new menu --- RetailCoder.VBE/UI/RubberduckUI.Designer.cs | 72 ++++++++++++++++--- RetailCoder.VBE/UI/RubberduckUI.resx | 42 +++++++---- .../UI/SourceControl/SourceControlView.xaml | 30 ++++---- 3 files changed, 108 insertions(+), 36 deletions(-) diff --git a/RetailCoder.VBE/UI/RubberduckUI.Designer.cs b/RetailCoder.VBE/UI/RubberduckUI.Designer.cs index 6a2f73e57e..ff781e4e4b 100644 --- a/RetailCoder.VBE/UI/RubberduckUI.Designer.cs +++ b/RetailCoder.VBE/UI/RubberduckUI.Designer.cs @@ -3253,11 +3253,20 @@ public static string SourceControl_Changes { } /// - /// Looks up a localized string similar to Clone Repository. + /// Looks up a localized string similar to Clones remote repository from provided URI. Requires an empty project to be open in the VBE.. /// - public static string SourceControl_CloneRepoButtonToolTip { + public static string SourceControl_CloneRepositoryDescription { get { - return ResourceManager.GetString("SourceControl_CloneRepoButtonToolTip", resourceCulture); + return ResourceManager.GetString("SourceControl_CloneRepositoryDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Clone Remote Repository. + /// + public static string SourceControl_CloneRepositoryTitle { + get { + return ResourceManager.GetString("SourceControl_CloneRepositoryTitle", resourceCulture); } } @@ -3739,11 +3748,20 @@ public static string SourceControl_IncomingCommits { } /// - /// Looks up a localized string similar to Init New Repo from this Project. + /// Looks up a localized string similar to Creates a new repository from the open project.. + /// + public static string SourceControl_InitializeRepositoryDescription { + get { + return ResourceManager.GetString("SourceControl_InitializeRepositoryDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Initialize New Repository. /// - public static string SourceControl_InitRepoButtonToolTip { + public static string SourceControl_InitializeRepositoryTitle { get { - return ResourceManager.GetString("SourceControl_InitRepoButtonToolTip", resourceCulture); + return ResourceManager.GetString("SourceControl_InitializeRepositoryTitle", resourceCulture); } } @@ -3765,6 +3783,15 @@ public static string SourceControl_LoginInstructions { } } + /// + /// Looks up a localized string similar to Manage. + /// + public static string SourceControl_ManageRepositories { + get { + return ResourceManager.GetString("SourceControl_ManageRepositories", resourceCulture); + } + } + /// /// Looks up a localized string similar to Merge. /// @@ -3891,6 +3918,24 @@ public static string SourceControl_OpenCommandPromptFailureTitle { } } + /// + /// Looks up a localized string similar to Open repository from disk. Requires an empty project to be open in the VBE.. + /// + public static string SourceControl_OpenRepositoryDescription { + get { + return ResourceManager.GetString("SourceControl_OpenRepositoryDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Open Existing Repository. + /// + public static string SourceControl_OpenRepositoryTitle { + get { + return ResourceManager.GetString("SourceControl_OpenRepositoryTitle", resourceCulture); + } + } + /// /// Looks up a localized string similar to Open Working Directory. /// @@ -3955,11 +4000,20 @@ public static string SourceControl_PublishRepo_NoOpenRepo { } /// - /// Looks up a localized string similar to Publish repository to GitHub. + /// Looks up a localized string similar to Publishes an existing repository to a remote location. Requires the open project to be connected to a repository.. + /// + public static string SourceControl_PublishRepositoryDescription { + get { + return ResourceManager.GetString("SourceControl_PublishRepositoryDescription", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Publish Existing Repository. /// - public static string SourceControl_PublishRepoButtonToolTip { + public static string SourceControl_PublishRepositoryTitle { get { - return ResourceManager.GetString("SourceControl_PublishRepoButtonToolTip", resourceCulture); + return ResourceManager.GetString("SourceControl_PublishRepositoryTitle", resourceCulture); } } diff --git a/RetailCoder.VBE/UI/RubberduckUI.resx b/RetailCoder.VBE/UI/RubberduckUI.resx index 3ffc8687e4..44c1c4495a 100644 --- a/RetailCoder.VBE/UI/RubberduckUI.resx +++ b/RetailCoder.VBE/UI/RubberduckUI.resx @@ -446,9 +446,6 @@ Warning: All customized settings will be lost. Your old file will be saved in ' Create New Repository - - Open Working Directory - {0} Failed @@ -760,9 +757,6 @@ Are you sure you want to proceed with this rename? '.gitignore' File TC - - Init New Repo from this Project - Refreshes pending changes @@ -1307,9 +1301,6 @@ All our stargazers, likers & followers, for the warm fuzzies All references: '{0}' 0: declaration.identifiername - - Clone Repository - Rubberduck @@ -1620,9 +1611,6 @@ All our stargazers, likers & followers, for the warm fuzzies Show Log Folder - - Publish repository to GitHub - Publish repository. @@ -1707,4 +1695,34 @@ All our stargazers, likers & followers, for the warm fuzzies Untracked + + Clones remote repository from provided URI. Requires an empty project to be open in the VBE. + + + Clone Remote Repository + + + Creates a new repository from the open project. + + + Initialize New Repository + + + Manage + + + Open repository from disk. Requires an empty project to be open in the VBE. + + + Open Existing Repository + + + Open Working Directory + + + Publishes an existing repository to a remote location. Requires the open project to be connected to a repository. + + + Publish Existing Repository + \ No newline at end of file diff --git a/RetailCoder.VBE/UI/SourceControl/SourceControlView.xaml b/RetailCoder.VBE/UI/SourceControl/SourceControlView.xaml index dee5b942a1..3a596f7a81 100644 --- a/RetailCoder.VBE/UI/SourceControl/SourceControlView.xaml +++ b/RetailCoder.VBE/UI/SourceControl/SourceControlView.xaml @@ -460,7 +460,7 @@ - + @@ -474,10 +474,10 @@ VerticalAlignment="Top" /> - + Text="{Resx Key=SourceControl_OpenRepositoryTitle, ResxName=Rubberduck.UI.RubberduckUI}" /> + @@ -495,10 +495,10 @@ VerticalAlignment="Top" /> - + Text="{Resx Key=SourceControl_InitializeRepositoryTitle, ResxName=Rubberduck.UI.RubberduckUI}" /> + @@ -516,8 +516,8 @@ VerticalAlignment="Top" /> - + @@ -537,10 +537,10 @@ VerticalAlignment="Top" /> - + Text="{Resx Key=SourceControl_PublishRepositoryTitle, ResxName=Rubberduck.UI.RubberduckUI}" /> + From 2865aac51436a05f894c6f460026fc70d28f96bc Mon Sep 17 00:00:00 2001 From: Abraham Hosch Date: Thu, 30 Jun 2016 10:13:58 -0500 Subject: [PATCH 4/7] Catch crashes in commands. --- .../Root/FatalExceptionInterceptor.cs | 20 --------- RetailCoder.VBE/Root/RubberduckModule.cs | 2 - RetailCoder.VBE/Rubberduck.csproj | 1 - .../CodeExplorer_AddClassModuleCommand.cs | 4 +- .../CodeExplorer_AddStdModuleCommand.cs | 4 +- .../CodeExplorer_AddTestModuleCommand.cs | 4 +- .../CodeExplorer_AddUserFormCommand.cs | 4 +- .../Commands/CodeExplorer_CommitCommand.cs | 4 +- .../CodeExplorer_CopyResultsCommand.cs | 2 +- .../Commands/CodeExplorer_ExportCommand.cs | 4 +- ...eExplorer_FindAllImplementationsCommand.cs | 4 +- .../CodeExplorer_FindAllReferencesCommand.cs | 4 +- .../Commands/CodeExplorer_ImportCommand.cs | 2 +- .../Commands/CodeExplorer_IndentCommand.cs | 4 +- .../Commands/CodeExplorer_NavigateCommand.cs | 4 +- .../CodeExplorer_OpenDesignerCommand.cs | 4 +- ...deExplorer_OpenProjectPropertiesCommand.cs | 2 +- .../Commands/CodeExplorer_PrintCommand.cs | 4 +- .../CodeExplorer_RefreshComponentCommand.cs | 4 +- .../Commands/CodeExplorer_RemoveCommand.cs | 4 +- .../Commands/CodeExplorer_RenameCommand.cs | 4 +- .../Commands/CodeExplorer_UndoCommand.cs | 4 +- RetailCoder.VBE/UI/Command/AboutCommand.cs | 2 +- .../UI/Command/AddTestMethodCommand.cs | 4 +- .../AddTestMethodExpectedErrorCommand.cs | 4 +- .../UI/Command/AddTestModuleCommand.cs | 4 +- .../UI/Command/CodeExplorerCommand.cs | 2 +- RetailCoder.VBE/UI/Command/CommandBase.cs | 42 ++++++++++++++++++- RetailCoder.VBE/UI/Command/DelegateCommand.cs | 4 +- .../Command/FindAllImplementationsCommand.cs | 4 +- .../UI/Command/FindAllReferencesCommand.cs | 4 +- .../UI/Command/FindSymbolCommand.cs | 2 +- .../UI/Command/IndentCurrentModuleCommand.cs | 4 +- .../Command/IndentCurrentProcedureCommand.cs | 4 +- .../UI/Command/InspectionResultsCommand.cs | 2 +- RetailCoder.VBE/UI/Command/NavigateCommand.cs | 2 +- .../UI/Command/NoIndentAnnotationCommand.cs | 4 +- .../CodePaneRefactorRenameCommand.cs | 4 +- .../FormDesignerRefactorRenameCommand.cs | 4 +- .../ProjectExplorerRefactorRenameCommand.cs | 4 +- .../RefactorEncapsulateFieldCommand.cs | 4 +- .../RefactorExtractInterfaceCommand.cs | 4 +- .../RefactorExtractMethodCommand.cs | 4 +- .../RefactorImplementInterfaceCommand.cs | 4 +- .../RefactorIntroduceFieldCommand.cs | 4 +- .../RefactorIntroduceParameterCommand.cs | 4 +- .../RefactorMoveCloserToUsageCommand.cs | 4 +- .../RefactorRemoveParametersCommand.cs | 4 +- .../RefactorReorderParametersCommand.cs | 4 +- .../UI/Command/RegexSearchReplaceCommand.cs | 2 +- RetailCoder.VBE/UI/Command/ReparseCommand.cs | 4 +- .../UI/Command/RunAllTestsCommand.cs | 4 +- RetailCoder.VBE/UI/Command/SettingsCommand.cs | 2 +- .../UI/Command/ShowParserErrorsCommand.cs | 2 +- .../Command/ShowSourceControlPanelCommand.cs | 2 +- .../UI/Command/TestExplorerCommand.cs | 2 +- .../UI/Command/ToDoExplorerCommand.cs | 2 +- RetailCoder.VBE/UI/RubberduckUI.Designer.cs | 9 ++++ RetailCoder.VBE/UI/RubberduckUI.resx | 5 ++- 59 files changed, 145 insertions(+), 118 deletions(-) delete mode 100644 RetailCoder.VBE/Root/FatalExceptionInterceptor.cs diff --git a/RetailCoder.VBE/Root/FatalExceptionInterceptor.cs b/RetailCoder.VBE/Root/FatalExceptionInterceptor.cs deleted file mode 100644 index ffaafc587d..0000000000 --- a/RetailCoder.VBE/Root/FatalExceptionInterceptor.cs +++ /dev/null @@ -1,20 +0,0 @@ -using System; -using Ninject.Extensions.Interception; -using NLog; - -namespace Rubberduck.Root -{ - /// - /// An interceptor that logs an unhandled exception. - /// - public class FatalExceptionInterceptor : InterceptorBase - { - private readonly ILogger _logger = LogManager.GetCurrentClassLogger(); - - protected override void OnError(IInvocation invocation, Exception exception) - { - _logger.Fatal(exception); - throw new InterceptedException(exception); - } - } -} \ No newline at end of file diff --git a/RetailCoder.VBE/Root/RubberduckModule.cs b/RetailCoder.VBE/Root/RubberduckModule.cs index c29514dfee..16139ca471 100644 --- a/RetailCoder.VBE/Root/RubberduckModule.cs +++ b/RetailCoder.VBE/Root/RubberduckModule.cs @@ -326,8 +326,6 @@ private void BindCommandsToMenuItems() binding.When(request => whenCommandMenuItemCondition(request) || whenHooksCondition(request)) .InSingletonScope(); - - binding.Intercept().With(); } } catch (InvalidOperationException) diff --git a/RetailCoder.VBE/Rubberduck.csproj b/RetailCoder.VBE/Rubberduck.csproj index 5debb9a728..a1d09acf9f 100644 --- a/RetailCoder.VBE/Rubberduck.csproj +++ b/RetailCoder.VBE/Rubberduck.csproj @@ -391,7 +391,6 @@ - diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_AddClassModuleCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_AddClassModuleCommand.cs index b6af1d0089..3ae2a8afa5 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_AddClassModuleCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_AddClassModuleCommand.cs @@ -14,12 +14,12 @@ public CodeExplorer_AddClassModuleCommand(VBE vbe) _vbe = vbe; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { return GetDeclaration(parameter) != null || _vbe.VBProjects.Count == 1; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { if (parameter != null) { diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_AddStdModuleCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_AddStdModuleCommand.cs index 3c320fe396..19c63ee098 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_AddStdModuleCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_AddStdModuleCommand.cs @@ -14,12 +14,12 @@ public CodeExplorer_AddStdModuleCommand(VBE vbe) _vbe = vbe; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { return GetDeclaration(parameter) != null || _vbe.VBProjects.Count == 1; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { if (parameter != null) { diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_AddTestModuleCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_AddTestModuleCommand.cs index 26a361637e..5f960bc4f2 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_AddTestModuleCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_AddTestModuleCommand.cs @@ -17,12 +17,12 @@ public CodeExplorer_AddTestModuleCommand(VBE vbe, NewUnitTestModuleCommand newUn _newUnitTestModuleCommand = newUnitTestModuleCommand; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { return GetDeclaration(parameter) != null || _vbe.VBProjects.Count == 1; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { if (parameter != null) { diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_AddUserFormCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_AddUserFormCommand.cs index 48a0b5c901..04dd2f5637 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_AddUserFormCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_AddUserFormCommand.cs @@ -14,12 +14,12 @@ public CodeExplorer_AddUserFormCommand(VBE vbe) _vbe = vbe; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { return GetDeclaration(parameter) != null || _vbe.VBProjects.Count == 1; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { if (parameter != null) { diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_CommitCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_CommitCommand.cs index 9c40d3a90f..9beafcba13 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_CommitCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_CommitCommand.cs @@ -13,12 +13,12 @@ public CodeExplorer_CommitCommand(SourceControlDockablePresenter presenter) _presenter = presenter; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { return parameter is CodeExplorerComponentViewModel; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { _presenter.Show(); diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_CopyResultsCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_CopyResultsCommand.cs index 4bd3c63289..3d848af7c1 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_CopyResultsCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_CopyResultsCommand.cs @@ -19,7 +19,7 @@ public CodeExplorer_CopyResultsCommand(RubberduckParserState state) _clipboard = new ClipboardWriter(); } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { const string XML_SPREADSHEET_DATA_FORMAT = "XML Spreadsheet"; diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_ExportCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_ExportCommand.cs index 6baf58e25c..69cd16419a 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_ExportCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_ExportCommand.cs @@ -25,7 +25,7 @@ public CodeExplorer_ExportCommand(ISaveFileDialog saveFileDialog) _saveFileDialog.OverwritePrompt = true; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { if (!(parameter is CodeExplorerComponentViewModel)) { @@ -37,7 +37,7 @@ public override bool CanExecute(object parameter) return _exportableFileExtensions.Select(s => s.Key).Contains(componentType); } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { var node = (CodeExplorerComponentViewModel)parameter; var component = node.Declaration.QualifiedName.QualifiedModuleName.Component; diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_FindAllImplementationsCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_FindAllImplementationsCommand.cs index da380582ea..71f5d9ca8a 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_FindAllImplementationsCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_FindAllImplementationsCommand.cs @@ -15,14 +15,14 @@ public CodeExplorer_FindAllImplementationsCommand(RubberduckParserState state, F _findAllImplementations = findAllImplementations; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { return _state.Status == ParserState.Ready && (parameter is CodeExplorerComponentViewModel || parameter is CodeExplorerMemberViewModel); } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { _findAllImplementations.Execute(((CodeExplorerItemViewModel) parameter).GetSelectedDeclaration()); } diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_FindAllReferencesCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_FindAllReferencesCommand.cs index 653b6725a5..5ec7cc583b 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_FindAllReferencesCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_FindAllReferencesCommand.cs @@ -15,14 +15,14 @@ public CodeExplorer_FindAllReferencesCommand(RubberduckParserState state, FindAl _findAllReferences = findAllReferences; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { return _state.Status == ParserState.Ready && parameter != null && !(parameter is CodeExplorerCustomFolderViewModel); } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { _findAllReferences.Execute(((CodeExplorerItemViewModel) parameter).GetSelectedDeclaration()); } diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_ImportCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_ImportCommand.cs index aa28aa81b2..92c41fdd4b 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_ImportCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_ImportCommand.cs @@ -24,7 +24,7 @@ public CodeExplorer_ImportCommand(IOpenFileDialog openFileDialog) _openFileDialog.CheckFileExists = true; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { VBProject project; diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_IndentCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_IndentCommand.cs index 2003ad51be..4765ccf1b1 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_IndentCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_IndentCommand.cs @@ -21,7 +21,7 @@ public CodeExplorer_IndentCommand(RubberduckParserState state, IIndenter indente _navigateCommand = navigateCommand; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { if (parameter == null) { @@ -69,7 +69,7 @@ public override bool CanExecute(object parameter) && !(parameter is CodeExplorerCustomFolderViewModel); } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { if (parameter == null) { diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_NavigateCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_NavigateCommand.cs index 53e87e7709..76440a3c5f 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_NavigateCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_NavigateCommand.cs @@ -12,12 +12,12 @@ public CodeExplorer_NavigateCommand(INavigateCommand navigateCommand) _navigateCommand = navigateCommand; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { return parameter != null && ((CodeExplorerItemViewModel)parameter).QualifiedSelection.HasValue; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { // ReSharper disable once PossibleInvalidOperationException _navigateCommand.Execute(((CodeExplorerItemViewModel)parameter).QualifiedSelection.Value.GetNavitationArgs()); diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_OpenDesignerCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_OpenDesignerCommand.cs index 752dec97c3..ad69044677 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_OpenDesignerCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_OpenDesignerCommand.cs @@ -7,7 +7,7 @@ namespace Rubberduck.UI.CodeExplorer.Commands { public class CodeExplorer_OpenDesignerCommand : CommandBase { - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { if (parameter == null) { @@ -26,7 +26,7 @@ public override bool CanExecute(object parameter) } } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { ((ICodeExplorerDeclarationViewModel) parameter).Declaration .QualifiedName.QualifiedModuleName.Component.DesignerWindow() diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_OpenProjectPropertiesCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_OpenProjectPropertiesCommand.cs index 93e2252a25..6d629b8b20 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_OpenProjectPropertiesCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_OpenProjectPropertiesCommand.cs @@ -12,7 +12,7 @@ public CodeExplorer_OpenProjectPropertiesCommand(VBE vbe) _vbe = vbe; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { const int openProjectPropertiesId = 2578; diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_PrintCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_PrintCommand.cs index 2e3c54fc61..b35e26c150 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_PrintCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_PrintCommand.cs @@ -11,7 +11,7 @@ namespace Rubberduck.UI.CodeExplorer.Commands { public class CodeExplorer_PrintCommand : CommandBase { - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { var node = parameter as CodeExplorerComponentViewModel; if (node == null) @@ -22,7 +22,7 @@ public override bool CanExecute(object parameter) return node.Declaration.QualifiedName.QualifiedModuleName.Component.CodeModule.CountOfLines != 0; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { var node = (CodeExplorerComponentViewModel)parameter; var component = node.Declaration.QualifiedName.QualifiedModuleName.Component; diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_RefreshComponentCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_RefreshComponentCommand.cs index 1e3dd33998..87c6d46352 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_RefreshComponentCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_RefreshComponentCommand.cs @@ -13,7 +13,7 @@ public CodeExplorer_RefreshComponentCommand(RubberduckParserState state) _state = state; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { var node = parameter as CodeExplorerComponentViewModel; @@ -21,7 +21,7 @@ public override bool CanExecute(object parameter) _state.GetOrCreateModuleState(node.QualifiedSelection.Value.QualifiedName.Component) == ParserState.Pending; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { var node = (CodeExplorerComponentViewModel) parameter; diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_RemoveCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_RemoveCommand.cs index 6b8ff47d5f..21fcfc04c9 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_RemoveCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_RemoveCommand.cs @@ -29,7 +29,7 @@ public CodeExplorer_RemoveCommand(ISaveFileDialog saveFileDialog, IMessageBox me _messageBox = messageBox; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { if (!(parameter is CodeExplorerComponentViewModel)) { @@ -41,7 +41,7 @@ public override bool CanExecute(object parameter) return _exportableFileExtensions.Select(s => s.Key).Contains(componentType); } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { var message = string.Format("Do you want to export '{0}' before removing?", ((CodeExplorerComponentViewModel)parameter).Name); var result = _messageBox.Show(message, "Rubberduck Export Prompt", MessageBoxButtons.YesNoCancel, diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_RenameCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_RenameCommand.cs index bbdaf932ac..1ec117ffe6 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_RenameCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_RenameCommand.cs @@ -22,12 +22,12 @@ public CodeExplorer_RenameCommand(VBE vbe, RubberduckParserState state, IRenameD _msgBox = msgBox; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { return _state.Status == ParserState.Ready && parameter is ICodeExplorerDeclarationViewModel; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { var factory = new RenamePresenterFactory(_vbe, _view, _state, _msgBox); var refactoring = new RenameRefactoring(_vbe, factory, _msgBox, _state); diff --git a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_UndoCommand.cs b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_UndoCommand.cs index 2aba277325..b1b291e06c 100644 --- a/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_UndoCommand.cs +++ b/RetailCoder.VBE/UI/CodeExplorer/Commands/CodeExplorer_UndoCommand.cs @@ -19,7 +19,7 @@ public CodeExplorer_UndoCommand(SourceControlDockablePresenter presenter, IMessa _messageBox = messageBox; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { var node = parameter as CodeExplorerComponentViewModel; if (node == null) @@ -46,7 +46,7 @@ public override bool CanExecute(object parameter) changesVM.IncludedChanges.Select(s => s.FilePath).Contains(GetFileName(node)); } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { var panel = _presenter.Window() as SourceControlPanel; if (panel == null) diff --git a/RetailCoder.VBE/UI/Command/AboutCommand.cs b/RetailCoder.VBE/UI/Command/AboutCommand.cs index 6dfcff8d97..aa11fb72b3 100644 --- a/RetailCoder.VBE/UI/Command/AboutCommand.cs +++ b/RetailCoder.VBE/UI/Command/AboutCommand.cs @@ -9,7 +9,7 @@ namespace Rubberduck.UI.Command [ComVisible(false)] public class AboutCommand : CommandBase { - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { using (var window = new AboutDialog()) { diff --git a/RetailCoder.VBE/UI/Command/AddTestMethodCommand.cs b/RetailCoder.VBE/UI/Command/AddTestMethodCommand.cs index 1ee6f7a30d..ad85032486 100644 --- a/RetailCoder.VBE/UI/Command/AddTestMethodCommand.cs +++ b/RetailCoder.VBE/UI/Command/AddTestMethodCommand.cs @@ -25,7 +25,7 @@ public AddTestMethodCommand(VBE vbe, RubberduckParserState state, NewTestMethodC _state = state; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { if (_state.Status != ParserState.Ready) { return false; } @@ -36,7 +36,7 @@ public override bool CanExecute(object parameter) return testModules.Any(a => a.QualifiedName.QualifiedModuleName.Component == _vbe.SelectedVBComponent); } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { _command.NewTestMethod(); } diff --git a/RetailCoder.VBE/UI/Command/AddTestMethodExpectedErrorCommand.cs b/RetailCoder.VBE/UI/Command/AddTestMethodExpectedErrorCommand.cs index 2c6a26a7f2..e97e7ed1a4 100644 --- a/RetailCoder.VBE/UI/Command/AddTestMethodExpectedErrorCommand.cs +++ b/RetailCoder.VBE/UI/Command/AddTestMethodExpectedErrorCommand.cs @@ -25,7 +25,7 @@ public AddTestMethodExpectedErrorCommand(VBE vbe, RubberduckParserState state, N _state = state; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { if (_state.Status != ParserState.Ready) { return false; } @@ -36,7 +36,7 @@ public override bool CanExecute(object parameter) return testModules.Any(a => a.QualifiedName.QualifiedModuleName.Component == _vbe.SelectedVBComponent); } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { _command.NewExpectedErrorTestMethod(); } diff --git a/RetailCoder.VBE/UI/Command/AddTestModuleCommand.cs b/RetailCoder.VBE/UI/Command/AddTestModuleCommand.cs index 7faf0ef48a..900a9065e2 100644 --- a/RetailCoder.VBE/UI/Command/AddTestModuleCommand.cs +++ b/RetailCoder.VBE/UI/Command/AddTestModuleCommand.cs @@ -23,12 +23,12 @@ public AddTestModuleCommand(VBE vbe, RubberduckParserState state, NewUnitTestMod _command = command; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { return _vbe.HostSupportsUnitTests(); } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { _command.NewUnitTestModule(_vbe.ActiveVBProject); } diff --git a/RetailCoder.VBE/UI/Command/CodeExplorerCommand.cs b/RetailCoder.VBE/UI/Command/CodeExplorerCommand.cs index 02c2a94d3f..338d5cc383 100644 --- a/RetailCoder.VBE/UI/Command/CodeExplorerCommand.cs +++ b/RetailCoder.VBE/UI/Command/CodeExplorerCommand.cs @@ -21,7 +21,7 @@ public override RubberduckHotkey Hotkey get { return RubberduckHotkey.CodeExplorer; } } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { _presenter.Show(); } diff --git a/RetailCoder.VBE/UI/Command/CommandBase.cs b/RetailCoder.VBE/UI/Command/CommandBase.cs index 243aa1ffc1..2bc8282a97 100644 --- a/RetailCoder.VBE/UI/Command/CommandBase.cs +++ b/RetailCoder.VBE/UI/Command/CommandBase.cs @@ -1,6 +1,8 @@ using System; using System.Runtime.InteropServices; +using System.Windows.Forms; using System.Windows.Input; +using NLog; using Rubberduck.Settings; namespace Rubberduck.UI.Command @@ -8,12 +10,48 @@ namespace Rubberduck.UI.Command [ComVisible(false)] public abstract class CommandBase : ICommand { - public virtual bool CanExecute(object parameter) + private static readonly Logger Logger = LogManager.GetCurrentClassLogger(); + + public virtual bool CanExecuteImpl(object parameter) { return true; } - public abstract void Execute(object parameter); + public abstract void ExecuteImpl(object parameter); + + public bool CanExecute(object parameter) + { + try + { + return CanExecuteImpl(parameter); + } + catch (Exception e) + { + Logger.Fatal(e); + + System.Windows.Forms.MessageBox.Show( + RubberduckUI.RubberduckFatalError, RubberduckUI.Rubberduck, + MessageBoxButtons.OK, MessageBoxIcon.Error); + + return false; + } + } + + public void Execute(object parameter) + { + try + { + ExecuteImpl(parameter); + } + catch (Exception e) + { + Logger.Fatal(e); + + System.Windows.Forms.MessageBox.Show( + RubberduckUI.RubberduckFatalError, RubberduckUI.Rubberduck, + MessageBoxButtons.OK, MessageBoxIcon.Error); + } + } public virtual string ShortcutText { get; set; } diff --git a/RetailCoder.VBE/UI/Command/DelegateCommand.cs b/RetailCoder.VBE/UI/Command/DelegateCommand.cs index b8aac9b1f6..bd8f4e2e81 100644 --- a/RetailCoder.VBE/UI/Command/DelegateCommand.cs +++ b/RetailCoder.VBE/UI/Command/DelegateCommand.cs @@ -15,12 +15,12 @@ public DelegateCommand(Action execute, Predicate canExecute = nu _execute = execute; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { return _canExecute == null || _canExecute.Invoke(parameter); } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { _execute.Invoke(parameter); } diff --git a/RetailCoder.VBE/UI/Command/FindAllImplementationsCommand.cs b/RetailCoder.VBE/UI/Command/FindAllImplementationsCommand.cs index c3cba20992..0fb3ca98d9 100644 --- a/RetailCoder.VBE/UI/Command/FindAllImplementationsCommand.cs +++ b/RetailCoder.VBE/UI/Command/FindAllImplementationsCommand.cs @@ -86,7 +86,7 @@ private void UpdateTab() } } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { if (_vbe.ActiveCodePane == null || _state.Status != ParserState.Ready) { @@ -99,7 +99,7 @@ public override bool CanExecute(object parameter) return canExecute; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { if (_state.Status != ParserState.Ready) { diff --git a/RetailCoder.VBE/UI/Command/FindAllReferencesCommand.cs b/RetailCoder.VBE/UI/Command/FindAllReferencesCommand.cs index 533f9fbd4d..e2d0c8714f 100644 --- a/RetailCoder.VBE/UI/Command/FindAllReferencesCommand.cs +++ b/RetailCoder.VBE/UI/Command/FindAllReferencesCommand.cs @@ -83,7 +83,7 @@ private void UpdateTab() } } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { if (_vbe.ActiveCodePane == null || _state.Status != ParserState.Ready) { @@ -96,7 +96,7 @@ public override bool CanExecute(object parameter) return canExecute; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { if (_state.Status != ParserState.Ready) { diff --git a/RetailCoder.VBE/UI/Command/FindSymbolCommand.cs b/RetailCoder.VBE/UI/Command/FindSymbolCommand.cs index 44947c6dc6..8f084b9c0c 100644 --- a/RetailCoder.VBE/UI/Command/FindSymbolCommand.cs +++ b/RetailCoder.VBE/UI/Command/FindSymbolCommand.cs @@ -31,7 +31,7 @@ public override RubberduckHotkey Hotkey get { return RubberduckHotkey.FindSymbol; } } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { var viewModel = new FindSymbolViewModel(_state.AllDeclarations.Where(item => !item.IsBuiltIn), _iconCache); using (var view = new FindSymbolDialog(viewModel)) diff --git a/RetailCoder.VBE/UI/Command/IndentCurrentModuleCommand.cs b/RetailCoder.VBE/UI/Command/IndentCurrentModuleCommand.cs index 1fca286299..b079d0c86c 100644 --- a/RetailCoder.VBE/UI/Command/IndentCurrentModuleCommand.cs +++ b/RetailCoder.VBE/UI/Command/IndentCurrentModuleCommand.cs @@ -22,12 +22,12 @@ public override RubberduckHotkey Hotkey get { return RubberduckHotkey.IndentModule; } } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { return _vbe.ActiveCodePane != null; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { _indenter.IndentCurrentModule(); } diff --git a/RetailCoder.VBE/UI/Command/IndentCurrentProcedureCommand.cs b/RetailCoder.VBE/UI/Command/IndentCurrentProcedureCommand.cs index 83425b5720..3fa33aee4f 100644 --- a/RetailCoder.VBE/UI/Command/IndentCurrentProcedureCommand.cs +++ b/RetailCoder.VBE/UI/Command/IndentCurrentProcedureCommand.cs @@ -22,12 +22,12 @@ public override RubberduckHotkey Hotkey get { return RubberduckHotkey.IndentProcedure; } } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { return _vbe.ActiveCodePane != null; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { _indenter.IndentCurrentProcedure(); } diff --git a/RetailCoder.VBE/UI/Command/InspectionResultsCommand.cs b/RetailCoder.VBE/UI/Command/InspectionResultsCommand.cs index 7f68cd50b3..4da790c367 100644 --- a/RetailCoder.VBE/UI/Command/InspectionResultsCommand.cs +++ b/RetailCoder.VBE/UI/Command/InspectionResultsCommand.cs @@ -25,7 +25,7 @@ public override RubberduckHotkey Hotkey /// Runs code inspections /// /// - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { _presenter.Show(); } diff --git a/RetailCoder.VBE/UI/Command/NavigateCommand.cs b/RetailCoder.VBE/UI/Command/NavigateCommand.cs index 4d472516b5..712f2e9c2c 100644 --- a/RetailCoder.VBE/UI/Command/NavigateCommand.cs +++ b/RetailCoder.VBE/UI/Command/NavigateCommand.cs @@ -11,7 +11,7 @@ public interface INavigateCommand : ICommand { } [ComVisible(false)] public class NavigateCommand : CommandBase, INavigateCommand { - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { var param = parameter as NavigateCodeEventArgs; if (param == null || param.QualifiedName.Component == null) diff --git a/RetailCoder.VBE/UI/Command/NoIndentAnnotationCommand.cs b/RetailCoder.VBE/UI/Command/NoIndentAnnotationCommand.cs index 07186600cf..446e62bdab 100644 --- a/RetailCoder.VBE/UI/Command/NoIndentAnnotationCommand.cs +++ b/RetailCoder.VBE/UI/Command/NoIndentAnnotationCommand.cs @@ -19,7 +19,7 @@ public NoIndentAnnotationCommand(VBE vbe, RubberduckParserState state) _state = state; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { var target = FindTarget(parameter); @@ -27,7 +27,7 @@ public override bool CanExecute(object parameter) target.Annotations.All(a => a.AnnotationType != AnnotationType.NoIndent); } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { _vbe.ActiveCodePane.CodeModule.InsertLines(1, "'@NoIndent"); } diff --git a/RetailCoder.VBE/UI/Command/Refactorings/CodePaneRefactorRenameCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/CodePaneRefactorRenameCommand.cs index b5bccb81b6..8220a3df86 100644 --- a/RetailCoder.VBE/UI/Command/Refactorings/CodePaneRefactorRenameCommand.cs +++ b/RetailCoder.VBE/UI/Command/Refactorings/CodePaneRefactorRenameCommand.cs @@ -27,7 +27,7 @@ public override RubberduckHotkey Hotkey get { return RubberduckHotkey.RefactorRename; } } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { if (Vbe.ActiveCodePane == null) { @@ -38,7 +38,7 @@ public override bool CanExecute(object parameter) return _state.Status == ParserState.Ready && target != null && !target.IsBuiltIn; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { if (Vbe.ActiveCodePane == null) { return; } diff --git a/RetailCoder.VBE/UI/Command/Refactorings/FormDesignerRefactorRenameCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/FormDesignerRefactorRenameCommand.cs index abbe54c99e..38239a7efe 100644 --- a/RetailCoder.VBE/UI/Command/Refactorings/FormDesignerRefactorRenameCommand.cs +++ b/RetailCoder.VBE/UI/Command/Refactorings/FormDesignerRefactorRenameCommand.cs @@ -21,12 +21,12 @@ public FormDesignerRefactorRenameCommand(VBE vbe, RubberduckParserState state) _state = state; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { return _state.Status == ParserState.Ready; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { using (var view = new RenameDialog()) { diff --git a/RetailCoder.VBE/UI/Command/Refactorings/ProjectExplorerRefactorRenameCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/ProjectExplorerRefactorRenameCommand.cs index 473b5d922a..8cb2fb03a8 100644 --- a/RetailCoder.VBE/UI/Command/Refactorings/ProjectExplorerRefactorRenameCommand.cs +++ b/RetailCoder.VBE/UI/Command/Refactorings/ProjectExplorerRefactorRenameCommand.cs @@ -21,12 +21,12 @@ public ProjectExplorerRefactorRenameCommand(VBE vbe, RubberduckParserState state _msgBox = msgBox; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { return _state.Status == ParserState.Ready; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { using (var view = new RenameDialog()) { diff --git a/RetailCoder.VBE/UI/Command/Refactorings/RefactorEncapsulateFieldCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/RefactorEncapsulateFieldCommand.cs index f2b985ea73..554726d60a 100644 --- a/RetailCoder.VBE/UI/Command/Refactorings/RefactorEncapsulateFieldCommand.cs +++ b/RetailCoder.VBE/UI/Command/Refactorings/RefactorEncapsulateFieldCommand.cs @@ -18,7 +18,7 @@ public RefactorEncapsulateFieldCommand(VBE vbe, RubberduckParserState state) _state = state; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { var pane = Vbe.ActiveCodePane; if (pane == null || _state.Status != ParserState.Ready) @@ -35,7 +35,7 @@ public override bool CanExecute(object parameter) return canExecute; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { if (Vbe.ActiveCodePane == null) { diff --git a/RetailCoder.VBE/UI/Command/Refactorings/RefactorExtractInterfaceCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/RefactorExtractInterfaceCommand.cs index 225dac5c6b..a184b81e10 100644 --- a/RetailCoder.VBE/UI/Command/Refactorings/RefactorExtractInterfaceCommand.cs +++ b/RetailCoder.VBE/UI/Command/Refactorings/RefactorExtractInterfaceCommand.cs @@ -28,7 +28,7 @@ public RefactorExtractInterfaceCommand(VBE vbe, RubberduckParserState state, IMe vbext_ComponentType.vbext_ct_MSForm, }; - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { var activePane = Vbe.ActiveCodePane; if (activePane == null) @@ -54,7 +54,7 @@ public override bool CanExecute(object parameter) return canExecute; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { if (Vbe.ActiveCodePane == null) { diff --git a/RetailCoder.VBE/UI/Command/Refactorings/RefactorExtractMethodCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/RefactorExtractMethodCommand.cs index e9d0ce06b6..9c629f2fab 100644 --- a/RetailCoder.VBE/UI/Command/Refactorings/RefactorExtractMethodCommand.cs +++ b/RetailCoder.VBE/UI/Command/Refactorings/RefactorExtractMethodCommand.cs @@ -30,7 +30,7 @@ public override RubberduckHotkey Hotkey get { return RubberduckHotkey.RefactorExtractMethod; } } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { if (Vbe.ActiveCodePane == null || _state.Status != ParserState.Ready) { @@ -61,7 +61,7 @@ public override bool CanExecute(object parameter) return canExecute; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { var declarations = _state.AllDeclarations; var qualifiedSelection = Vbe.ActiveCodePane.GetQualifiedSelection(); diff --git a/RetailCoder.VBE/UI/Command/Refactorings/RefactorImplementInterfaceCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/RefactorImplementInterfaceCommand.cs index 07432a641b..f51f437ca2 100644 --- a/RetailCoder.VBE/UI/Command/Refactorings/RefactorImplementInterfaceCommand.cs +++ b/RetailCoder.VBE/UI/Command/Refactorings/RefactorImplementInterfaceCommand.cs @@ -19,7 +19,7 @@ public RefactorImplementInterfaceCommand(VBE vbe, RubberduckParserState state) _state = state; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { if (Vbe.ActiveCodePane == null || _state.Status != ParserState.Ready) { @@ -43,7 +43,7 @@ public override bool CanExecute(object parameter) return canExecute; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { if (Vbe.ActiveCodePane == null) { diff --git a/RetailCoder.VBE/UI/Command/Refactorings/RefactorIntroduceFieldCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/RefactorIntroduceFieldCommand.cs index 2340b7ec0c..0771888708 100644 --- a/RetailCoder.VBE/UI/Command/Refactorings/RefactorIntroduceFieldCommand.cs +++ b/RetailCoder.VBE/UI/Command/Refactorings/RefactorIntroduceFieldCommand.cs @@ -16,7 +16,7 @@ public RefactorIntroduceFieldCommand (VBE vbe, RubberduckParserState state) _state = state; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { if (Vbe.ActiveCodePane == null || _state.Status != ParserState.Ready) { @@ -36,7 +36,7 @@ public override bool CanExecute(object parameter) return canExecute; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { var selection = Vbe.ActiveCodePane.GetQualifiedSelection(); if (!selection.HasValue) diff --git a/RetailCoder.VBE/UI/Command/Refactorings/RefactorIntroduceParameterCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/RefactorIntroduceParameterCommand.cs index b7e90f314c..4d563d2e4c 100644 --- a/RetailCoder.VBE/UI/Command/Refactorings/RefactorIntroduceParameterCommand.cs +++ b/RetailCoder.VBE/UI/Command/Refactorings/RefactorIntroduceParameterCommand.cs @@ -16,7 +16,7 @@ public RefactorIntroduceParameterCommand (VBE vbe, RubberduckParserState state) _state = state; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { if (Vbe.ActiveCodePane == null || _state.Status != ParserState.Ready) { @@ -36,7 +36,7 @@ public override bool CanExecute(object parameter) return canExecute; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { var selection = Vbe.ActiveCodePane.GetQualifiedSelection(); if (!selection.HasValue) diff --git a/RetailCoder.VBE/UI/Command/Refactorings/RefactorMoveCloserToUsageCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/RefactorMoveCloserToUsageCommand.cs index 62d95d984a..d680184e87 100644 --- a/RetailCoder.VBE/UI/Command/Refactorings/RefactorMoveCloserToUsageCommand.cs +++ b/RetailCoder.VBE/UI/Command/Refactorings/RefactorMoveCloserToUsageCommand.cs @@ -26,7 +26,7 @@ public override RubberduckHotkey Hotkey get { return RubberduckHotkey.RefactorMoveCloserToUsage; } } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { if (Vbe.ActiveCodePane == null || _state.Status != ParserState.Ready) { @@ -41,7 +41,7 @@ public override bool CanExecute(object parameter) return canExecute; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { if (Vbe.ActiveCodePane == null) { diff --git a/RetailCoder.VBE/UI/Command/Refactorings/RefactorRemoveParametersCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/RefactorRemoveParametersCommand.cs index 78da818892..76b45cb15c 100644 --- a/RetailCoder.VBE/UI/Command/Refactorings/RefactorRemoveParametersCommand.cs +++ b/RetailCoder.VBE/UI/Command/Refactorings/RefactorRemoveParametersCommand.cs @@ -30,7 +30,7 @@ public RefactorRemoveParametersCommand(VBE vbe, RubberduckParserState state) DeclarationType.PropertySet }; - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { if (Vbe.ActiveCodePane == null || _state.Status != ParserState.Ready) { @@ -52,7 +52,7 @@ public override bool CanExecute(object parameter) return canExecute; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { if (Vbe.ActiveCodePane == null) { diff --git a/RetailCoder.VBE/UI/Command/Refactorings/RefactorReorderParametersCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/RefactorReorderParametersCommand.cs index d84f56876f..96ea620a23 100644 --- a/RetailCoder.VBE/UI/Command/Refactorings/RefactorReorderParametersCommand.cs +++ b/RetailCoder.VBE/UI/Command/Refactorings/RefactorReorderParametersCommand.cs @@ -34,7 +34,7 @@ public RefactorReorderParametersCommand(VBE vbe, RubberduckParserState state, IC DeclarationType.PropertySet }; - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { if (Vbe.ActiveCodePane == null || _state.Status != ParserState.Ready) { @@ -56,7 +56,7 @@ public override bool CanExecute(object parameter) return canExecute; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { if (Vbe.ActiveCodePane == null) { diff --git a/RetailCoder.VBE/UI/Command/RegexSearchReplaceCommand.cs b/RetailCoder.VBE/UI/Command/RegexSearchReplaceCommand.cs index 38a3794fcd..26718881ac 100644 --- a/RetailCoder.VBE/UI/Command/RegexSearchReplaceCommand.cs +++ b/RetailCoder.VBE/UI/Command/RegexSearchReplaceCommand.cs @@ -13,7 +13,7 @@ public RegexSearchReplaceCommand(RegexSearchReplacePresenter presenter) _presenter = presenter; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { _presenter.Show(); } diff --git a/RetailCoder.VBE/UI/Command/ReparseCommand.cs b/RetailCoder.VBE/UI/Command/ReparseCommand.cs index fc1232d928..f8034f36f3 100644 --- a/RetailCoder.VBE/UI/Command/ReparseCommand.cs +++ b/RetailCoder.VBE/UI/Command/ReparseCommand.cs @@ -34,7 +34,7 @@ public override RubberduckHotkey Hotkey get { return RubberduckHotkey.ParseAll; } } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { return _state.Status == ParserState.Pending || _state.Status == ParserState.Ready @@ -42,7 +42,7 @@ public override bool CanExecute(object parameter) || _state.Status == ParserState.ResolverError; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { _state.OnParseRequested(this); } diff --git a/RetailCoder.VBE/UI/Command/RunAllTestsCommand.cs b/RetailCoder.VBE/UI/Command/RunAllTestsCommand.cs index df7d4ba3b6..0ca92fa030 100644 --- a/RetailCoder.VBE/UI/Command/RunAllTestsCommand.cs +++ b/RetailCoder.VBE/UI/Command/RunAllTestsCommand.cs @@ -27,12 +27,12 @@ public RunAllTestsCommand(VBE vbe, RubberduckParserState state, ITestEngine engi _state = state; } - public override bool CanExecute(object parameter) + public override bool CanExecuteImpl(object parameter) { return _vbe.IsInDesignMode(); } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { if (!_state.IsDirty()) { diff --git a/RetailCoder.VBE/UI/Command/SettingsCommand.cs b/RetailCoder.VBE/UI/Command/SettingsCommand.cs index 036c4b3a67..659319425e 100644 --- a/RetailCoder.VBE/UI/Command/SettingsCommand.cs +++ b/RetailCoder.VBE/UI/Command/SettingsCommand.cs @@ -19,7 +19,7 @@ public SettingsCommand(IGeneralConfigService service, IOperatingSystem operating _operatingSystem = operatingSystem; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { using (var window = new SettingsForm(_service, _operatingSystem)) { diff --git a/RetailCoder.VBE/UI/Command/ShowParserErrorsCommand.cs b/RetailCoder.VBE/UI/Command/ShowParserErrorsCommand.cs index 18b1fc4fec..08f893eefb 100644 --- a/RetailCoder.VBE/UI/Command/ShowParserErrorsCommand.cs +++ b/RetailCoder.VBE/UI/Command/ShowParserErrorsCommand.cs @@ -69,7 +69,7 @@ private void UpdateTab() } } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { if (_viewModel == null) { diff --git a/RetailCoder.VBE/UI/Command/ShowSourceControlPanelCommand.cs b/RetailCoder.VBE/UI/Command/ShowSourceControlPanelCommand.cs index 8ec69f4872..c7d8946a95 100644 --- a/RetailCoder.VBE/UI/Command/ShowSourceControlPanelCommand.cs +++ b/RetailCoder.VBE/UI/Command/ShowSourceControlPanelCommand.cs @@ -16,7 +16,7 @@ public ShowSourceControlPanelCommand(SourceControlDockablePresenter presenter) _presenter = presenter; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { _presenter.Show(); } diff --git a/RetailCoder.VBE/UI/Command/TestExplorerCommand.cs b/RetailCoder.VBE/UI/Command/TestExplorerCommand.cs index b8528e9ecc..16a1f9b712 100644 --- a/RetailCoder.VBE/UI/Command/TestExplorerCommand.cs +++ b/RetailCoder.VBE/UI/Command/TestExplorerCommand.cs @@ -18,7 +18,7 @@ public override RubberduckHotkey Hotkey get { return RubberduckHotkey.TestExplorer; } } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { _presenter.Show(); } diff --git a/RetailCoder.VBE/UI/Command/ToDoExplorerCommand.cs b/RetailCoder.VBE/UI/Command/ToDoExplorerCommand.cs index 33ea1f2299..68b5c8e66d 100644 --- a/RetailCoder.VBE/UI/Command/ToDoExplorerCommand.cs +++ b/RetailCoder.VBE/UI/Command/ToDoExplorerCommand.cs @@ -15,7 +15,7 @@ public ToDoExplorerCommand(IPresenter presenter) _presenter = presenter; } - public override void Execute(object parameter) + public override void ExecuteImpl(object parameter) { _presenter.Show(); } diff --git a/RetailCoder.VBE/UI/RubberduckUI.Designer.cs b/RetailCoder.VBE/UI/RubberduckUI.Designer.cs index 0cae6a99cf..3c2710b1f2 100644 --- a/RetailCoder.VBE/UI/RubberduckUI.Designer.cs +++ b/RetailCoder.VBE/UI/RubberduckUI.Designer.cs @@ -2811,6 +2811,15 @@ public static string RubberduckCommandbarRefreshButtonTooltip { } } + /// + /// Looks up a localized string similar to Rubberduck encountered an error. Please save your work and restart the host program, then upload your log file to our GitHub page.. + /// + public static string RubberduckFatalError { + get { + return ResourceManager.GetString("RubberduckFatalError", resourceCulture); + } + } + /// /// Looks up a localized string similar to Rubberduck Add-In could not be loaded. /// diff --git a/RetailCoder.VBE/UI/RubberduckUI.resx b/RetailCoder.VBE/UI/RubberduckUI.resx index 198c89998c..f6e63b80b5 100644 --- a/RetailCoder.VBE/UI/RubberduckUI.resx +++ b/RetailCoder.VBE/UI/RubberduckUI.resx @@ -1,4 +1,4 @@ - +