9
// Copyright (C) 2005 Novell, Inc (http://www.novell.com)
11
// Permission is hereby granted, free of charge, to any person obtaining
12
// a copy of this software and associated documentation files (the
13
// "Software"), to deal in the Software without restriction, including
14
// without limitation the rights to use, copy, modify, merge, publish,
15
// distribute, sublicense, and/or sell copies of the Software, and to
16
// permit persons to whom the Software is furnished to do so, subject to
17
// the following conditions:
19
// The above copyright notice and this permission notice shall be
20
// included in all copies or substantial portions of the Software.
22
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
23
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
24
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
25
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
26
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
27
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
33
using System.Collections;
34
using System.ComponentModel;
35
using MonoDevelop.Components.Commands;
36
using MonoDevelop.Core;
39
namespace MonoDevelop.Components.Commands.ExtensionNodes
41
[ExtensionNode (Description="A submenu")]
42
internal class ItemSetCodon : InstanceExtensionNode
44
[NodeAttribute ("_label", "Label of the submenu", Localizable=true)]
47
[NodeAttribute("icon", "Icon of the submenu. The provided value must be a registered stock icon. A resource icon can also be specified using 'res:' as prefix for the name, for example: 'res:customIcon.png'")]
50
[NodeAttribute("autohide", "Whether the submenu should be hidden when it contains no items.")]
53
public override object CreateInstance ()
55
if (label == null) label = Id;
57
label = StringParserService.Parse (label);
58
if (icon != null) icon = CommandCodon.GetStockId (Addin, icon);
59
CommandEntrySet cset = new CommandEntrySet (label, icon);
61
cset.AutoHide = autohide;
62
foreach (InstanceExtensionNode e in ChildNodes) {
63
CommandEntry ce = e.CreateInstance () as CommandEntry;
67
throw new InvalidOperationException ("Invalid ItemSet child: " + e);