Datei: NDOPackage/Commands/AddPersistentClass.cs

Last Commit (946ad0e)
1 using Microsoft.VisualStudio;
2 using Microsoft.VisualStudio.Shell.Interop;
 
3 using Project = EnvDTE.Project;
 
 
 
 
4
5 namespace NDOVsPackage.Commands
6 {
7 ····[Command(PackageGuids.guidNDOPackageCmdSetString, PackageIds.cmdidAddClass)]
8 ····internal sealed class AddPersistentClass : BaseCommand<AddPersistentClass>
 
 
9 ····{
10 protected override async Task ExecuteAsync( OleMenuCmdEventArgs e)
11 ········{
 
12 ············await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
13 System. Array solObjects = ( Array) this. VisualStudioApplication. ActiveSolutionProjects;
14 ············if (solObjects.Length < 1)
15 ················return;
16
17 ············Project project = (Project) solObjects.GetValue( 0 );
18
19 if ( !( CodeGenHelper. IsCsOrVbProject( project) ) )
20 ················return;
21
22 ············PersistentClassDialog pcd = new PersistentClassDialog();
23 ············pcd.ShowDialog();
24 ············if (pcd.Result == DialogResult.Cancel)
25 ················return;
26
27 SelectedItems selItems = VisualStudioApplication. SelectedItems;
28 ············ProjectItem parentItem = null;
29 ············if (selItems.Count == 1)
30 ············{
31 ················IEnumerator ienum = selItems.GetEnumerator();
32 ················ienum.MoveNext();
33 ················SelectedItem si = (SelectedItem) ienum.Current;
34 ················if (si.ProjectItem != null && si.ProjectItem.Kind == "{6BB5F8EF-4483-11D3-8BCF-00C04F8EC28C}") // Folder
35 ····················parentItem = si.ProjectItem;
36 ············}
37
38 ············if (CodeGenHelper.IsVbProject( project ))
39 ················new AddPersistentClassVb( project, pcd.ClassName, pcd.Serializable, parentItem ).DoIt();
40 ············else if (CodeGenHelper.IsCsProject( project ))
41 ················new AddPersistentClassCs( project, pcd.ClassName, pcd.Serializable, parentItem ).DoIt();
42 ········}
43 ············catch (Exception ex)
44 ············{
45 Debug. WriteLine( ex. ToString( ) ) ;
46 MessageBox. Show( ex. Message, "Configure" ) ;
47 ············}
48 }
49
50 ········protected override void BeforeQueryStatus(EventArgs e)
51 ········{
52 ············ThreadHelper.JoinableTaskFactory.Run(async () =>
53 ············{
54 ················var project = await VS.Solutions.GetActiveProjectAsync();
55 ················await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
56 ················var enabled = CodeGenHelper.IsCsOrVbProject(project);
57 ················Command.Enabled = enabled;
58 ············});
59 ········}
60 ····}
61 }
62
New Commit (33e9857)
1 using Microsoft.VisualStudio;
2 using Microsoft.VisualStudio.Shell.Interop;
3 using System.Diagnostics;
4 using Project = EnvDTE.Project;
5 using MessageBox = System.Windows.Forms.MessageBox;
6 using System.Windows.Forms;
7 using EnvDTE;
8 using System.Collections;
9
10 namespace NDOVsPackage.Commands
11 {
12 ····[Command(PackageGuids.guidNDOPackageCmdSetString, PackageIds.cmdidAddClass)]
13 ····internal sealed class AddPersistentClass : BaseCommand<AddPersistentClass>
14 ····{
15 ········protected override async Task ExecuteAsync( OleMenuCmdEventArgs e )
16 ········{
17 try
18 ············{
19
20 ················await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
21 System. Array solObjects = ( Array) ApplicationObject. VisualStudioApplication. ActiveSolutionProjects;
22 ················if (solObjects.Length < 1)
23 ····················return;
24
25 ················Project project = (Project) solObjects.GetValue( 0 );
26
27 if ( !( CodeGenHelper. IsCsOrVbProject( project ) ) )
28 ····················return;
29
30 ················PersistentClassDialog pcd = new PersistentClassDialog();
31 ················pcd.ShowDialog();
32 ················if (pcd.Result == DialogResult.Cancel)
33 ····················return;
34
35 SelectedItems selItems = ApplicationObject. VisualStudioApplication. SelectedItems;
36 ················ProjectItem parentItem = null;
37 ················if (selItems.Count == 1)
38 ················{
39 ····················IEnumerator ienum = selItems.GetEnumerator();
40 ····················ienum.MoveNext();
41 ····················SelectedItem si = (SelectedItem) ienum.Current;
42 ····················if (si.ProjectItem != null && si.ProjectItem.Kind == "{6BB5F8EF-4483-11D3-8BCF-00C04F8EC28C}") // Folder
43 ························parentItem = si.ProjectItem;
44 ················}
45
46 ················if (CodeGenHelper.IsVbProject( project ))
47 ····················new AddPersistentClassVb( project, pcd.ClassName, pcd.Serializable, parentItem ).DoIt();
48 ················else if (CodeGenHelper.IsCsProject( project ))
49 ····················new AddPersistentClassCs( project, pcd.ClassName, pcd.Serializable, parentItem ).DoIt();
50 ············}
51 ············catch (Exception ex)
52 ············{
53 Debug. WriteLine( ex. ToString( ) ) ;
54 MessageBox. Show( ex. Message, "AddPersistentClass" ) ;
55 ············}
56 ········}
57
58 ········protected override void BeforeQueryStatus(EventArgs e)
59 ········{
60 ············ThreadHelper.JoinableTaskFactory.Run(async () =>
61 ············{
62 ················var project = await VS.Solutions.GetActiveProjectAsync();
63 ················await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();
64 ················var enabled = CodeGenHelper.IsCsOrVbProject(project);
65 ················Command.Enabled = enabled;
66 ············});
67 ········}
68 ····}
69 }
70