Skip to content

Commit 45bbda8

Browse files
committed
Merge pull request #686 from Hosch250/next
Refactor certain refactorings
2 parents df427ac + 0e8c546 commit 45bbda8

24 files changed

+368
-523
lines changed

RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersModel.cs

Lines changed: 1 addition & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public RemoveParametersModel(VBProjectParseResult parseResult, QualifiedSelectio
3333

3434
private void AcquireTarget(QualifiedSelection selection)
3535
{
36-
TargetDeclaration = FindTarget(selection, ValidDeclarationTypes);
36+
TargetDeclaration = Declarations.FindSelection(selection, ValidDeclarationTypes);
3737
TargetDeclaration = PromptIfTargetImplementsInterface();
3838
TargetDeclaration = GetGetter();
3939
}
@@ -71,67 +71,6 @@ private IEnumerable<Declaration> GetParameters(Declaration method)
7171
DeclarationType.PropertySet
7272
};
7373

74-
public Declaration FindTarget(QualifiedSelection selection, DeclarationType[] validDeclarationTypes)
75-
{
76-
var target = Declarations.Items
77-
.Where(item => !item.IsBuiltIn)
78-
.FirstOrDefault(item => IsSelectedDeclaration(selection, item)
79-
|| IsSelectedReference(selection, item));
80-
81-
if (target != null && validDeclarationTypes.Contains(target.DeclarationType))
82-
{
83-
return target;
84-
}
85-
86-
target = null;
87-
88-
var targets = Declarations.Items
89-
.Where(item => !item.IsBuiltIn
90-
&& item.ComponentName == selection.QualifiedName.ComponentName
91-
&& validDeclarationTypes.Contains(item.DeclarationType));
92-
93-
var currentSelection = new Selection(0, 0, int.MaxValue, int.MaxValue);
94-
95-
foreach (var declaration in targets)
96-
{
97-
var activeSelection = new Selection(declaration.Context.Start.Line,
98-
declaration.Context.Start.Column,
99-
declaration.Context.Stop.Line,
100-
declaration.Context.Stop.Column);
101-
102-
if (currentSelection.Contains(activeSelection) && activeSelection.Contains(selection.Selection))
103-
{
104-
target = declaration;
105-
currentSelection = activeSelection;
106-
}
107-
108-
foreach (var reference in declaration.References)
109-
{
110-
var proc = (dynamic) reference.Context.Parent;
111-
VBAParser.ArgsCallContext paramList;
112-
113-
// This is to prevent throws when this statement fails:
114-
// (VBAParser.ArgsCallContext)proc.argsCall();
115-
try { paramList = (VBAParser.ArgsCallContext) proc.argsCall(); }
116-
catch { continue; }
117-
118-
if (paramList == null) { continue; }
119-
120-
activeSelection = new Selection(paramList.Start.Line,
121-
paramList.Start.Column,
122-
paramList.Stop.Line,
123-
paramList.Stop.Column + paramList.Stop.Text.Length + 1);
124-
125-
if (currentSelection.Contains(activeSelection) && activeSelection.Contains(selection.Selection))
126-
{
127-
target = reference.Declaration;
128-
currentSelection = activeSelection;
129-
}
130-
}
131-
}
132-
return target;
133-
}
134-
13574
private Declaration PromptIfTargetImplementsInterface()
13675
{
13776
var declaration = TargetDeclaration;
@@ -148,19 +87,6 @@ private Declaration PromptIfTargetImplementsInterface()
14887
return confirm == DialogResult.No ? null : interfaceMember;
14988
}
15089

151-
private bool IsSelectedReference(QualifiedSelection selection, Declaration declaration)
152-
{
153-
return declaration.References.Any(r =>
154-
r.QualifiedModuleName == selection.QualifiedName &&
155-
r.Selection.ContainsFirstCharacter(selection.Selection));
156-
}
157-
158-
private bool IsSelectedDeclaration(QualifiedSelection selection, Declaration declaration)
159-
{
160-
return declaration.QualifiedName.QualifiedModuleName == selection.QualifiedName
161-
&& (declaration.Selection.ContainsFirstCharacter(selection.Selection));
162-
}
163-
16490
private Declaration GetGetter()
16591
{
16692
if (TargetDeclaration.DeclarationType != DeclarationType.PropertyLet &&

RetailCoder.VBE/Refactorings/RemoveParameters/RemoveParametersRefactoring.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ public void Refactor(Declaration target)
5858
public void QuickFix(VBProjectParseResult parseResult, QualifiedSelection selection)
5959
{
6060
_model = new RemoveParametersModel(parseResult, selection);
61-
var target = _model.FindTarget(selection, new[] { DeclarationType.Parameter });
61+
var target = _model.Declarations.FindSelection(selection, new[] { DeclarationType.Parameter });
6262

6363
// ReSharper disable once PossibleUnintendedReferenceComparison
6464
_model.Parameters.Find(param => param.Declaration == target).IsRemoved = true;

RetailCoder.VBE/Refactorings/Rename/RenameModel.cs

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ private void AcquireTarget(out Declaration target, QualifiedSelection selection)
4545
{
4646
target = _declarations.Items
4747
.Where(item => !item.IsBuiltIn && item.DeclarationType != DeclarationType.ModuleOption)
48-
.FirstOrDefault(item => IsSelectedDeclaration(selection, item)
49-
|| IsSelectedReference(selection, item));
48+
.FirstOrDefault(item => item.IsSelectedDeclaration(selection)
49+
|| item.References.Any(r => r.IsSelectedReference(selection)));
5050

5151
PromptIfTargetImplementsInterface(ref target);
5252
}
@@ -72,20 +72,5 @@ public void PromptIfTargetImplementsInterface(ref Declaration target)
7272

7373
target = interfaceMember;
7474
}
75-
76-
private bool IsSelectedReference(QualifiedSelection selection, Declaration declaration)
77-
{
78-
return declaration.References.Any(r =>
79-
r.QualifiedModuleName.Project == selection.QualifiedName.Project
80-
&& r.QualifiedModuleName.ComponentName == selection.QualifiedName.ComponentName
81-
&& r.Selection.ContainsFirstCharacter(selection.Selection));
82-
}
83-
84-
private bool IsSelectedDeclaration(QualifiedSelection selection, Declaration declaration)
85-
{
86-
return declaration.QualifiedName.QualifiedModuleName.Project == selection.QualifiedName.Project
87-
&& declaration.QualifiedName.QualifiedModuleName.ComponentName == selection.QualifiedName.ComponentName
88-
&& (declaration.Selection.ContainsFirstCharacter(selection.Selection));
89-
}
9075
}
9176
}

RetailCoder.VBE/Refactorings/Rename/RenamePresenter.cs

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using System;
1+
using System.Windows.Forms;
22
using Rubberduck.Parsing.Symbols;
33

44
namespace Rubberduck.Refactorings.Rename
@@ -11,19 +11,22 @@ public class RenamePresenter
1111
public RenamePresenter(IRenameView view, RenameModel model)
1212
{
1313
_view = view;
14-
_view.OkButtonClicked += OnViewOkButtonClicked;
1514

1615
_model = model;
1716
}
1817

1918
public RenameModel Show()
2019
{
21-
if (_model.Target != null)
20+
if (_model.Target == null) { return null; }
21+
22+
_view.Target = _model.Target;
23+
24+
if (_view.ShowDialog() != DialogResult.OK)
2225
{
23-
_view.Target = _model.Target;
24-
_view.ShowDialog();
26+
return null;
2527
}
2628

29+
_model.NewName = _view.NewName;
2730
return _model;
2831
}
2932

@@ -32,13 +35,14 @@ public RenameModel Show(Declaration target)
3235
_model.PromptIfTargetImplementsInterface(ref target);
3336
_model.Target = target;
3437
_view.Target = target;
35-
_view.ShowDialog();
36-
return _model;
37-
}
3838

39-
private void OnViewOkButtonClicked(object sender, EventArgs e)
40-
{
39+
if (_view.ShowDialog() != DialogResult.OK)
40+
{
41+
return null;
42+
}
43+
4144
_model.NewName = _view.NewName;
45+
return _model;
4246
}
4347
}
4448
}

RetailCoder.VBE/Refactorings/Rename/RenameRefactoring.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ public void Refactor()
2828
var presenter = _factory.Create();
2929
_model = presenter.Show();
3030

31-
if (_model.Declarations != null)
31+
if (_model != null && _model.Declarations != null)
3232
{
3333
Rename();
3434
}
@@ -44,7 +44,11 @@ public void Refactor(Declaration target)
4444
{
4545
var presenter = _factory.Create();
4646
_model = presenter.Show(target);
47-
Rename();
47+
48+
if (_model != null && _model.Declarations != null)
49+
{
50+
Rename();
51+
}
4852
}
4953

5054
private Declaration AmbiguousId()

RetailCoder.VBE/Refactorings/ReorderParameters/ReorderParametersModel.cs

Lines changed: 1 addition & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public ReorderParametersModel(VBProjectParseResult parseResult, QualifiedSelecti
3434

3535
private void AcquireTaget(QualifiedSelection selection)
3636
{
37-
TargetDeclaration = FindTarget(selection, ValidDeclarationTypes);
37+
TargetDeclaration = Declarations.FindSelection(selection, ValidDeclarationTypes);
3838
TargetDeclaration = PromptIfTargetImplementsInterface();
3939
TargetDeclaration = GetGetter();
4040
}
@@ -63,67 +63,6 @@ private void LoadParameters()
6363
DeclarationType.PropertySet
6464
};
6565

66-
private Declaration FindTarget(QualifiedSelection selection, DeclarationType[] validDeclarationTypes)
67-
{
68-
var target = Declarations.Items
69-
.Where(item => !item.IsBuiltIn)
70-
.FirstOrDefault(item => IsSelectedDeclaration(selection, item)
71-
|| IsSelectedReference(selection, item));
72-
73-
if (target != null && validDeclarationTypes.Contains(target.DeclarationType))
74-
{
75-
return target;
76-
}
77-
78-
target = null;
79-
80-
var targets = Declarations.Items
81-
.Where(item => !item.IsBuiltIn
82-
&& item.ComponentName == selection.QualifiedName.ComponentName
83-
&& validDeclarationTypes.Contains(item.DeclarationType));
84-
85-
var currentSelection = new Selection(0, 0, int.MaxValue, int.MaxValue);
86-
87-
foreach (var declaration in targets)
88-
{
89-
var activeSelection = new Selection(declaration.Context.Start.Line,
90-
declaration.Context.Start.Column,
91-
declaration.Context.Stop.Line,
92-
declaration.Context.Stop.Column);
93-
94-
if (currentSelection.Contains(activeSelection) && activeSelection.Contains(selection.Selection))
95-
{
96-
target = declaration;
97-
currentSelection = activeSelection;
98-
}
99-
100-
foreach (var reference in declaration.References)
101-
{
102-
var proc = (dynamic)reference.Context.Parent;
103-
VBAParser.ArgsCallContext paramList;
104-
105-
// This is to prevent throws when this statement fails:
106-
// (VBAParser.ArgsCallContext)proc.argsCall();
107-
try { paramList = (VBAParser.ArgsCallContext)proc.argsCall(); }
108-
catch { continue; }
109-
110-
if (paramList == null) { continue; }
111-
112-
activeSelection = new Selection(paramList.Start.Line,
113-
paramList.Start.Column,
114-
paramList.Stop.Line,
115-
paramList.Stop.Column + paramList.Stop.Text.Length + 1);
116-
117-
if (currentSelection.Contains(activeSelection) && activeSelection.Contains(selection.Selection))
118-
{
119-
target = reference.Declaration;
120-
currentSelection = activeSelection;
121-
}
122-
}
123-
}
124-
return target;
125-
}
126-
12766
private Declaration PromptIfTargetImplementsInterface()
12867
{
12968
var declaration = TargetDeclaration;
@@ -140,19 +79,6 @@ private Declaration PromptIfTargetImplementsInterface()
14079
return confirm == DialogResult.No ? null : interfaceMember;
14180
}
14281

143-
private bool IsSelectedReference(QualifiedSelection selection, Declaration declaration)
144-
{
145-
return declaration.References.Any(r =>
146-
r.QualifiedModuleName == selection.QualifiedName &&
147-
r.Selection.ContainsFirstCharacter(selection.Selection));
148-
}
149-
150-
private bool IsSelectedDeclaration(QualifiedSelection selection, Declaration declaration)
151-
{
152-
return declaration.QualifiedName.QualifiedModuleName == selection.QualifiedName
153-
&& (declaration.Selection.ContainsFirstCharacter(selection.Selection));
154-
}
155-
15682
private Declaration GetGetter()
15783
{
15884
if (TargetDeclaration.DeclarationType != DeclarationType.PropertyLet &&

RetailCoder.VBE/UI/IDialogView.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,6 @@ namespace Rubberduck.UI
55
{
66
public interface IDialogView : IDisposable
77
{
8-
event EventHandler CancelButtonClicked;
9-
void OnCancelButtonClicked();
10-
11-
event EventHandler OkButtonClicked;
12-
void OnOkButtonClicked();
13-
148
DialogResult ShowDialog();
159
}
1610
}

RetailCoder.VBE/UI/RefactorMenu.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -189,8 +189,8 @@ public void FindAllReferences()
189189
.ToList();
190190

191191
var target = declarations.SingleOrDefault(item =>
192-
IsSelectedDeclaration(selection, item)
193-
|| IsSelectedReference(selection, item));
192+
item.IsSelectedDeclaration(selection)
193+
|| item.References.Any(r => r.IsSelectedReference(selection)));
194194

195195
if (target != null)
196196
{
@@ -370,7 +370,7 @@ private IEnumerable<Declaration> FindAllImplementationsOfMember(Declaration targ
370370
.Where(item => item.IdentifierName == member.ComponentName + "_" + member.IdentifierName);
371371
}
372372

373-
private bool IsSelectedReference(QualifiedSelection selection, Declaration declaration)
373+
/*private bool IsSelectedReference(QualifiedSelection selection, Declaration declaration)
374374
{
375375
return declaration.References.Any(r =>
376376
r.QualifiedModuleName.Project == selection.QualifiedName.Project
@@ -385,7 +385,7 @@ private bool IsSelectedDeclaration(QualifiedSelection selection, Declaration dec
385385
386386
// bug: QualifiedModuleName.Equals doesn't return expected value.
387387
return isSameModule && declaration.Selection.ContainsFirstCharacter(selection.Selection);
388-
}
388+
}*/
389389

390390
[SuppressMessage("ReSharper", "InconsistentNaming")]
391391
private void OnExtractMethodButtonClick(CommandBarButton Ctrl, ref bool CancelDefault)

0 commit comments

Comments
 (0)