private Menu BuildPopupMenu()
{
Menu menu = new Menu();
var items = new List<ExtendedItem>();
foreach (var path in _listView.Selection.GetSelectedRows())
{
TreeIter iter;
_listStore.GetIter(out iter, path);
items.Add((ExtendedItem)_listStore.GetValue(iter, 0));
}
if (items.All(i => IsMapped(i.ServerPath)))
{
foreach (var item in GetGroup(items))
{
menu.Add(item);
}
var editGroup = EditGroup(items);
if (editGroup.Any())
{
menu.Add(new SeparatorMenuItem());
foreach (var item in editGroup)
{
menu.Add(item);
}
}
if (items.Count == 1 && items[0].ItemType == ItemType.Folder)
{
menu.Add(CreateAddFileMenuItem(items[0]));
menu.Add(new SeparatorMenuItem());
menu.Add(CreateOpenFolderMenuItem(items[0]));
}
}
else
{
foreach (var item in NotMappedMenu(items))
{
menu.Add(item);
}
}
menu.ShowAll();
return menu;
}