1
1
using System . Linq ;
2
2
using System . Runtime . InteropServices ;
3
+ using Rubberduck . Parsing . Grammar ;
3
4
using Rubberduck . Parsing . Symbols ;
4
5
using Rubberduck . Parsing . VBA ;
5
6
using Rubberduck . Refactorings . Rename ;
@@ -24,7 +25,8 @@ public FormDesignerRefactorRenameCommand(IVBE vbe, RubberduckParserState state,
24
25
25
26
protected override bool EvaluateCanExecute ( object parameter )
26
27
{
27
- return _state . Status == ParserState . Ready && GetTarget ( ) != null ;
28
+ return ( _state ? . Status ?? ParserState . None ) == ParserState . Ready
29
+ && GetTarget ( ) != null ;
28
30
}
29
31
30
32
protected override void OnExecute ( object parameter )
@@ -45,35 +47,36 @@ protected override void OnExecute(object parameter)
45
47
46
48
private Declaration GetTarget ( QualifiedModuleName ? qualifiedModuleName = null )
47
49
{
48
- var projectId = qualifiedModuleName . HasValue
49
- ? qualifiedModuleName . Value . ProjectId
50
- : Vbe . ActiveVBProject . ProjectId ;
51
-
52
- var component = qualifiedModuleName . HasValue
53
- ? qualifiedModuleName . Value . Component
54
- : Vbe . SelectedVBComponent ;
50
+ ( var projectId , var component ) =
51
+ qualifiedModuleName . HasValue
52
+ ? ( qualifiedModuleName . Value . ProjectId , qualifiedModuleName . Value . Component )
53
+ : ( Vbe . ActiveVBProject . ProjectId , Vbe . SelectedVBComponent ) ;
55
54
56
55
if ( component ? . HasDesigner ?? false )
57
56
{
58
57
if ( qualifiedModuleName . HasValue )
59
58
{
60
- return _state . DeclarationFinder . MatchName ( qualifiedModuleName . Value . Name )
61
- . SingleOrDefault ( m => m . ProjectId == projectId
62
- && m . DeclarationType . HasFlag ( qualifiedModuleName . Value . ComponentType )
63
- && m . ComponentName == component . Name ) ;
59
+ return _state . DeclarationFinder
60
+ . MatchName ( qualifiedModuleName . Value . Name )
61
+ . SingleOrDefault ( m => m . ProjectId == projectId
62
+ && m . DeclarationType . HasFlag ( qualifiedModuleName . Value . ComponentType )
63
+ && m . ComponentName == component . Name ) ;
64
64
}
65
65
66
66
var selectedCount = component . SelectedControls . Count ;
67
67
if ( selectedCount > 1 ) { return null ; }
68
68
69
69
// Cannot use DeclarationType.UserForm, parser only assigns UserForms the ClassModule flag
70
- var selectedType = selectedCount == 0 ? DeclarationType . ClassModule : DeclarationType . Control ;
71
- var selectedName = selectedCount == 0 ? component . Name : component . SelectedControls [ 0 ] . Name ;
70
+ ( var selectedType , var selectedName ) =
71
+ selectedCount == 0
72
+ ? ( DeclarationType . ClassModule , component . Name )
73
+ : ( DeclarationType . Control , component . SelectedControls [ 0 ] . Name ) ;
72
74
73
- return _state . DeclarationFinder . MatchName ( selectedName )
74
- . SingleOrDefault ( m => m . ProjectId == projectId
75
- && m . DeclarationType . HasFlag ( selectedType )
76
- && m . ComponentName == component . Name ) ;
75
+ return _state . DeclarationFinder
76
+ . MatchName ( selectedName )
77
+ . SingleOrDefault ( m => m . ProjectId == projectId
78
+ && m . DeclarationType . HasFlag ( selectedType )
79
+ && m . ComponentName == component . Name ) ;
77
80
}
78
81
return null ;
79
82
}
0 commit comments