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.List;
44 import java.util.stream.Collectors;
45
46 import javax.inject.Inject;
47
48 import com.vaadin.ui.Notification;
49
50
51
52
53 public class CutContentAction<T> extends AbstractAction<CutContentActionDefinition> {
54
55 private final ContentClipboard<T> contentClipboard;
56 private final ValueContext<T> valueContext;
57 private final SimpleTranslator simpleTranslator;
58
59 @Inject
60 public CutContentAction(CutContentActionDefinition definition, ValueContext<T> valueContext, ContentClipboard<T> contentClipboard, SimpleTranslator simpleTranslator) {
61 super(definition);
62 this.contentClipboard = contentClipboard;
63 this.valueContext = valueContext;
64 this.simpleTranslator = simpleTranslator;
65 }
66
67 @Override
68 public void execute() throws ActionExecutionException {
69 try {
70 List<T> items = valueContext.get().collect(Collectors.toList());
71 contentClipboard.cut(items);
72 Notification.show(simpleTranslator.translate("ui-framework.actions.cutItem.success", items.size(), valueContext.getSingleOrThrow()), Notification.Type.HUMANIZED_MESSAGE);
73 } catch (ContentClipboardException e) {
74 throw new ActionExecutionException(simpleTranslator.translate("ui-framework.actions.cutItem.failure"), e);
75 }
76 }
77 }