Skip to content

Commit

Permalink
Merge pull request #783 from Vogel612/Refactorings
Browse files Browse the repository at this point in the history
Refactorings
  • Loading branch information
retailcoder committed Sep 21, 2015
2 parents 2360403 + 4ca8758 commit 49ae393
Show file tree
Hide file tree
Showing 7 changed files with 108 additions and 66 deletions.
6 changes: 4 additions & 2 deletions RetailCoder.VBE/Rubberduck.csproj
Expand Up @@ -361,10 +361,8 @@
<Compile Include="UI\Command\MenuItems\OptionsCommandMenuItem.cs" />
<Compile Include="UI\Command\MenuItems\ParentMenus\ParentMenuItemBase.cs" />
<Compile Include="UI\Command\MenuItems\ParentMenus\ProjectWindowContextParentMenu.cs" />
<Compile Include="UI\Command\RefactorExtractMethodCommand.cs" />
<Compile Include="UI\Command\MenuItems\RefactorExtractMethodCommandMenuItem.cs" />
<Compile Include="UI\Command\MenuItems\ParentMenus\RefactoringsParentMenu.cs" />
<Compile Include="UI\Command\RefactorRemoveParametersCommand.cs" />
<Compile Include="UI\Command\MenuItems\RefactorRemoveParametersCommandMenuItem.cs" />
<Compile Include="UI\Command\RefactorRenameCommand.cs" />
<Compile Include="UI\Command\RefactorReorderParametersCommand.cs" />
Expand Down Expand Up @@ -719,6 +717,9 @@
<DependentUpon>UnSyncedCommitsControl.cs</DependentUpon>
</Compile>
<Compile Include="UnitTesting\PermissiveAssertClass.cs" />
<Compile Include="UI\Command\Refactorings\RefactorCommandBase.cs" />
<Compile Include="UI\Command\Refactorings\RefactorExtractMethodCommand.cs" />
<Compile Include="UI\Command\Refactorings\RefactorRemoveParametersCommand.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="UI\AboutWindow.resx">
Expand Down Expand Up @@ -868,6 +869,7 @@
</ItemGroup>
<ItemGroup>
<Folder Include="Properties\DataSources\" />
<Folder Include="UI\Command\Refactorings\" />
</ItemGroup>
<ItemGroup>
<Resource Include="Resources\rubberduck.config" />
Expand Down
14 changes: 0 additions & 14 deletions RetailCoder.VBE/UI/Command/RefactorExtractMethodCommand.cs

This file was deleted.

15 changes: 0 additions & 15 deletions RetailCoder.VBE/UI/Command/RefactorRemoveParametersCommand.cs

This file was deleted.

28 changes: 28 additions & 0 deletions RetailCoder.VBE/UI/Command/Refactorings/RefactorCommandBase.cs
@@ -0,0 +1,28 @@
using Microsoft.Vbe.Interop;
using Rubberduck.Parsing;
using Rubberduck.VBEditor;
using Rubberduck.UI.Command;
using System;

namespace Rubberduck.UI.Command.Refactorings
{
public abstract class RefactorCommandBase : CommandBase
{
protected readonly IRubberduckParser _parser;
protected readonly IActiveCodePaneEditor _editor;
protected readonly VBE _ide;

protected RefactorCommandBase(VBE ide, IRubberduckParser parser, IActiveCodePaneEditor editor)
{
_ide = ide;
_parser = parser;
_editor = editor;
}

protected void refactoring_InvalidSelection(object sender, EventArgs e)
{
System.Windows.Forms.MessageBox.Show(RubberduckUI.ExtractMethod_InvalidSelectionMessage, RubberduckUI.ExtractMethod_Caption, MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
}
}
}

@@ -0,0 +1,30 @@
using Microsoft.Vbe.Interop;
using System.Runtime.InteropServices;
using Rubberduck.Parsing;
using Rubberduck.Refactorings.ExtractMethod;
using Rubberduck.VBEditor;

namespace Rubberduck.UI.Command.Refactorings
{

[ComVisible(false)]
public class RefactorExtractMethodCommand : RefactorCommandBase
{
public RefactorExtractMethodCommand (VBE ide, IRubberduckParser parser, IActiveCodePaneEditor editor)
: base (ide, parser, editor)
{
}

public override void Execute(object parameter)
{
var progress = new ParsingProgressPresenter();
var result = progress.Parse(_parser, _ide.ActiveVBProject);

var declarations = result.Declarations;
var factory = new ExtractMethodPresenterFactory(_editor, declarations);
var refactoring = new ExtractMethodRefactoring(factory, _editor);
refactoring.InvalidSelection += refactoring_InvalidSelection;
refactoring.Refactor();
}
}
}
@@ -0,0 +1,43 @@
using Microsoft.Vbe.Interop;
using Rubberduck.Parsing;
using Rubberduck.VBEditor;
using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane;
using System.Runtime.InteropServices;
using Rubberduck.Refactorings.RemoveParameters;
using Rubberduck.UI.Refactorings;

namespace Rubberduck.UI.Command.Refactorings
{
[ComVisible(false)]
public class RefactorRemoveParametersCommand : RefactorCommandBase
{
private readonly ICodePaneWrapperFactory _wrapperWrapperFactory;

public RefactorRemoveParametersCommand(VBE ide, IRubberduckParser parser, IActiveCodePaneEditor editor, ICodePaneWrapperFactory wrapperWrapperFactory)
: base (ide, parser, editor)
{
_wrapperWrapperFactory = wrapperWrapperFactory;
}

public override void Execute(object parameter)
{
if (_ide.ActiveCodePane == null)
{
return;
}
var codePane = _wrapperWrapperFactory.Create(_ide.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, _ide.ActiveVBProject);

using (var view = new RemoveParametersDialog())
{
var factory = new RemoveParametersPresenterFactory(_editor, view, result, new MessageBox());
var refactoring = new RemoveParametersRefactoring(factory, _editor);
refactoring.Refactor(selection);
}
}
}
}
38 changes: 3 additions & 35 deletions RetailCoder.VBE/UI/RefactorMenu.cs
Expand Up @@ -9,12 +9,12 @@
using Rubberduck.Parsing;
using Rubberduck.Parsing.Symbols;
using Rubberduck.Properties;
using Rubberduck.Refactorings.ExtractMethod;
using Rubberduck.Refactorings.Rename;
using Rubberduck.Refactorings.ReorderParameters;
using Rubberduck.Refactorings.RemoveParameters;
using Rubberduck.UI.FindSymbol;
using Rubberduck.UI.Refactorings;
using Rubberduck.UI.Command.Refactorings;
using Rubberduck.VBEditor;
using Rubberduck.VBEditor.VBEInterfaces.RubberduckCodePane;

Expand Down Expand Up @@ -190,19 +190,7 @@ private void FindAllImplementationsContextMenu_Click(CommandBarButton Ctrl, ref
[SuppressMessage("ReSharper", "InconsistentNaming")]
private void OnExtractMethodButtonClick(CommandBarButton Ctrl, ref bool CancelDefault)
{
ExtractMethod();
}

private void ExtractMethod()
{
var progress = new ParsingProgressPresenter();
var result = progress.Parse(_parser, IDE.ActiveVBProject);

var declarations = result.Declarations;
var factory = new ExtractMethodPresenterFactory(_editor, declarations);
var refactoring = new ExtractMethodRefactoring(factory, _editor);
refactoring.InvalidSelection += refactoring_InvalidSelection;
refactoring.Refactor();
new RefactorExtractMethodCommand(IDE, _parser, _editor).Execute(null);
}

void refactoring_InvalidSelection(object sender, EventArgs e)
Expand Down Expand Up @@ -236,14 +224,7 @@ private void OnReorderParametersButtonClick(CommandBarButton Ctrl, ref bool Canc
[SuppressMessage("ReSharper", "InconsistentNaming")]
private void OnRemoveParameterButtonClick(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);
RemoveParameter(selection);
new RefactorRemoveParametersCommand(IDE, _parser, _editor,_wrapperWrapperFactory).Execute(null)
}

public void Rename()
Expand Down Expand Up @@ -285,19 +266,6 @@ private void ReorderParameters(QualifiedSelection selection)
}
}

private void RemoveParameter(QualifiedSelection selection)
{
var progress = new ParsingProgressPresenter();
var result = progress.Parse(_parser, IDE.ActiveVBProject);

using (var view = new RemoveParametersDialog())
{
var factory = new RemoveParametersPresenterFactory(_editor, view, result, new MessageBox());
var refactoring = new RemoveParametersRefactoring(factory, _editor);
refactoring.Refactor(selection);
}
}

bool _disposed;
private CommandBarPopup _menu;

Expand Down

0 comments on commit 49ae393

Please sign in to comment.