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 package info.magnolia.ui.contentapp.action.clipboard;
35
36 import info.magnolia.i18nsystem.SimpleTranslator;
37 import info.magnolia.ui.api.action.AbstractAction;
38 import info.magnolia.ui.api.action.ActionExecutionException;
39 import info.magnolia.ui.ValueContext;
40 import info.magnolia.ui.framework.ContentClipboard;
41 import info.magnolia.ui.framework.ContentClipboardException;
42
43 import java.util.HashSet;
44 import java.util.List;
45 import java.util.stream.Collectors;
46
47 import javax.inject.Inject;
48
49 import com.vaadin.ui.Notification;
50
51
52
53
54 public class CopyContentAction<T> extends AbstractAction<CopyContentActionDefinition> {
55
56 private final ContentClipboard<T> contentClipboard;
57 private final ValueContext<T> valueContext;
58 private final SimpleTranslator simpleTranslator;
59
60 @Inject
61 public CopyContentAction(CopyContentActionDefinition definition, ValueContext<T> valueContext, ContentClipboard<T> contentClipboard, SimpleTranslator simpleTranslator) {
62 super(definition);
63 this.contentClipboard = contentClipboard;
64 this.valueContext = valueContext;
65 this.simpleTranslator = simpleTranslator;
66 }
67
68 @Override
69 public void execute() throws ActionExecutionException {
70 try {
71 List<T> items = valueContext.get().collect(Collectors.toList());
72 contentClipboard.copy(items);
73 Notification.show(simpleTranslator.translate("ui-framework.actions.copyItem.success", items.size(), valueContext.getSingleOrThrow()), Notification.Type.HUMANIZED_MESSAGE);
74 valueContext.set(new HashSet<>(items));
75 } catch (ContentClipboardException e) {
76 throw new ActionExecutionException(simpleTranslator.translate("ui-framework.actions.copyItem.failure"), e);
77 }
78 }
79 }