1
1
using System ;
2
2
using System . Collections . ObjectModel ;
3
+ using System . Linq ;
3
4
using System . Windows . Forms ;
4
5
using NLog ;
6
+ using Rubberduck . Parsing . Symbols ;
5
7
using Rubberduck . Parsing . VBA ;
6
8
using Rubberduck . Refactorings . ReorderParameters ;
7
9
using Rubberduck . UI . Command ;
@@ -33,10 +35,100 @@ public string SignaturePreview
33
35
return string . Empty ;
34
36
}
35
37
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 ) ;
37
73
}
38
74
}
39
75
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
+
40
132
public ReorderParametersViewModel ( RubberduckParserState state )
41
133
{
42
134
State = state ;
@@ -46,6 +138,8 @@ public ReorderParametersViewModel(RubberduckParserState state)
46
138
MoveParameterDownCommand = new DelegateCommand ( LogManager . GetCurrentClassLogger ( ) , param => MoveParameterDown ( ( Parameter ) param ) ) ;
47
139
}
48
140
141
+ public void UpdatePreview ( ) => OnPropertyChanged ( nameof ( SignaturePreview ) ) ;
142
+
49
143
private void MoveParameterUp ( Parameter parameter )
50
144
{
51
145
if ( parameter != null )
0 commit comments