forked from killswitch1111/powerguivsx
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathPowerShellProjectNode.cs
More file actions
152 lines (127 loc) · 5.05 KB
/
Copy pathPowerShellProjectNode.cs
File metadata and controls
152 lines (127 loc) · 5.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
using System;
using System.IO;
using System.Linq;
using System.Windows.Forms;
using Microsoft.VisualStudio.Shell.Interop;
using Microsoft.VisualStudioTools.Project;
using PowerShellTools.Classification;
using PowerShellTools.Project.PropertyPages;
namespace PowerShellTools.Project
{
internal class PowerShellProjectNode : CommonProjectNode
{
private readonly CommonProjectPackage _package;
private static readonly ImageList ProjectImageList =
Utilities.GetImageList(
typeof(PowerShellProjectNode).Assembly.GetManifestResourceStream(
"PowerShellTools.Project.Resources.ImageList.bmp"));
private readonly bool _dependenciesResolved;
public PowerShellProjectNode(CommonProjectPackage package, bool dependenciesResolved)
: base(package, ProjectImageList)
{
_dependenciesResolved = dependenciesResolved;
_package = package;
AddCATIDMapping(typeof(DebugPropertyPage), typeof(DebugPropertyPage).GUID);
AddCATIDMapping(typeof(InformationPropertyPage), typeof(InformationPropertyPage).GUID);
AddCATIDMapping(typeof(ComponentsPropertyPage), typeof(ComponentsPropertyPage).GUID);
AddCATIDMapping(typeof(ExportsPropertyPage), typeof(ExportsPropertyPage).GUID);
AddCATIDMapping(typeof(RequirementsPropertyPage), typeof(RequirementsPropertyPage).GUID);
}
public override Type GetProjectFactoryType()
{
return typeof (PowerShellProjectFactory);
}
public override Type GetEditorFactoryType()
{
return typeof(PowerShellEditorFactory);
}
public override string GetProjectName()
{
return "PowerShellProject";
}
public override string GetFormatList()
{
return "PowerShell Project File (*.pssproj)\n*.pssproj\nAll Files (*.*)\n*.*\n";
}
public override Type GetGeneralPropertyPageType()
{
return null;
}
protected override Guid[] GetConfigurationIndependentPropertyPages()
{
return new[] {
typeof(DebugPropertyPage).GUID,
typeof(InformationPropertyPage).GUID,
typeof(ComponentsPropertyPage).GUID,
typeof(ExportsPropertyPage).GUID,
typeof(RequirementsPropertyPage).GUID };
}
public override Type GetLibraryManagerType()
{
return typeof(PowerShellLibraryManager);
}
public override IProjectLauncher GetLauncher()
{
return new PowerShellProjectLauncher(this, _dependenciesResolved);
}
protected override Stream ProjectIconsImageStripStream
{
get
{
return typeof(PowerShellProjectNode).Assembly.GetManifestResourceStream("PowerShellTools.Project.Resources.CommonImageList.bmp");
}
}
public override string[] CodeFileExtensions
{
get
{
return new[] { PowerShellConstants.PS1File, PowerShellConstants.PSD1File, PowerShellConstants.PSM1File };
}
}
public override CommonFileNode CreateCodeFileNode(ProjectElement item)
{
var node = new PowerShellFileNode(this, item);
node.OleServiceProvider.AddService(typeof(SVSMDCodeDomProvider), CreateServices, false);
return node;
}
public override CommonFileNode CreateNonCodeFileNode(ProjectElement item)
{
var node = new PowerShellFileNode(this, item);
node.OleServiceProvider.AddService(typeof(SVSMDCodeDomProvider), CreateServices, false);
return node;
}
public override int ImageIndex
{
get
{
return CommonProjectNode.ImageOffset + (int)ImageListIndex.Project;
}
}
protected override ConfigProvider CreateConfigProvider()
{
return new PowerShellConfigProvider(_package, this);
}
protected override NodeProperties CreatePropertiesObject()
{
return new PowerShellProjectNodeProperties(this);
}
/// <summary>
/// Creates the services exposed by this project.
/// </summary>
protected object CreateServices(Type serviceType)
{
object service = null;
if (typeof(SVSMDCodeDomProvider) == serviceType)
{
service = new PowerShellCodeDomProvider();
}
return service;
}
public override bool IsCodeFile(string fileName)
{
if (String.IsNullOrEmpty(fileName)) return false;
var fi = new FileInfo(fileName);
return CodeFileExtensions.Any(x => x.Equals(fi.Extension, StringComparison.OrdinalIgnoreCase));
}
}
}