Skip to content

Commit 201125c

Browse files
committed
ref. #2464
1 parent b39441e commit 201125c

File tree

1 file changed

+58
-158
lines changed

1 file changed

+58
-158
lines changed

Rubberduck.Parsing/Symbols/FormEventDeclarations.cs

Lines changed: 58 additions & 158 deletions
Original file line numberDiff line numberDiff line change
@@ -26,169 +26,69 @@ public IReadOnlyList<Declaration> Load()
2626
return AddHiddenMSFormDeclarations(formsClassModule);
2727
}
2828

29-
private static Declaration FormsClassModuleFromParserState(RubberduckParserState state)
30-
{
31-
return state.AllDeclarations.LastOrDefault(declaration => declaration.DeclarationType == DeclarationType.ClassModule
32-
&& declaration.Scope == "FM20.DLL;MSForms.FormEvents");
33-
}
34-
35-
36-
private IReadOnlyList<Declaration> AddHiddenMSFormDeclarations(Declaration formsClassModule)
37-
{
38-
39-
var userFormActivateEvent = UserFormActivateEvent(formsClassModule);
40-
var userFormDeactivateEvent = UserFormDeactivateEvent(formsClassModule);
41-
var userFormInitializeEvent = UserFormInitializeEvent(formsClassModule);
42-
var userFormQueryCloseEvent = UserFormQueryCloseEvent(formsClassModule);
43-
var userFormQueryCloseEventCancelParameter = UserFormQueryCloseEventCancelParameter(userFormQueryCloseEvent);
44-
var userFormQueryCloseEventCloseModeParameter = UserFormQueryCloseEventCloseModeParameter(userFormQueryCloseEvent);
45-
var userFormResizeEvent = UserFormResizeEvent(formsClassModule);
46-
var userFormTerminateEvent = UserFormTerminateEvent(formsClassModule);
47-
48-
return new List<Declaration>
49-
{
50-
userFormActivateEvent,
51-
userFormDeactivateEvent,
52-
userFormInitializeEvent,
53-
userFormQueryCloseEvent,
54-
userFormQueryCloseEventCancelParameter,
55-
userFormQueryCloseEventCloseModeParameter,
56-
userFormResizeEvent,
57-
userFormTerminateEvent
58-
};
59-
}
60-
61-
private static Declaration UserFormActivateEvent(Declaration formsClassModule)
62-
{
63-
return new Declaration(
64-
new QualifiedMemberName(
65-
new QualifiedModuleName("MSForms", "C:\\WINDOWS\\system32\\FM20.DLL", "FormEvents"), "Activate"),
66-
formsClassModule,
67-
"FM20.DLL;MSForms.FormEvents",
68-
string.Empty,
69-
string.Empty,
70-
false,
71-
false,
72-
Accessibility.Global,
73-
DeclarationType.Event,
74-
false,
75-
null);
76-
}
77-
78-
private static Declaration UserFormDeactivateEvent(Declaration formsClassModule)
79-
{
80-
return new Declaration(
81-
new QualifiedMemberName(
82-
new QualifiedModuleName("MSForms", "C:\\WINDOWS\\system32\\FM20.DLL", "FormEvents"), "Deactivate"),
83-
formsClassModule,
84-
"FM20.DLL;MSForms.FormEvents",
85-
string.Empty,
86-
string.Empty,
87-
false,
88-
false,
89-
Accessibility.Global,
90-
DeclarationType.Event,
91-
false,
92-
null);
93-
}
94-
95-
private static Declaration UserFormInitializeEvent(Declaration formsClassModule)
96-
{
97-
return new Declaration(
98-
new QualifiedMemberName(
99-
new QualifiedModuleName("MSForms", "C:\\WINDOWS\\system32\\FM20.DLL", "FormEvents"), "Initialize"),
100-
formsClassModule,
101-
"FM20.DLL;MSForms.FormEvents",
102-
string.Empty,
103-
string.Empty,
104-
false,
105-
false,
106-
Accessibility.Global,
107-
DeclarationType.Event,
108-
false,
109-
null);
110-
}
29+
private static Declaration FormsClassModuleFromParserState(RubberduckParserState state)
30+
{
31+
var result = state.AllDeclarations.LastOrDefault(declaration =>
32+
declaration.DeclarationType == DeclarationType.ClassModule
33+
&& declaration.ProjectName == "MSForms"
34+
&& declaration.IdentifierName == "FormEvents");
11135

112-
private static Declaration UserFormQueryCloseEvent(Declaration formsClassModule)
113-
{
114-
return new Declaration(
115-
new QualifiedMemberName(
116-
new QualifiedModuleName("MSForms", "C:\\WINDOWS\\system32\\FM20.DLL", "FormEvents"), "QueryClose"),
117-
formsClassModule,
118-
"FM20.DLL;MSForms.FormEvents",
119-
string.Empty,
120-
string.Empty,
121-
false,
122-
false,
123-
Accessibility.Global,
124-
DeclarationType.Event,
125-
false,
126-
null);
127-
}
36+
return result;
37+
}
12838

129-
private static ParameterDeclaration UserFormQueryCloseEventCancelParameter(Declaration userFormQueryCloseEvent)
130-
{
131-
return new ParameterDeclaration(
132-
new QualifiedMemberName(
133-
new QualifiedModuleName("MSForms", "C:\\WINDOWS\\system32\\FM20.DLL", "FormEvents"), "Cancel"),
134-
userFormQueryCloseEvent,
135-
null,
136-
new Selection(),
137-
"Integer",
138-
null,
139-
string.Empty,
140-
false,
141-
true);
142-
}
39+
private IReadOnlyList<Declaration> AddHiddenMSFormDeclarations(Declaration formsClassModule)
40+
{
14341

144-
private static ParameterDeclaration UserFormQueryCloseEventCloseModeParameter(Declaration userFormQueryCloseEvent)
145-
{
146-
return new ParameterDeclaration(
147-
new QualifiedMemberName(
148-
new QualifiedModuleName("MSForms", "C:\\WINDOWS\\system32\\FM20.DLL", "FormEvents"), "CloseMode"),
149-
userFormQueryCloseEvent,
150-
null,
151-
new Selection(),
152-
"Integer",
153-
null,
154-
string.Empty,
155-
false,
156-
true);
157-
}
42+
var userFormActivateEvent = CreateDeclaration(formsClassModule, "Activate");
43+
var userFormDeactivateEvent = CreateDeclaration(formsClassModule, "Deactivate");
44+
var userFormInitializeEvent = CreateDeclaration(formsClassModule, "Initialize");
45+
var userFormQueryCloseEvent = CreateDeclaration(formsClassModule, "QueryClose");
46+
var userFormQueryCloseEventCancelParameter = CreateParameter(userFormQueryCloseEvent, "Cancel", "Integer", true);
47+
var userFormQueryCloseEventCloseModeParameter = CreateParameter(userFormQueryCloseEvent, "CloseMode", "Integer", true);
48+
var userFormResizeEvent = CreateDeclaration(formsClassModule, "Resize");
49+
var userFormTerminateEvent = CreateDeclaration(formsClassModule, "Terminate");
15850

159-
private static Declaration UserFormResizeEvent(Declaration formsClassModule)
160-
{
161-
return new Declaration(
162-
new QualifiedMemberName(
163-
new QualifiedModuleName("MSForms", "C:\\WINDOWS\\system32\\FM20.DLL", "FormEvents"), "Resize"),
164-
formsClassModule,
165-
"FM20.DLL;MSForms.FormEvents",
166-
string.Empty,
167-
string.Empty,
168-
false,
169-
false,
170-
Accessibility.Global,
171-
DeclarationType.Event,
172-
false,
173-
null);
174-
}
51+
return new List<Declaration>
52+
{
53+
userFormActivateEvent,
54+
userFormDeactivateEvent,
55+
userFormInitializeEvent,
56+
userFormQueryCloseEvent,
57+
userFormQueryCloseEventCancelParameter,
58+
userFormQueryCloseEventCloseModeParameter,
59+
userFormResizeEvent,
60+
userFormTerminateEvent
61+
};
62+
}
17563

176-
private static Declaration UserFormTerminateEvent(Declaration formsClassModule)
177-
{
178-
return new Declaration(
179-
new QualifiedMemberName(
180-
new QualifiedModuleName("MSForms", "C:\\WINDOWS\\system32\\FM20.DLL", "FormEvents"), "Terminate"),
181-
formsClassModule,
182-
"FM20.DLL;MSForms.FormEvents",
183-
string.Empty,
184-
string.Empty,
185-
false,
186-
false,
187-
Accessibility.Global,
188-
DeclarationType.Event,
189-
false,
190-
null);
191-
}
64+
private static Declaration CreateDeclaration(Declaration parent, string name)
65+
{
66+
return new Declaration(
67+
new QualifiedMemberName(parent.QualifiedName.QualifiedModuleName, name),
68+
parent,
69+
parent.Scope,
70+
string.Empty,
71+
string.Empty,
72+
false,
73+
false,
74+
Accessibility.Global,
75+
DeclarationType.Event,
76+
false,
77+
null);
78+
}
19279

80+
private static ParameterDeclaration CreateParameter(Declaration parent, string name, string asType, bool isByRef = false, bool isOptional = false)
81+
{
82+
return new ParameterDeclaration(
83+
new QualifiedMemberName(parent.ParentDeclaration.QualifiedName.QualifiedModuleName, name),
84+
parent,
85+
null,
86+
Selection.Empty,
87+
asType,
88+
null,
89+
string.Empty,
90+
isOptional,
91+
isByRef);
92+
}
19393
}
19494
}

0 commit comments

Comments
 (0)