From b8ffd8d23c4c22bf6b4e4665cac15d557e420526 Mon Sep 17 00:00:00 2001 From: Hosch250 Date: Sun, 27 Sep 2015 18:14:27 -0500 Subject: [PATCH 1/2] Closes #764 --- RetailCoder.VBE/Rubberduck.csproj | 1 + .../RefactorReorderParametersCommand.cs | 43 +++++++++++++++++++ RetailCoder.VBE/UI/RefactorMenu.cs | 8 +--- 3 files changed, 45 insertions(+), 7 deletions(-) create mode 100644 RetailCoder.VBE/UI/Command/Refactorings/RefactorReorderParametersCommand.cs diff --git a/RetailCoder.VBE/Rubberduck.csproj b/RetailCoder.VBE/Rubberduck.csproj index 67f1ab3b57..8b49478930 100644 --- a/RetailCoder.VBE/Rubberduck.csproj +++ b/RetailCoder.VBE/Rubberduck.csproj @@ -376,6 +376,7 @@ + diff --git a/RetailCoder.VBE/UI/Command/Refactorings/RefactorReorderParametersCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/RefactorReorderParametersCommand.cs new file mode 100644 index 0000000000..aefb46125a --- /dev/null +++ b/RetailCoder.VBE/UI/Command/Refactorings/RefactorReorderParametersCommand.cs @@ -0,0 +1,43 @@ +using System.Runtime.InteropServices; +using Microsoft.Vbe.Interop; +using Rubberduck.Parsing; +using Rubberduck.Refactorings.ReorderParameters; +using Rubberduck.UI.Refactorings; +using Rubberduck.VBEditor; +using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; + +namespace Rubberduck.UI.Command.Refactorings +{ + [ComVisible(false)] + class RefactorReorderParametersCommand : RefactorCommandBase + { + private readonly ICodePaneWrapperFactory _wrapperWrapperFactory; + + public RefactorReorderParametersCommand(VBE vbe, IRubberduckParser parser, IActiveCodePaneEditor editor, ICodePaneWrapperFactory wrapperWrapperFactory) + : base (vbe, parser, editor) + { + _wrapperWrapperFactory = wrapperWrapperFactory; + } + + public override void Execute(object parameter) + { + if (Vbe.ActiveCodePane == null) + { + return; + } + var codePane = _wrapperWrapperFactory.Create(Vbe.ActiveCodePane); + var selection = new QualifiedSelection(new QualifiedModuleName(codePane.CodeModule.Parent), codePane.Selection); + // duplicates ReorderParameters Implementation until here... extract common method? + // TryGetQualifiedSelection? + var progress = new ParsingProgressPresenter(); + var result = progress.Parse(Parser, Vbe.ActiveVBProject); + + using (var view = new ReorderParametersDialog()) + { + var factory = new ReorderParametersPresenterFactory(Editor, view, result, new MessageBox()); + var refactoring = new ReorderParametersRefactoring(factory, Editor, new MessageBox()); + refactoring.Refactor(selection); + } + } + } +} diff --git a/RetailCoder.VBE/UI/RefactorMenu.cs b/RetailCoder.VBE/UI/RefactorMenu.cs index f5845a2ef5..f884fcf68c 100644 --- a/RetailCoder.VBE/UI/RefactorMenu.cs +++ b/RetailCoder.VBE/UI/RefactorMenu.cs @@ -212,13 +212,7 @@ private void OnRenameButtonClick(CommandBarButton Ctrl, ref bool CancelDefault) [SuppressMessage("ReSharper", "InconsistentNaming")] private void OnReorderParametersButtonClick(CommandBarButton Ctrl, ref bool CancelDefault) { - if (IDE.ActiveCodePane == null) - { - return; - } - var codePane = _wrapperWrapperFactory.Create(IDE.ActiveCodePane); - var selection = new QualifiedSelection(new QualifiedModuleName(codePane.CodeModule.Parent), codePane.Selection); - ReorderParameters(selection); + new RefactorReorderParametersCommand(IDE, _parser, _editor, _wrapperWrapperFactory).Execute(null); } [SuppressMessage("ReSharper", "InconsistentNaming")] From fefc1a6a196e8f204b7a3b83c52a79f7d05f9630 Mon Sep 17 00:00:00 2001 From: Hosch250 Date: Sun, 27 Sep 2015 18:49:03 -0500 Subject: [PATCH 2/2] Closes #763 --- RetailCoder.VBE/Rubberduck.csproj | 1 + .../RefactorRenameParametersCommand.cs | 53 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 RetailCoder.VBE/UI/Command/Refactorings/RefactorRenameParametersCommand.cs diff --git a/RetailCoder.VBE/Rubberduck.csproj b/RetailCoder.VBE/Rubberduck.csproj index 8b49478930..aba368010e 100644 --- a/RetailCoder.VBE/Rubberduck.csproj +++ b/RetailCoder.VBE/Rubberduck.csproj @@ -376,6 +376,7 @@ + diff --git a/RetailCoder.VBE/UI/Command/Refactorings/RefactorRenameParametersCommand.cs b/RetailCoder.VBE/UI/Command/Refactorings/RefactorRenameParametersCommand.cs new file mode 100644 index 0000000000..e1d89884ca --- /dev/null +++ b/RetailCoder.VBE/UI/Command/Refactorings/RefactorRenameParametersCommand.cs @@ -0,0 +1,53 @@ +using Microsoft.Vbe.Interop; +using Rubberduck.Parsing; +using Rubberduck.VBEditor; +using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane; +using System.Runtime.InteropServices; +using Rubberduck.Parsing.Symbols; +using Rubberduck.Refactorings.Rename; +using Rubberduck.UI.Refactorings; + +namespace Rubberduck.UI.Command.Refactorings +{ + [ComVisible(false)] + public class RefactorRenameParametersCommand : RefactorCommandBase + { + private readonly ICodePaneWrapperFactory _wrapperWrapperFactory; + + public RefactorRenameParametersCommand(VBE vbe, IRubberduckParser parser, IActiveCodePaneEditor editor, ICodePaneWrapperFactory wrapperWrapperFactory) + : base (vbe, parser, editor) + { + _wrapperWrapperFactory = wrapperWrapperFactory; + } + + public override void Execute(object parameter) + { + if (Vbe.ActiveCodePane == null) + { + return; + } + var codePane = _wrapperWrapperFactory.Create(Vbe.ActiveCodePane); + var selection = new QualifiedSelection(new QualifiedModuleName(codePane.CodeModule.Parent), codePane.Selection); + // duplicates ReorderParameters Implementation until here... extract common method? + // TryGetQualifiedSelection? + var progress = new ParsingProgressPresenter(); + var result = progress.Parse(Parser, Vbe.ActiveVBProject); + + using (var view = new RenameDialog()) + { + var factory = new RenamePresenterFactory(Vbe, view, result, new MessageBox(), _wrapperWrapperFactory); + var refactoring = new RenameRefactoring(factory, Editor, new MessageBox()); + + var target = parameter as Declaration; + if (target == null) + { + refactoring.Refactor(); + } + else + { + refactoring.Refactor(target); + } + } + } + } +} \ No newline at end of file