Skip to content

Commit

Permalink
Merge pull request #705 from Hosch250/next
Browse files Browse the repository at this point in the history
Closes issue #698
  • Loading branch information
retailcoder committed Jul 11, 2015
2 parents 38ac435 + b297f89 commit c976b25
Show file tree
Hide file tree
Showing 15 changed files with 332 additions and 55 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ private void RenameProject()

using (var view = new RenameDialog())
{
var factory = new RenamePresenterFactory(vbe, view, _parseResult);
var factory = new RenamePresenterFactory(vbe, view, _parseResult, new RubberduckMessageBox());
var refactoring = new RenameRefactoring(factory);
refactoring.Refactor(Target);
}
Expand Down
7 changes: 5 additions & 2 deletions RetailCoder.VBE/Refactorings/Rename/RenameModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,15 @@ public Declaration Target

public string NewName { get; set; }

public RenameModel(VBE vbe, VBProjectParseResult parseResult, QualifiedSelection selection)
private readonly IMessageBox _messageBox;

public RenameModel(VBE vbe, VBProjectParseResult parseResult, QualifiedSelection selection, IMessageBox messageBox)
{
_vbe = vbe;
_parseResult = parseResult;
_declarations = parseResult.Declarations;
_selection = selection;
_messageBox = messageBox;

AcquireTarget(out _target, Selection);
}
Expand All @@ -63,7 +66,7 @@ public void PromptIfTargetImplementsInterface(ref Declaration target)
var interfaceMember = _declarations.FindInterfaceMember(interfaceImplementation);
var message = string.Format(RubberduckUI.RenamePresenter_TargetIsInterfaceMemberImplementation, target.IdentifierName, interfaceMember.ComponentName, interfaceMember.IdentifierName);

var confirm = MessageBox.Show(message, RubberduckUI.RenameDialog_TitleText, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
var confirm = _messageBox.Show(message, RubberduckUI.RenameDialog_TitleText, MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation);
if (confirm == DialogResult.No)
{
target = null;
Expand Down
7 changes: 5 additions & 2 deletions RetailCoder.VBE/Refactorings/Rename/RenamePresenterFactory.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
using Microsoft.Vbe.Interop;
using Rubberduck.Parsing;
using Rubberduck.UI;
using Rubberduck.VBEditor.Extensions;

namespace Rubberduck.Refactorings.Rename
Expand All @@ -9,17 +10,19 @@ public class RenamePresenterFactory : IRefactoringPresenterFactory<RenamePresent
private readonly VBE _vbe;
private readonly IRenameView _view;
private readonly VBProjectParseResult _parseResult;
private readonly IMessageBox _messageBox;

public RenamePresenterFactory(VBE vbe, IRenameView view, VBProjectParseResult parseResult)
public RenamePresenterFactory(VBE vbe, IRenameView view, VBProjectParseResult parseResult, IMessageBox messageBox)
{
_vbe = vbe;
_view = view;
_parseResult = parseResult;
_messageBox = messageBox;
}

public RenamePresenter Create()
{
return new RenamePresenter(_view, new RenameModel(_vbe, _parseResult, _vbe.ActiveCodePane.GetSelection()));
return new RenamePresenter(_view, new RenameModel(_vbe, _parseResult, _vbe.ActiveCodePane.GetSelection(), _messageBox));
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -178,9 +178,11 @@ private async void Refresh()
await Task.Run(() => RefreshAsync(token), token);
if (_results != null)
{
Control.SetContent(_results.Select(item => new CodeInspectionResultGridViewItem(item))
.OrderBy(item => item.Component)
.ThenBy(item => item.Line));
var results = _results.Select(item => new CodeInspectionResultGridViewItem(item));

Control.SetContent(new BindingList<CodeInspectionResultGridViewItem>(
_gridViewSort.Sort(results, _gridViewSort.ColumnName,
_gridViewSort.SortedAscending).ToList()));
}
}
catch (TaskCanceledException)
Expand Down
2 changes: 1 addition & 1 deletion RetailCoder.VBE/UI/FormContextMenu.cs
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ private void Rename()

using (var view = new RenameDialog())
{
var factory = new RenamePresenterFactory(_vbe, view, result);
var factory = new RenamePresenterFactory(_vbe, view, result, new RubberduckMessageBox());
var refactoring = new RenameRefactoring(factory);
refactoring.Refactor(controlToRename);
}
Expand Down
26 changes: 18 additions & 8 deletions RetailCoder.VBE/UI/GridViewSort.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,28 +5,38 @@ namespace Rubberduck.UI
{
public class GridViewSort<T>
{
private bool _sortedAscending;
private string _columnName;
public bool SortedAscending { get; private set; }
public string ColumnName { get; private set; }

public GridViewSort(string columnName, bool sortedAscending)
{
_columnName = columnName;
_sortedAscending = sortedAscending;
ColumnName = columnName;
SortedAscending = sortedAscending;
}

public IEnumerable<T> Sort(IEnumerable<T> items, string columnName)
{
if (columnName == _columnName && _sortedAscending)
if (columnName == ColumnName && SortedAscending)
{
_sortedAscending = false;
SortedAscending = false;
return items.OrderByDescending(x => x.GetType().GetProperty(columnName).GetValue(x));
}
else
{
_columnName = columnName;
_sortedAscending = true;
ColumnName = columnName;
SortedAscending = true;
return items.OrderBy(x => x.GetType().GetProperty(columnName).GetValue(x));
}
}

public IEnumerable<T> Sort(IEnumerable<T> items, string columnName, bool sortAscending)
{
SortedAscending = sortAscending;
ColumnName = columnName;

return sortAscending
? items.OrderBy(x => x.GetType().GetProperty(columnName).GetValue(x))
: items.OrderByDescending(x => x.GetType().GetProperty(columnName).GetValue(x));
}
}
}
2 changes: 1 addition & 1 deletion RetailCoder.VBE/UI/ProjectExplorerContextMenu.cs
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@ private void Rename_Click(CommandBarButton Ctrl, ref bool CancelDefault)

using (var view = new RenameDialog())
{
var factory = new RenamePresenterFactory(_vbe, view, results);
var factory = new RenamePresenterFactory(_vbe, view, results, new RubberduckMessageBox());
var refactoring = new RenameRefactoring(factory);
refactoring.Refactor(declaration);
}
Expand Down
4 changes: 2 additions & 2 deletions RetailCoder.VBE/UI/RefactorMenu.cs
Original file line number Diff line number Diff line change
Expand Up @@ -434,7 +434,7 @@ public void Rename()

using (var view = new RenameDialog())
{
var factory = new RenamePresenterFactory(IDE, view, result);
var factory = new RenamePresenterFactory(IDE, view, result, new RubberduckMessageBox());
var refactoring = new RenameRefactoring(factory);
refactoring.Refactor();
}
Expand All @@ -447,7 +447,7 @@ public void Rename(Declaration target)

using (var view = new RenameDialog())
{
var factory = new RenamePresenterFactory(IDE, view, result);
var factory = new RenamePresenterFactory(IDE, view, result, new RubberduckMessageBox());
var refactoring = new RenameRefactoring(factory);
refactoring.Refactor(target);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ public async void Refresh()
try
{
Cursor.Current = Cursors.WaitCursor;
_view.TodoItems = await GetItems();
var results = await GetItems();
_view.TodoItems = _gridViewSort.Sort(results, _gridViewSort.ColumnName, _gridViewSort.SortedAscending);
}
finally
{
Expand Down
1 change: 0 additions & 1 deletion RetailCoder.VBE/UI/UnitTesting/ITestExplorerWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ public interface ITestExplorerWindow : IDockableUserControl
event EventHandler OnAddTestModuleButtonClick;
void ClearProgress();
void ClearResults();
void Refresh(IDictionary<TestMethod, TestResult> tests);
void SetPlayList(IEnumerable<TestMethod> tests);
void SetPlayList(IDictionary<TestMethod, TestResult> tests);
event EventHandler OnRefreshListButtonClick;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,11 @@ private void _testEngine_ModuleInitialize(object sender, TestModuleEventArgs e)
private void Synchronize()
{
FindAllTests();
_view.Refresh(_testEngine.AllTests);
var results = new BindingList<TestExplorerItem>(_testEngine.AllTests.Select(test => new TestExplorerItem(test.Key, test.Value)).ToList());
_view.AllTests =
new BindingList<TestExplorerItem>(
_gridViewSort.Sort(results, _gridViewSort.ColumnName,
_gridViewSort.SortedAscending).ToList());
}

public override void Show()
Expand Down
7 changes: 0 additions & 7 deletions RetailCoder.VBE/UI/UnitTesting/TestExplorerWindow.cs
Original file line number Diff line number Diff line change
Expand Up @@ -225,13 +225,6 @@ private TestExplorerItem FindItem(IEnumerable<TestExplorerItem> items, TestMetho
return items.FirstOrDefault(item => item.QualifiedMemberName == test.QualifiedMemberName.ToString());
}

public void Refresh(IDictionary<TestMethod, TestResult> tests)
{
AllTests = new BindingList<TestExplorerItem>(tests.Select(test => new TestExplorerItem(test.Key, test.Value)).ToList());
testOutputGridView.DataSource = AllTests;
testOutputGridView.Refresh();
}

public void SetPlayList(IEnumerable<TestMethod> tests)
{
SetPlayList(tests.ToDictionary(test => test, test => null as TestResult));
Expand Down
2 changes: 1 addition & 1 deletion RubberduckTests/Refactoring/RemoveParametersTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1307,7 +1307,7 @@ public void RemoveParametersRefactoring_LastInterfaceParamsRemoved_AcceptPrompt(
}

[TestMethod]
public void RemoveParametersRefactoring_LastParamRemoved_RejectPrompt()
public void RemoveParametersRefactoring_LastInterfaceParamRemoved_RejectPrompt()
{
//Input
const string inputCode1 =
Expand Down

0 comments on commit c976b25

Please sign in to comment.