OLD | NEW |
| (Empty) |
1 /// Copyright (c) Microsoft Corporation. All rights reserved. | |
2 | |
3 using System; | |
4 using Microsoft.VisualStudio; | |
5 using Microsoft.VisualStudio.Shell.Interop; | |
6 using IServiceProvider = System.IServiceProvider; | |
7 | |
8 namespace Microsoft.VisualStudio.Project | |
9 { | |
10 /// <summary> | |
11 /// This class triggers the project events for "our" hierrachies. | |
12 /// </summary> | |
13 internal class SolutionListenerForProjectEvents : SolutionListener, IPro
jectEvents | |
14 { | |
15 #region events | |
16 /// Event raised just after the project file opened. | |
17 /// </summary> | |
18 public event EventHandler<AfterProjectFileOpenedEventArgs> After
ProjectFileOpened; | |
19 | |
20 /// <summary> | |
21 /// Event raised before the project file closed. | |
22 /// </summary> | |
23 public event EventHandler<BeforeProjectFileClosedEventArgs> Befo
reProjectFileClosed; | |
24 #endregion | |
25 | |
26 #region ctor | |
27 internal SolutionListenerForProjectEvents(IServiceProvider servi
ceProvider) | |
28 : base(serviceProvider) | |
29 { | |
30 } | |
31 #endregion | |
32 | |
33 #region overridden methods | |
34 public override int OnAfterOpenProject(IVsHierarchy hierarchy, i
nt added) | |
35 { | |
36 IProjectEventsListener projectEventListener = hierarchy
as IProjectEventsListener; | |
37 if(projectEventListener != null && projectEventListener.
IsProjectEventsListener) | |
38 { | |
39 this.RaiseAfterProjectFileOpened((added != 0) ?
true : false); | |
40 } | |
41 | |
42 return VSConstants.S_OK; | |
43 } | |
44 | |
45 public override int OnBeforeCloseProject(IVsHierarchy hierarchy,
int removed) | |
46 { | |
47 IProjectEventsListener projectEvents = hierarchy as IPro
jectEventsListener; | |
48 if(projectEvents != null && projectEvents.IsProjectEvent
sListener) | |
49 { | |
50 this.RaiseBeforeProjectFileClosed((removed != 0)
? true : false); | |
51 } | |
52 | |
53 return VSConstants.S_OK; | |
54 } | |
55 #endregion | |
56 | |
57 #region helpers | |
58 /// <summary> | |
59 /// Raises after project file opened event. | |
60 /// </summary> | |
61 /// <param name="added">True if the project is added to the solu
tion after the solution is opened. false if the project is added to the solution
while the solution is being opened.</param> | |
62 private void RaiseAfterProjectFileOpened(bool added) | |
63 { | |
64 // Save event in temporary variable to avoid race condit
ion. | |
65 EventHandler<AfterProjectFileOpenedEventArgs> tempEvent
= this.AfterProjectFileOpened; | |
66 if(tempEvent != null) | |
67 { | |
68 tempEvent(this, new AfterProjectFileOpenedEventA
rgs(added)); | |
69 } | |
70 } | |
71 | |
72 | |
73 | |
74 | |
75 /// <summary> | |
76 /// Raises the before project file closed event. | |
77 /// </summary> | |
78 /// <param name="added">true if the project was removed from the
solution before the solution was closed. false if the project was removed from
the solution while the solution was being closed.</param> | |
79 private void RaiseBeforeProjectFileClosed(bool removed) | |
80 { | |
81 // Save event in temporary variable to avoid race condit
ion. | |
82 EventHandler<BeforeProjectFileClosedEventArgs> tempEvent
= this.BeforeProjectFileClosed; | |
83 if(tempEvent != null) | |
84 { | |
85 tempEvent(this, new BeforeProjectFileClosedEvent
Args(removed)); | |
86 } | |
87 } | |
88 } | |
89 #endregion | |
90 } | |
OLD | NEW |