-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCommandMenu.cs
More file actions
47 lines (41 loc) · 1.25 KB
/
Copy pathCommandMenu.cs
File metadata and controls
47 lines (41 loc) · 1.25 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
using System.Collections.Generic;
using System.Linq;
using System.Xml.Serialization;
namespace CnSharp.VisualStudio.Extensions.Commands
{
[XmlRoot("menu")]
public class CommandMenu : CommandControl
{
private List<CommandMenu> _subMenus = new List<CommandMenu>();
[XmlElement("menu")]
public List<CommandMenu> SubMenus
{
get
{
if (_subMenus.Count == 0 && !string.IsNullOrEmpty(SubGeneratorType))
{
LoadSubMenus();
}
return _subMenus;
}
set => _subMenus = value;
}
[XmlAttribute("sgt")]
public string SubGeneratorType { get; set; }
public virtual IEnumerable<CommandMenu> GenerateSubMenus()
{
if (string.IsNullOrWhiteSpace(SubGeneratorType))
return null;
var gen = LoadInstance(SubGeneratorType) as ICommandMenuGenerator;
if (gen == null)
return null;
return gen.Generate();
}
public virtual void LoadSubMenus()
{
if (GenerateSubMenus() == null)
return;
_subMenus = GenerateSubMenus().ToList();
}
}
}