Skip to content

Commit f552954

Browse files
committed
Add preview
1 parent f5b5175 commit f552954

File tree

2 files changed

+97
-1
lines changed

2 files changed

+97
-1
lines changed

RetailCoder.VBE/UI/Refactorings/ReorderParameters/ReorderParametersView.xaml.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,11 +98,13 @@ private void ParameterGrid_Drop(object sender, DragEventArgs e)
9898
if (index >= 0)
9999
{
100100
ViewModel.Parameters.Move(ViewModel.Parameters.IndexOf(parameter), index);
101+
ViewModel.UpdatePreview();
101102
}
102103
}
103104
else
104105
{
105106
ViewModel.Parameters.Move(ViewModel.Parameters.IndexOf(parameter), ViewModel.Parameters.Count - 1);
107+
ViewModel.UpdatePreview();
106108
}
107109
}
108110
}

RetailCoder.VBE/UI/Refactorings/ReorderParameters/ReorderParametersViewModel.cs

Lines changed: 95 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
using System;
22
using System.Collections.ObjectModel;
3+
using System.Linq;
34
using System.Windows.Forms;
45
using NLog;
6+
using Rubberduck.Parsing.Symbols;
57
using Rubberduck.Parsing.VBA;
68
using Rubberduck.Refactorings.ReorderParameters;
79
using Rubberduck.UI.Command;
@@ -33,10 +35,100 @@ public string SignaturePreview
3335
return string.Empty;
3436
}
3537

36-
return string.Empty;
38+
var member = Parameters[0].Declaration.ParentDeclaration;
39+
40+
if (member.DeclarationType.HasFlag(DeclarationType.Property))
41+
{
42+
var declarations = State.AllUserDeclarations;
43+
44+
var getter = declarations.FirstOrDefault(item => item.Scope == member.Scope &&
45+
item.IdentifierName == member.IdentifierName &&
46+
item.DeclarationType == DeclarationType.PropertyGet);
47+
48+
var letter = declarations.FirstOrDefault(item => item.Scope == member.Scope &&
49+
item.IdentifierName == member.IdentifierName &&
50+
item.DeclarationType == DeclarationType.PropertyLet);
51+
52+
var setter = declarations.FirstOrDefault(item => item.Scope == member.Scope &&
53+
item.IdentifierName == member.IdentifierName &&
54+
item.DeclarationType == DeclarationType.PropertySet);
55+
56+
var signature = string.Empty;
57+
if (getter != null) { signature += GetSignature((PropertyGetDeclaration)getter); }
58+
if (letter != null)
59+
{
60+
if (!string.IsNullOrEmpty(signature)) { signature += Environment.NewLine; }
61+
signature += GetSignature((PropertyLetDeclaration)letter);
62+
}
63+
if (setter != null)
64+
{
65+
if (!string.IsNullOrEmpty(signature)) { signature += Environment.NewLine; }
66+
signature += GetSignature((PropertySetDeclaration)setter);
67+
}
68+
69+
return signature;
70+
}
71+
72+
return GetSignature((dynamic)member);
3773
}
3874
}
3975

76+
private string GetSignature(SubroutineDeclaration member)
77+
{
78+
var signature = member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString();
79+
signature += " Sub " + member.IdentifierName + "(";
80+
81+
var selectedParams = Parameters.Select(s => s.Name);
82+
return signature + string.Join(", ", selectedParams) + ")";
83+
}
84+
85+
private string GetSignature(FunctionDeclaration member)
86+
{
87+
var signature = member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString();
88+
signature += " Function " + member.IdentifierName + "(";
89+
90+
var selectedParams = Parameters.Select(s => s.Name);
91+
return signature + string.Join(", ", selectedParams) + ") As " + member.AsTypeName;
92+
}
93+
94+
private string GetSignature(EventDeclaration member)
95+
{
96+
var signature = member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString();
97+
signature += " Event " + member.IdentifierName + "(";
98+
99+
var selectedParams = Parameters.Select(s => s.Name);
100+
return signature + string.Join(", ", selectedParams) + ")";
101+
}
102+
103+
private string GetSignature(PropertyGetDeclaration member)
104+
{
105+
var signature = member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString();
106+
signature += " Property Get " + member.IdentifierName + "(";
107+
108+
var selectedParams = Parameters.Select(s => s.Name);
109+
return signature + string.Join(", ", selectedParams) + ") As " + member.AsTypeName;
110+
}
111+
112+
private string GetSignature(PropertyLetDeclaration member)
113+
{
114+
var signature = member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString();
115+
signature += " Property Let " + member.IdentifierName + "(";
116+
117+
var selectedParams = Parameters.Select(s => s.Name).ToList();
118+
selectedParams.Add(new Parameter((ParameterDeclaration)member.Parameters.Last(), -1).Name);
119+
return signature + string.Join(", ", selectedParams) + ")";
120+
}
121+
122+
private string GetSignature(PropertySetDeclaration member)
123+
{
124+
var signature = member.Accessibility == Accessibility.Implicit ? string.Empty : member.Accessibility.ToString();
125+
signature += " Property Set " + member.IdentifierName + "(";
126+
127+
var selectedParams = Parameters.Select(s => s.Name).ToList();
128+
selectedParams.Add(new Parameter((ParameterDeclaration)member.Parameters.Last(), -1).Name);
129+
return signature + string.Join(", ", selectedParams) + ")";
130+
}
131+
40132
public ReorderParametersViewModel(RubberduckParserState state)
41133
{
42134
State = state;
@@ -46,6 +138,8 @@ public ReorderParametersViewModel(RubberduckParserState state)
46138
MoveParameterDownCommand = new DelegateCommand(LogManager.GetCurrentClassLogger(), param => MoveParameterDown((Parameter)param));
47139
}
48140

141+
public void UpdatePreview() => OnPropertyChanged(nameof(SignaturePreview));
142+
49143
private void MoveParameterUp(Parameter parameter)
50144
{
51145
if (parameter != null)

0 commit comments

Comments
 (0)