static NSMenuItem CreateMenuItem(ContextMenuItem item)
{
if (item.IsSeparator)
{
return(NSMenuItem.SeparatorItem);
}
var menuItem = new NSMenuItem(item.Label, (s, e) => item.Click());
menuItem.Hidden = !item.Visible;
menuItem.Enabled = item.Sensitive;
menuItem.Image = item.Image.ToNSImage();
if (item is RadioButtonContextMenuItem)
{
var radioItem = (RadioButtonContextMenuItem)item;
menuItem.State = radioItem.Checked ? NSCellStateValue.On : NSCellStateValue.Off;
}
else if (item is CheckBoxContextMenuItem)
{
var checkItem = (CheckBoxContextMenuItem)item;
menuItem.State = checkItem.Checked ? NSCellStateValue.On : NSCellStateValue.Off;
}
if (item.SubMenu != null && item.SubMenu.Items.Count > 0)
{
menuItem.Submenu = FromMenu(item.SubMenu);
}
else
{
menuItem.Activated += (sender, e) => item.Click();
}
return(menuItem);
}