-
Notifications
You must be signed in to change notification settings - Fork 820
/
DocumentsContextMenu.cs
58 lines (53 loc) · 2.1 KB
/
DocumentsContextMenu.cs
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
48
49
50
51
52
53
54
55
56
57
58
using System.Collections.Generic;
using System.Linq;
using Caliburn.Micro;
using Raven.Studio.Commands;
using Raven.Studio.Features.Collections;
using Raven.Studio.Features.Documents;
using Raven.Studio.Features.Documents.Resources;
using SL4PopupMenu;
namespace Raven.Studio.Behaviors
{
public class DocumentsContextMenu : ContextMenuBase<DocumentViewModel>
{
public DocumentsContextMenu(IList<DocumentViewModel> selectedItems)
: base(selectedItems)
{
}
protected override void GenerateMenuItems()
{
if (IsInMultiSelectedMode)
{
if (SelectedItem.CollectionType != BuiltinCollectionName.Projection)
{
var deleteDocumentsMenuItem = new PopupMenuItem(null, string.Format(DocumentsResources.DocumentMenu_DeleteDocuments, SelectedItems.Count));
deleteDocumentsMenuItem.Click += (s, ea) => IoC.Get<DeleteDocument>().Execute(SelectedItems.Select(document => document.Id).ToList());
Menu.AddItem(deleteDocumentsMenuItem);
}
}
else
{
var editDocumentMenuItem = new PopupMenuItem(null, DocumentsResources.DocumentMenu_EditDocument);
editDocumentMenuItem.Click += (s, ea) => IoC.Get<EditDocument>().Execute(SelectedItem);
Menu.AddItem(editDocumentMenuItem);
if (SelectedItem.CollectionType == BuiltinCollectionName.Projection)
{
var copyProjectionMenuItem = new PopupMenuItem(null, DocumentsResources.DocumentMenu_CopyProjection);
copyProjectionMenuItem.Click += (s, ea) => IoC.Get<CopyDocumentToClipboard>().Execute(SelectedItem);
Menu.AddItem(copyProjectionMenuItem);
}
else
{
var copyIdMenuItem = new PopupMenuItem(null, DocumentsResources.DocumentMenu_CopyId);
copyIdMenuItem.Click += (s, ea) => IoC.Get<CopyDocumentIdToClipboard>().Execute(SelectedItem.Id);
Menu.AddItem(copyIdMenuItem);
Menu.AddSeparator();
var deleteDocumentMenuItem = new PopupMenuItem(null, DocumentsResources.DocumentMenu_DeleteDocument);
deleteDocumentMenuItem.Click +=
(s, ea) => IoC.Get<DeleteDocument>().Execute(SelectedItems.Select(document => document.Id).ToList());
Menu.AddItem(deleteDocumentMenuItem);
}
}
}
}
}