public TitleMenuItem (MonoDevelop.Components.Commands.CommandManager manager, CommandEntry entry, CommandInfo commandArrayInfo = null, CommandSource commandSource = CommandSource.MainMenu, object initialCommandTarget = null, Menu menu = null) { this.manager = manager; this.initialCommandTarget = initialCommandTarget; this.commandSource = commandSource; this.commandArrayInfo = commandArrayInfo; this.menu = menu; menuEntry = entry; menuEntrySet = entry as CommandEntrySet; menuLinkEntry = entry as LinkCommandEntry; if (commandArrayInfo != null) { Header = commandArrayInfo.Text; var commandArrayInfoSet = commandArrayInfo as CommandInfoSet; if (commandArrayInfoSet != null) { foreach (var item in commandArrayInfoSet.CommandInfos) { if (item.IsArraySeparator) Items.Add (new Separator { UseLayoutRounding = true, }); else Items.Add (new TitleMenuItem (manager, entry, item, commandSource, initialCommandTarget, menu)); } } } if (menuEntrySet != null) { Header = menuEntrySet.Name; foreach (CommandEntry item in menuEntrySet) { if (item.CommandId == MonoDevelop.Components.Commands.Command.Separator) { Items.Add (new Separator { UseLayoutRounding = true, }); } else Items.Add (new TitleMenuItem (manager, item, menu: menu)); } } else if (menuLinkEntry != null) { Header = menuLinkEntry.Text; Click += OnMenuLinkClicked; } else if (entry != null) { actionCommand = manager.GetCommand (menuEntry.CommandId) as ActionCommand; if (actionCommand == null) return; IsCheckable = actionCommand.ActionType == ActionType.Check; // FIXME: Use proper keybinding text. if (actionCommand.KeyBinding != null) InputGestureText = actionCommand.KeyBinding.ToString (); if (!actionCommand.Icon.IsNull) Icon = new Image { Source = actionCommand.Icon.GetImageSource (Xwt.IconSize.Small) }; Click += OnMenuClicked; } Height = SystemParameters.CaptionHeight; UseLayoutRounding = true; }